用Qt 对接‌百度AI平台

[复制链接]
发表于 2026-1-21 04:27:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
        许多同砚想利用几大模子AI弄点东西,但又不知道怎样去参与??迩来帮同砚弄点东西,刚好要接入到AI平台,就趁便研究了一下,并纪录下来。
        起首我们选择的 AI模子是百度的,然后注册,申请密钥相干的东西(和上一篇语音辨认一样的方式),模子场就是用免费的(注册后就有的,一样平常对话),有些场景模子须要收费。废话少说上代码。
1,申请密钥等

2, 利用KEY ,SECRET 获取TOKEN
  1. void MyAiDialog::getBaiduAiAccess_token()
  2. {
  3.         /****** HTTP网络访问类初始化 *****/
  4.         m_http_baidu_AI = new QNetworkAccessManager(this);
  5.         connect(m_http_baidu_AI, SIGNAL(finished(QNetworkReply*)), this, SLOT(slot_http_baidu_AI_finished(QNetworkReply*)));
  6.         QString url_ai("https://aip.baidubce.com/oauth/2.0/token?client_id=%1&client_secret=%2&grant_type=client_credentials");
  7.         url_ai = url_ai.arg(AI_API_Key, AI_Secret_Key);
  8.         /****** 设置头部 **********/
  9.         QNetworkRequest Request(url_ai);
  10.         Request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
  11.         m_http_baidu_AI->get(Request);
  12. }
复制代码
3, 利用 TOKEN 发送消息到AI平台上去获取结果 
  1. void MyAiDialog::sendChat(QString msg)
  2. {
  3.         QString url_ai("https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token=%1");
  4.         url_ai = url_ai.arg(AI_access_token);
  5.         /****** 组装JSON *************/
  6.         QJsonObject json;
  7.         // 创建一个QJsonArray用于存放messages
  8.         QJsonArray messagesArray;
  9.         // 为messages数组添加一个对象
  10.         QJsonObject messageObject;
  11.         messageObject.insert("role", QJsonValue("user"));
  12.         messageObject.insert("content", QJsonValue(msg));
  13.         // 将该对象添加到数组中
  14.         messagesArray.append(messageObject);
  15.         // 将messages数组放入jsonObject
  16.         json.insert("messages", messagesArray);
  17.         //json.insert("stream", true);
  18.         /****** 设置头部 **********/
  19.         QNetworkRequest Request(url_ai);
  20.         Request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
  21.         QString send_json = QJsonDocument(json).toJson();
  22.         QByteArray jsonBytes = send_json.toUtf8(); // 先转为UTF-8字节
  23.         m_http_baidu_AI->post(Request, jsonBytes);
  24. }
复制代码
4,分析结果
  1. void MyAiDialog::slot_http_baidu_AI_finished(QNetworkReply* Reply)//百度云语音识别的的网络回应 接收函数, 判断是否接收成功, 而且返回语音识别的结果
  2. {
  3.         // 响应的状态码为 200 , 表示请求成功
  4.         int stat = Reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
  5.         QByteArray Reply_data = Reply->readAll();
  6.         qDebug() << QJsonDocument::fromJson(Reply_data).toJson() << endl;
  7.         if (stat == 200) /*** 成功数据 ***/
  8.         {
  9.                 //获取响应信息
  10.                 QByteArray byteArray = QString(Reply_data).toUtf8();
  11.                 QJsonDocument JsonDocument = QJsonDocument::fromJson(byteArray); //转为JSON格式字符串
  12.                 if (JsonDocument.isObject() == true)
  13.                 {
  14.                         QJsonObject JsonObject = JsonDocument.object();
  15.                         if (JsonObject.find("access_token") != JsonObject.end())
  16.                         {
  17.                                 AI_access_token = JsonObject["access_token"].toString();
  18.                                 qDebug() << "AI_access_token:" << AI_access_token;
  19.                         }
  20.                         if (JsonObject.find("result") != JsonObject.end())
  21.                         {
  22.                                 QString result = JsonObject["result"].toString();
  23.                                 //QString result = JsonArray[0].toString();
  24.                                 /***** 判断结果 *****/
  25.                                 //ui.lineEdit_3->setText(result);
  26.                                 qDebug() << "result:" << result;
  27.                                 insertMsg(result, true);
  28.                         }
  29.                 }
  30.         }
  31. }
复制代码
5,结果展示


回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表