主页 > 其他  > 

“深入浅出”系列之QT:(10)Qt接入Deepseek

“深入浅出”系列之QT:(10)Qt接入Deepseek

项目配置:

在.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 = " 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