欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > Qt接入deepseekv3 API 提供openssl 1.1.1g安装包

Qt接入deepseekv3 API 提供openssl 1.1.1g安装包

2025/2/21 3:25:52 来源:https://blog.csdn.net/weixin_50873490/article/details/145609329  浏览:    关键词:Qt接入deepseekv3 API 提供openssl 1.1.1g安装包

1.获取api (有免费10元额度)

DeepSeek

记得复制api,避免丢失频繁创建。

2.qt调用https请求

配置网络模块

QT += core gui widgets network

直接上代码

拿到代码替换api,和修正qt组件输入和输出即可。

#ifndef DEEPSEEKCLIENT_H
#define DEEPSEEKCLIENT_H#include <QWidget>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QJsonDocument>
#include <QJsonObject>
#include<QJsonArray>
#include <QSslSocket>namespace Ui {
class DeepSeekClient;
}class DeepSeekClient : public QWidget
{Q_OBJECTpublic:explicit DeepSeekClient(QWidget *parent = nullptr);~DeepSeekClient();void sendRequest(const QString &prompt);void handleResponse(QNetworkReply *reply);signals:void responseReceived(const QString &response);private slots:void on_pushButton_clicked();private:QNetworkAccessManager *manager;QString api_key = "sk-xxxx"; // 替换为你的API Key
private:Ui::DeepSeekClient *ui;
};#endif // DEEPSEEKCLIENT_H
#include "deepseekclient.h"
#include "ui_deepseekclient.h"
#include <QDebug>
#include"log/easylogging++.h"DeepSeekClient::DeepSeekClient(QWidget *parent) :QWidget(parent),ui(new Ui::DeepSeekClient)
{ui->setupUi(this);manager = new QNetworkAccessManager(this);// 设置样式表QString styleSheet = R"(QWidget {background-color: #f5f5f5;font-family: "Microsoft YaHei", Arial;}QTextEdit {background-color: white;border: 1px solid #ddd;border-radius: 8px;padding: 8px;font-size: 14px;}QLineEdit {background-color: white;border: 1px solid #ddd;border-radius: 8px;padding: 4px 12px;font-size: 14px;}QLineEdit:focus {border: 1px solid #4a90e2;}QPushButton {background-color: #4a90e2;color: white;border: none;border-radius: 8px;font-size: 14px;font-weight: bold;}QPushButton:hover {background-color: #357abd;}QPushButton:pressed {background-color: #2a5f96;})";this->setStyleSheet(styleSheet);// 检查SSL支持qDebug() << "SSL Support:" << QSslSocket::supportsSsl();qDebug() << "Build Version:" << QSslSocket::sslLibraryBuildVersionString();qDebug() << "Runtime Version:" << QSslSocket::sslLibraryVersionString();qDebug() << manager->supportedSchemes();
}DeepSeekClient::~DeepSeekClient()
{delete ui;
}///
/// dpseek发送数据
/// \param prompt
///
void DeepSeekClient::sendRequest(const QString &prompt) {// 显示思考状态QString userInput = ui->dpseek_input_edit->text();ui->dpseek_output_edit->append(QString("<div style='margin: 8px 0;'><b style='color: #4a90e2;'>您:</b> %1</div>").arg(userInput));ui->dpseek_output_edit->append(QString("<div style='margin: 8px 0; color: #666;'><i>AI正在思考中,请稍候...</i></div>"));// 禁用输入和发送按钮ui->dpseek_input_edit->setEnabled(false);ui->pushButton->setEnabled(false);QUrl url("https://api.deepseek.com/chat/completions");QNetworkRequest request(url);request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");request.setRawHeader("Authorization", ("Bearer " + api_key).toUtf8());QJsonObject body;body["model"] = "deepseek-chat";body["messages"] = QJsonArray{QJsonObject{{"role", "user"}, {"content", prompt}}};QNetworkReply *reply = manager->post(request, QJsonDocument(body).toJson());// 处理SSL错误connect(reply, &QNetworkReply::sslErrors, this, [reply]() {qDebug() << "SSL Errors occurred!";reply->ignoreSslErrors(); // 测试阶段忽略错误});connect(reply, &QNetworkReply::finished, [=]() {handleResponse(reply);reply->deleteLater();});
}
///
/// 接收数据,回调处理
/// \param reply
///
void  DeepSeekClient::handleResponse(QNetworkReply *reply) {// 重新启用输入和发送按钮ui->dpseek_input_edit->setEnabled(true);ui->pushButton->setEnabled(true);if (reply->error() == QNetworkReply::NoError) {QByteArray response = reply->readAll();QJsonDocument doc = QJsonDocument::fromJson(response);QJsonObject json = doc.object();if (json.contains("choices")) {QString result = json["choices"].toArray()[0].toObject()["message"].toObject()["content"].toString();// 删除"正在思考"的提示QTextCursor cursor = ui->dpseek_output_edit->textCursor();cursor.movePosition(QTextCursor::End);cursor.movePosition(QTextCursor::PreviousBlock, QTextCursor::KeepAnchor);cursor.removeSelectedText();cursor.deletePreviousChar(); // 删除多余的换行// 显示AI回复ui->dpseek_output_edit->append(QString("<div style='margin: 8px 0; background-color: #f8f9fa; padding: 8px; border-radius: 4px;'><b style='color: #28a745;'>AI:</b> %1</div>").arg(result));// 清空输入框ui->dpseek_input_edit->clear();emit responseReceived(result);}} else {// 删除"正在思考"的提示QTextCursor cursor = ui->dpseek_output_edit->textCursor();cursor.movePosition(QTextCursor::End);cursor.movePosition(QTextCursor::PreviousBlock, QTextCursor::KeepAnchor);cursor.removeSelectedText();cursor.deletePreviousChar(); // 删除多余的换行QString errorMessage = QString("<div style='color: #dc3545; margin: 8px 0;'><b>错误:</b> %1</div>").arg(reply->errorString());ui->dpseek_output_edit->append(errorMessage);}
}
void DeepSeekClient::on_pushButton_clicked()
{LOG(INFO)<<"INPUT: "<<ui->dpseek_input_edit->text().toStdString();sendRequest(ui->dpseek_input_edit->text());
}

3.测试

把qt的界面组件输入输出替换即可

坑点!!

ssl1.1.1g报错处理,主要就是openssl版本兼容性问题导致,必须使用一致的dll版本。导致ssl不支持

官网还找不到了openssl 1.1.1g的安装包。

这里我提供安装包

通过网盘分享的文件:OpenSSL 1.1.1g-所需dll动态库文件.zip
链接: https://pan.baidu.com/s/16m5mmyd6J2LTeIIwRdDp1w 提取码: u3s7 
--来自百度网盘超级会员v6的分享

把dll文件放到目录的build后面即可 

学习资料分享

0voice · GitHub

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词