Skip to content

Commit

Permalink
fix: [Ai] fix issues of compatible llm
Browse files Browse the repository at this point in the history
switch state when received failed message
cancel requesting when terminate before prompt preprocessed

Log: as title
  • Loading branch information
LiHua000 authored and deepin-ci-robot committed Jan 16, 2025
1 parent a5da401 commit 4b5fd4a
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 18 deletions.
2 changes: 0 additions & 2 deletions src/plugins/aimanager/codegeex/codegeexllm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -492,8 +492,6 @@ void CodeGeeXLLM::request(const QString &prompt, ResponseHandler handler)
*/
void CodeGeeXLLM::generate(const QString &prefix, const QString &suffix)
{
if (d->talkId.isEmpty())
d->createNewSession();
setModelState(Busy);

auto file = getCurrentFileInfo();
Expand Down
3 changes: 3 additions & 0 deletions src/plugins/aimanager/openai/openaicompatiblellm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,8 @@ void OpenAiCompatibleLLM::request(const QJsonObject &data)
connect(reply, &QNetworkReply::finished, this, [=](){
if (!d->httpResult.isEmpty())
d->currentConversation->update(d->httpResult);
if (reply->error())
d->currentConversation->popUserData();
d->handleReplyFinished(reply);
});

Expand Down Expand Up @@ -308,6 +310,7 @@ void OpenAiCompatibleLLM::generate(const QString &prefix, const QString &suffix)
dataObject.insert("suffix", suffix);
dataObject.insert("prompt", prefix);
dataObject.insert("temperature", 0.01);
dataObject.insert("stop", "\n\n");
dataObject.insert("stream", d->stream);
if (d->maxTokens != 0)
dataObject.insert("max_tokens", d->maxTokens);
Expand Down
5 changes: 3 additions & 2 deletions src/plugins/codegeex/codegeexmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,8 @@ void CodeGeeXManager::requestAsync(const QString &prompt)
QJsonObject obj = chatLLM->create(*c);
if (isConnectToNetWork())
obj.insert("command", "online_search_v1"); // only worked on CodeGeeX llm
emit sendSyncRequest(obj);
if (isRunning) // incase stop generate before prompt preprocessed
emit sendSyncRequest(obj);
});
}

