#include "ChatController.h" ChatController::ChatController(QObject *parent) : QObject{parent} { isLoading(false); networkManager = new QNetworkAccessManager(this); } void ChatController::sendMessage(const QString& text){ isLoading(true); QUrl apiUrl("https://api.openai.com/v1/chat/completions"); QNetworkRequest request(apiUrl); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); request.setRawHeader("Authorization", QString::fromStdString("Bearer %1").arg(QString::fromUtf8(QByteArray::fromBase64(baseKey.toUtf8()))).toUtf8()); QJsonObject requestData; requestData.insert("model", "gpt-3.5-turbo"); messages.append(createMessage("user",text)); requestData.insert("messages", messages); QJsonDocument requestDoc(requestData); QByteArray requestDataBytes = requestDoc.toJson(); QNetworkReply* reply = networkManager->post(request, requestDataBytes); connect(reply, &QNetworkReply::finished,this, [=]() { if (reply->error() == QNetworkReply::NoError) { QString responseString = QString::fromUtf8(reply->readAll()); qDebug() << responseString; QJsonDocument doc = QJsonDocument::fromJson(responseString.toUtf8()); QJsonObject jsonObj = doc.object(); QString text = jsonObj.value("choices").toArray().at(0).toObject().value("message").toObject().value("content").toString(); if(text.isEmpty()){ text = "不好意思,我似乎听不懂您的意思"; }else{ messages.append(createMessage("assistant",text)); } responseData(text.trimmed()); } else { responseData("网络错误:"+reply->errorString()); } isLoading(false); reply->deleteLater(); }); } QJsonObject ChatController::createMessage(const QString& role,const QString& content){ QJsonObject message; message.insert("role",role); message.insert("content",content); return message; }