马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
许多同砚想利用几大模子AI弄点东西,但又不知道怎样去参与??迩来帮同砚弄点东西,刚好要接入到AI平台,就趁便研究了一下,并纪录下来。
起首我们选择的 AI模子是百度的,然后注册,申请密钥相干的东西(和上一篇语音辨认一样的方式),模子场就是用免费的(注册后就有的,一样平常对话),有些场景模子须要收费。废话少说上代码。
1,申请密钥等
2, 利用KEY ,SECRET 获取TOKEN- void MyAiDialog::getBaiduAiAccess_token()
- {
- /****** HTTP网络访问类初始化 *****/
- m_http_baidu_AI = new QNetworkAccessManager(this);
- connect(m_http_baidu_AI, SIGNAL(finished(QNetworkReply*)), this, SLOT(slot_http_baidu_AI_finished(QNetworkReply*)));
- QString url_ai("https://aip.baidubce.com/oauth/2.0/token?client_id=%1&client_secret=%2&grant_type=client_credentials");
- url_ai = url_ai.arg(AI_API_Key, AI_Secret_Key);
- /****** 设置头部 **********/
- QNetworkRequest Request(url_ai);
- Request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
- m_http_baidu_AI->get(Request);
- }
复制代码 3, 利用 TOKEN 发送消息到AI平台上去获取结果 - void MyAiDialog::sendChat(QString msg)
- {
- QString url_ai("https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token=%1");
- url_ai = url_ai.arg(AI_access_token);
- /****** 组装JSON *************/
- QJsonObject json;
- // 创建一个QJsonArray用于存放messages
- QJsonArray messagesArray;
- // 为messages数组添加一个对象
- QJsonObject messageObject;
- messageObject.insert("role", QJsonValue("user"));
- messageObject.insert("content", QJsonValue(msg));
- // 将该对象添加到数组中
- messagesArray.append(messageObject);
- // 将messages数组放入jsonObject
- json.insert("messages", messagesArray);
- //json.insert("stream", true);
- /****** 设置头部 **********/
- QNetworkRequest Request(url_ai);
- Request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
- QString send_json = QJsonDocument(json).toJson();
- QByteArray jsonBytes = send_json.toUtf8(); // 先转为UTF-8字节
- m_http_baidu_AI->post(Request, jsonBytes);
- }
复制代码 4,分析结果- void MyAiDialog::slot_http_baidu_AI_finished(QNetworkReply* Reply)//百度云语音识别的的网络回应 接收函数, 判断是否接收成功, 而且返回语音识别的结果
- {
- // 响应的状态码为 200 , 表示请求成功
- int stat = Reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
- QByteArray Reply_data = Reply->readAll();
- qDebug() << QJsonDocument::fromJson(Reply_data).toJson() << endl;
- if (stat == 200) /*** 成功数据 ***/
- {
- //获取响应信息
- QByteArray byteArray = QString(Reply_data).toUtf8();
- QJsonDocument JsonDocument = QJsonDocument::fromJson(byteArray); //转为JSON格式字符串
- if (JsonDocument.isObject() == true)
- {
- QJsonObject JsonObject = JsonDocument.object();
- if (JsonObject.find("access_token") != JsonObject.end())
- {
- AI_access_token = JsonObject["access_token"].toString();
- qDebug() << "AI_access_token:" << AI_access_token;
- }
- if (JsonObject.find("result") != JsonObject.end())
- {
- QString result = JsonObject["result"].toString();
- //QString result = JsonArray[0].toString();
- /***** 判断结果 *****/
- //ui.lineEdit_3->setText(result);
- qDebug() << "result:" << result;
- insertMsg(result, true);
- }
- }
- }
- }
复制代码 5,结果展示


|