mirror of
https://github.com/JasonYANG170/IOTConnect-PC.git
synced 2024-11-27 06:06:45 +00:00
76 lines
2.7 KiB
C++
76 lines
2.7 KiB
C++
|
#include "dialog2.h"
|
|||
|
#include "qnetworkaccessmanager.h"
|
|||
|
#include "qnetworkreply.h"
|
|||
|
#include "ui_dialog2.h"
|
|||
|
|
|||
|
Dialog2::Dialog2(QWidget *parent)
|
|||
|
: QDialog(parent)
|
|||
|
, ui(new Ui::Dialog2)
|
|||
|
{
|
|||
|
ui->setupUi(this);
|
|||
|
setWindowTitle("AI Chat");
|
|||
|
}
|
|||
|
|
|||
|
Dialog2::~Dialog2()
|
|||
|
{
|
|||
|
delete ui;
|
|||
|
}
|
|||
|
QString strall;
|
|||
|
QString discuss;
|
|||
|
QString ask;
|
|||
|
QString answer;
|
|||
|
void Dialog2::on_pushButton_clicked()
|
|||
|
{
|
|||
|
ui->textBrowser->setPlainText("正在等待ChatGPT回答您的问题,请稍等......");
|
|||
|
ask=ui->textEdit->toPlainText();
|
|||
|
discuss=discuss+"Q:"+ask+"A:";
|
|||
|
QString test2;"ESP8266控制电路数据上传:"+ask;
|
|||
|
qDebug() << "ESP8266控制电路数据上传:"+ui->textEdit->toPlainText();;
|
|||
|
// if(ask.length()>880){
|
|||
|
// QMessageBox::warning(this, "Error", "长度超出限制,当前共"+QString::number(ask.length())+"字节\n请删除部分字符使其控制在880字节以内。");
|
|||
|
//}
|
|||
|
|
|||
|
|
|||
|
int num=0;
|
|||
|
|
|||
|
QNetworkAccessManager manager;
|
|||
|
|
|||
|
// 创建POST请求
|
|||
|
QUrl url("aiurl"); // 更换为你要访问的API地址
|
|||
|
QNetworkRequest request(url);
|
|||
|
QString accessToken = "token";
|
|||
|
QByteArray authHeader = "Bearer " + accessToken.toUtf8();
|
|||
|
|
|||
|
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
|
|||
|
request.setRawHeader("Authorization", authHeader);
|
|||
|
// 准备POST数据
|
|||
|
QByteArray postData;
|
|||
|
postData.append("session_id=123&content=[{\"role\":\"system\",\"content\":\"You are Flowerpot AI, a large language model trained by YANG\\nCarefully heed the user's instructions.\\nRespond using Markdown.\\nCurrent Date: 2024/3/18 14:00:23\\n\"},{\"role\":\"user\",\"content\":\""+ask.toUtf8()+"\"}]&max_context_length=5¶ms={\"model\":\"gpt-3.5-turbo\",\"temperature\":1,\"max_tokens\":2048,\"presence_penalty\":0,\"frequency_penalty\":0,\"max_context_length\":5,\"voiceShortName\":\"zh-CN-XiaoxiaoNeural\",\"rate\":1,\"pitch\":1}"); // 根据API要求,构建合适的POST参数
|
|||
|
|
|||
|
// 发送POST请求
|
|||
|
QNetworkReply *reply = manager.post(request, postData);
|
|||
|
|
|||
|
// 等待请求完成
|
|||
|
QEventLoop loop;
|
|||
|
QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
|
|||
|
loop.exec();
|
|||
|
QString str1="You:\n"+ask+"\n\n";
|
|||
|
|
|||
|
// 获取返回值
|
|||
|
if(reply->error() == QNetworkReply::NoError) {
|
|||
|
QString responsex = reply->readAll();
|
|||
|
QString response= responsex.remove(responsex.length() - 6, 6);
|
|||
|
QString str2="Chat Robot:\n"+response+"\n\n";
|
|||
|
strall=strall+str1+str2;
|
|||
|
ui->textBrowser->setPlainText(strall);
|
|||
|
QString test1="AI数据应答:"+response;
|
|||
|
qDebug() << test1;
|
|||
|
} else {
|
|||
|
qDebug() << "Error:" << reply->errorString();
|
|||
|
}
|
|||
|
|
|||
|
// 清理
|
|||
|
reply->deleteLater();
|
|||
|
}
|
|||
|
|