項目配置:
在.pro文件中添加網絡模塊:
QT += core network
API配置:
-
將apiUrl替換為實際的DeepSeek API端點
-
將apiKey替換為你的有效API密鑰
-
根據API文檔調整請求參數(模型名稱、溫度值等)
功能說明:
-
使用QNetworkAccessManager處理HTTP請求
-
自動處理JSON序列化/反序列化
-
支持異步請求處理
-
包含基本的錯誤處理
擴展建議:
-
添加更完善的錯誤處理(HTTP狀態碼檢查)
-
實現異步回調機制
-
添加請求超時處理
-
支持流式響應(如果API支持)
-
使用環境變量或配置文件管理API密鑰
典型輸出處理:
// 在handleResponse函數中可添加以下處理邏輯:
if (!content.isEmpty()) {
qDebug() << "Received response:";
qDebug().noquote() << content; // 保留原始格式
} else {
qDebug() << "No content in response";
}
代碼舉例:
#include?<QCoreApplication>
#include?<QNetworkAccessManager>
#include?<QNetworkRequest>
#include?<QNetworkReply>
#include?<QJsonDocument>
#include?<QJsonObject>
#include?<QJsonArray>
#include?<QDebug>class?ApiClient?:?public?QObject?{Q_OBJECT
public:explicit?ApiClient(QObject?*parent?=?nullptr)?:?QObject(parent)?{manager?=?new?QNetworkAccessManager(this);connect(manager,?&QNetworkAccessManager::finished,?this,?&ApiClient::handleResponse);}void?sendRequest(const?QString?&prompt)?{//?API配置const?QString?apiUrl?=?"https://api.deepseek.com/v1/chat/completions";const?QString?apiKey?=?"your_api_key_here";?//?請替換為實際API密鑰//?創建請求QNetworkRequest?request;request.setUrl(QUrl(apiUrl));request.setHeader(QNetworkRequest::ContentTypeHeader,?"application/json");request.setRawHeader("Authorization",?QString("Bearer?%1").arg(apiKey).toUtf8());//?構建JSON請求體QJsonObject?requestBody;requestBody["model"]?=?"deepseek-chat";??//?根據實際模型名稱修改requestBody["temperature"]?=?0.7;requestBody["max_tokens"]?=?1000;QJsonArray?messages;QJsonObject?systemMsg;systemMsg["role"]?=?"system";systemMsg["content"]?=?"You?are?a?helpful?assistant.";messages.append(systemMsg);QJsonObject?userMsg;userMsg["role"]?=?"user";userMsg["content"]?=?prompt;messages.append(userMsg);requestBody["messages"]?=?messages;//?發送POST請求manager->post(request,?QJsonDocument(requestBody).toJson());}private?slots:void?handleResponse(QNetworkReply?*reply)?{if?(reply->error())?{qDebug()?<<?"Error:"?<<?reply->errorString();reply->deleteLater();return;}//?解析響應QJsonDocument?response?=?QJsonDocument::fromJson(reply->readAll());QJsonObject?jsonResponse?=?response.object();if?(jsonResponse.contains("choices"))?{QJsonArray?choices?=?jsonResponse["choices"].toArray();if?(!choices.isEmpty())?{QJsonObject?choice?=?choices.first().toObject();QJsonObject?message?=?choice["message"].toObject();QString?content?=?message["content"].toString();qDebug()?<<?"API?Response:"?<<?content;}}?else?{qDebug()?<<?"Error?response:"?<<?response.toJson();}reply->deleteLater();}private:QNetworkAccessManager?*manager;
};//?使用示例
int?main(int?argc,?char?*argv[])?{QCoreApplication?a(argc,?argv);ApiClient?client;client.sendRequest("Explain?quantum?computing?in?simple?terms");return?a.exec();
}#include?"main.moc"