Expand Down Expand Up @@ -319,7 +320,6 @@ void CodeGeeXManager::onLLMChanged(const LLMInfo &llmInfo)
{
if (chatLLM) {
if (chatLLM->modelState() == AbstractLLM::Busy) {
emit terminated();
stopReceiving();
chatLLM->cancel();
}
Expand Down Expand Up @@ -405,6 +405,7 @@ void CodeGeeXManager::initLLM(AbstractLLM *llm)
emit notify(2, tr("LLM is not valid. %1").arg(errStr));
else
emit notify(2, tr("Error: %1, try again later").arg(data));
emit terminated();
return;
}
onResponse(QString::number(answerFlag), data, state);
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/codegeex/codegeexmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ class CodeGeeXManager : public QObject
void requestMessageUpdate(const MessageData &msg);
void chatStarted();
void crawledWebsite(const QString &msgID, const QList<websiteReference> &websites);
void terminated();
void chatFinished();
void sessionRecordsUpdated();
void setTextToSend(const QString &prompt);
Expand All @@ -113,6 +112,7 @@ class CodeGeeXManager : public QObject
void noChunksFounded();
void quit();
void llmChanged(const LLMInfo &info);
void terminated();

public Q_SLOTS:
void slotSendSyncRequest(const QJsonObject &obj);
Expand Down
27 changes: 15 additions & 12 deletions src/plugins/codegeex/widgets/askpagewidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,9 +224,9 @@ void AskPageWidget::initConnection()
connect(CodeGeeXManager::instance(), &CodeGeeXManager::requestMessageUpdate, this, &AskPageWidget::onMessageUpdate);
connect(CodeGeeXManager::instance(), &CodeGeeXManager::chatStarted, this, &AskPageWidget::enterAnswerState);
connect(CodeGeeXManager::instance(), &CodeGeeXManager::chatFinished, this, &AskPageWidget::onChatFinished);
connect(CodeGeeXManager::instance(), &CodeGeeXManager::terminated, this, &AskPageWidget::onChatFinished);
connect(CodeGeeXManager::instance(), &CodeGeeXManager::setTextToSend, this, &AskPageWidget::setInputText);
connect(CodeGeeXManager::instance(), &CodeGeeXManager::showCustomWidget, this, &AskPageWidget::showCustomWidget);
connect(CodeGeeXManager::instance(), &CodeGeeXManager::terminated, this, &AskPageWidget::onStopGenerate);

connect(inputEdit, &InputEditWidget::messageSended, this, &AskPageWidget::slotMessageSend);
connect(inputEdit, &InputEditWidget::pressedEnter, this, &AskPageWidget::slotMessageSend);
Expand All @@ -238,16 +238,7 @@ void AskPageWidget::initConnection()
connect(inputEdit->edit(), &DTextEdit::textChanged, this, [this]() {
inputWidget->setFixedHeight(inputEdit->height() + inputExtraHeight);
});
connect(stopGenerate, &DPushButton::clicked, this, [this]() {
CodeGeeXManager::instance()->stopReceiving();
Q_EMIT CodeGeeXManager::instance()->terminated();
if (!msgComponents.values().contains(waitComponets)) {
QString stopId = "Stop:" + QString::number(QDateTime::currentMSecsSinceEpoch());
msgComponents.insert(stopId, waitComponets);
}
waitComponets->stopWaiting();
waitingAnswer = false;
});
connect(stopGenerate, &DPushButton::clicked, this, &AskPageWidget::onStopGenerate);
connect(scrollArea->verticalScrollBar(), &QScrollBar::rangeChanged, this, [=]() {
if (scrollArea->verticalScrollBar()->isVisible()) {
int maxValue = scrollArea->verticalScrollBar()->maximum();
Expand Down Expand Up @@ -360,6 +351,18 @@ void AskPageWidget::updateModelCb()
CodeGeeXManager::instance()->onLLMChanged(LLMInfo::fromVariantMap(modelCb->currentData().toMap()));
}

void AskPageWidget::onStopGenerate()
{
CodeGeeXManager::instance()->stopReceiving();
if (!msgComponents.values().contains(waitComponets)) {
QString stopId = "Stop:" + QString::number(QDateTime::currentMSecsSinceEpoch());
msgComponents.insert(stopId, waitComponets);
}
waitComponets->stopWaiting();
waitingAnswer = false;
enterInputState();
}

void AskPageWidget::askQuestion(const QString &question)
{
CodeGeeXManager::instance()->sendMessage(question);
Expand All @@ -372,7 +375,7 @@ void AskPageWidget::resetBtns()

deleteBtn->setEnabled(!isIntroPageState());
createNewBtn->setVisible(!isIntroPageState());
historyBtn->setVisible(true);
// historyBtn->setVisible(true);
}

void AskPageWidget::setInputText(const QString &prompt)
Expand Down
1 change: 1 addition & 0 deletions src/plugins/codegeex/widgets/askpagewidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public Q_SLOTS:
void setInputText(const QString &prompt);
void showCustomWidget(QWidget *widget);
void updateModelCb();
void onStopGenerate();

private:
void initUI();
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/codegeex/widgets/messagecomponent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ void MessageComponent::initConnect()
showChunksReferences();
finished = true;
});
connect(CodeGeeXManager::instance(), &CodeGeeXManager::terminated, this,
connect(CodeGeeXManager::instance(), &CodeGeeXManager::requestStop, this,
[=]() {
finished = true;
});
Expand Down

0 comments on commit 4b5fd4a

Please sign in to comment.