Qt + DeepSeek

 

首先在DeepSeek的官网里边找到"开放平台"

首次创建好像送免费的十块钱的赠送余额 不过有时效

 打开之后创建API key 注意只在第一次可以复制,之后没法复制

之后点击左下角接口文档 跳转到首次调用API文档页面

我们看这个就行了,之后就可以开始写代码了

 

private:

    QNetworkRequest _request; // 封装网络请求信息
    QNetworkAccessManager *_manager; // 管理网络请求和响应
    QNetworkReply *_reply; // 网络请求响应

    QString _curl_https = "https://api.deepseek.com/chat/completions";
    QString _model = "deepseek-chat"; //deepseek-reasoner r1模型  ||  deepseek-chat v3模型
    QString _api_key = "你的API_key";

    QString _read_text;
void Network::initialize()
{
    _manager = new QNetworkAccessManager(this);
    _request.setUrl(QUrl(_curl_https));

    // 头部信息
    _request.setRawHeader("Authorization", ("Bearer " + _api_key).toUtf8());
    _request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");

    qDebug() << "QSslSocket=" << QSslSocket::sslLibraryBuildVersionString();
    qDebug() << "OpenSSL支持情况:" << QSslSocket::supportsSsl();
}

这里之所以输出一下OpenSSL是因为第一次尝试出错了

如果第二行打印的是false 建议下载一下匹配的版本, 我用的Qt是5.15.2 匹配的版本是1.1.1g 文章内包含此安装包

 

这里要封装成json格式

void Network::send(QString string)
{

    qDebug() << string;

    // messages部分
    QJsonArray messages;
    QJsonObject text1;
    text1["role"] = "system";
    text1["content"] = "You are a helpful assistant.";
    messages.append(text1);
    QJsonObject text2;
    text2["role"] = "user";
    text2["content"] = string;
    messages.append(text2);

    QJsonObject data;
    data["model"] = _model;
    data["messages"] = messages;
    data["stream"] = false;

    QJsonDocument doc(data);
    QByteArray postData = doc.toJson();

    QSslConfiguration config = QSslConfiguration::defaultConfiguration();
    config.setProtocol(QSsl::AnyProtocol);
    config.setPeerVerifyMode(QSslSocket::VerifyNone);
    _request.setSslConfiguration(config);

    //发送post请求
    _reply = _manager->post(_request, postData);
    // 链接槽函数
    connect(_reply, &QIODevice::readyRead, this, &Network::onReadyRead);

}

接收槽函数 从json中找到所需的回答内容 

void Network::onReadyRead()
{
    if(_reply != nullptr && _reply->error() == QNetworkReply::NoError){
        //得到返回的数据
        QByteArray read_data = (_reply->readAll());

        //qDebug() <<  read_data;

        //对返回的json数据进行解析
        QJsonObject obj = QJsonDocument::fromJson(read_data).object();

        //qDebug() << "Response:" << obj;

        QJsonArray choicesarray = obj.value("choices").toArray();
        if (!choicesarray.isEmpty()){
            QJsonObject choiceobj = choicesarray[0].toObject();
            if (choiceobj.contains("message") && choiceobj["message"].isObject()) {
                QJsonObject messageobj = choiceobj["message"].toObject();
                if (messageobj.contains("content") && messageobj["content"].isString()) {
                    this->setReadText(messageobj["content"].toString());
                    //qDebug() << messageobj["content"].toString();
                    //qDebug() << messageobj["reasoning_content"].toString();
                }
            }
        }
    } else {
        qDebug() << "https request error:" << _reply->errorString();
    }
}

 

大致效果如下

上方输入框 回车直接发送 顺带清空输入框 右侧清空所有

最后就是 流式输出有点问题目前还没有实现,还在实验当中

如需源码直接联系🤝

2.10增加流式输出    流式输出(链接🔗)

 

 

### 如何在 Qt 中集成和调用 DeepSeek API 为了在 Qt 应用程序中集成并调用 DeepSeek API,可以按照如下方法实现: #### 创建项目结构 首先创建一个新的 PyQt5 项目,并导入必要的模块。这可以通过以下 Python 脚本完成[^1]。 ```python from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QTextBrowser, QLineEdit, QPushButton, QScrollArea import requests # 导入用于发送 HTTP 请求的库 ``` #### 初始化应用程序界面 构建基本的应用程序框架,包括输入框、按钮以及显示区域等组件。这些组件将允许用户交互并向 DeepSeek 发送请求。 ```python class ChatWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): layout = QVBoxLayout() # 输入区 input_layout = QHBoxLayout() self.input_box = QLineEdit(self) send_button = QPushButton('Send', self) input_layout.addWidget(self.input_box) input_layout.addWidget(send_button) # 显示区 self.display_area = QTextBrowser(self) layout.addLayout(input_layout) layout.addWidget(self.display_area) self.setLayout(layout) # 连接信号槽 send_button.clicked.connect(self.send_message_to_deepseek) def main(): app = QApplication([]) chat_window = ChatWindow() chat_window.show() app.exec_() ``` #### 实现与 DeepSeek 的通信功能 定义 `send_message_to_deepseek` 方法来处理用户的输入并将消息发送给 DeepSeek API。这里假设已经获取到了有效的 API 地址和支持的信息[^2]。 ```python def send_message_to_deepseek(self): user_input = self.input_box.text().strip() if not user_input: return api_url = "https://api.deepseek.com/v1/chat" # 假设这是 DeepSeek 提供的服务地址 headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_API_KEY' # 替换成实际使用的API密钥 } payload = {"message": user_input} try: response = requests.post(api_url, json=payload, headers=headers).json() reply_text = f"You: {user_input}\nBot: {response['reply']}" self.display_area.append(reply_text) self.input_box.clear() # 清空输入框 except Exception as e: error_msg = str(e) self.display_area.append(f"Error occurred while communicating with server:\n{error_msg}") ``` 通过上述代码片段,在按下 Send 按钮之后,会向指定 URL 发起 POST 请求,并接收来自服务器端返回的数据作为回复内容展示出来。需要注意的是这里的 API 地址 (`api_url`) 和授权令牌 (`YOUR_API_KEY`) 需要替换为真实的值才能正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值