“深入浅出”系列之QT:(10)Qt接入Deepseek
- 其他
- 2025-08-28 04:21:02

项目配置:
在.pro文件中添加网络模块:
QT += core networkAPI配置:
将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 = " api.deepseek /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"“深入浅出”系列之QT:(10)Qt接入Deepseek由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处““深入浅出”系列之QT:(10)Qt接入Deepseek”