mirror of
https://github.com/Palm1r/QodeAssist.git
synced 2025-06-04 01:28:58 -04:00
Add stopping chat requests and button
This commit is contained in:
parent
2257e6e45f
commit
9c2516cd4c
@ -187,4 +187,9 @@ int ChatModel::tokensThreshold() const
|
|||||||
return settings.chatTokensThreshold();
|
return settings.chatTokensThreshold();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString ChatModel::lastMessageId() const
|
||||||
|
{
|
||||||
|
return !m_messages.isEmpty() ? m_messages.last().id : "";
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace QodeAssist::Chat
|
} // namespace QodeAssist::Chat
|
||||||
|
@ -66,6 +66,7 @@ public:
|
|||||||
int tokensThreshold() const;
|
int tokensThreshold() const;
|
||||||
|
|
||||||
QString currentModel() const;
|
QString currentModel() const;
|
||||||
|
QString lastMessageId() const;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void totalTokensChanged();
|
void totalTokensChanged();
|
||||||
|
@ -60,6 +60,11 @@ void ChatRootView::copyToClipboard(const QString &text)
|
|||||||
QGuiApplication::clipboard()->setText(text);
|
QGuiApplication::clipboard()->setText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ChatRootView::cancelRequest()
|
||||||
|
{
|
||||||
|
m_clientInterface->cancelRequest();
|
||||||
|
}
|
||||||
|
|
||||||
void ChatRootView::generateColors()
|
void ChatRootView::generateColors()
|
||||||
{
|
{
|
||||||
QColor baseColor = backgroundColor();
|
QColor baseColor = backgroundColor();
|
||||||
|
@ -52,6 +52,7 @@ public:
|
|||||||
public slots:
|
public slots:
|
||||||
void sendMessage(const QString &message) const;
|
void sendMessage(const QString &message) const;
|
||||||
void copyToClipboard(const QString &text);
|
void copyToClipboard(const QString &text);
|
||||||
|
void cancelRequest();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void chatModelChanged();
|
void chatModelChanged();
|
||||||
|
@ -56,6 +56,8 @@ ClientInterface::~ClientInterface() = default;
|
|||||||
|
|
||||||
void ClientInterface::sendMessage(const QString &message)
|
void ClientInterface::sendMessage(const QString &message)
|
||||||
{
|
{
|
||||||
|
cancelRequest();
|
||||||
|
|
||||||
LOG_MESSAGE("Sending message: " + message);
|
LOG_MESSAGE("Sending message: " + message);
|
||||||
LOG_MESSAGE("chatProvider " + Settings::generalSettings().chatLlmProviders.stringValue());
|
LOG_MESSAGE("chatProvider " + Settings::generalSettings().chatLlmProviders.stringValue());
|
||||||
LOG_MESSAGE("chatTemplate " + Settings::generalSettings().chatPrompts.stringValue());
|
LOG_MESSAGE("chatTemplate " + Settings::generalSettings().chatPrompts.stringValue());
|
||||||
@ -74,6 +76,9 @@ void ClientInterface::sendMessage(const QString &message)
|
|||||||
providerRequest["stream"] = true;
|
providerRequest["stream"] = true;
|
||||||
providerRequest["messages"] = m_chatModel->prepareMessagesForRequest(context);
|
providerRequest["messages"] = m_chatModel->prepareMessagesForRequest(context);
|
||||||
|
|
||||||
|
if (!chatTemplate || !chatProvider) {
|
||||||
|
LOG_MESSAGE("Check settings, provider or template are not set");
|
||||||
|
}
|
||||||
chatTemplate->prepareRequest(providerRequest, context);
|
chatTemplate->prepareRequest(providerRequest, context);
|
||||||
chatProvider->prepareRequest(providerRequest, LLMCore::RequestType::Chat);
|
chatProvider->prepareRequest(providerRequest, LLMCore::RequestType::Chat);
|
||||||
|
|
||||||
@ -89,7 +94,6 @@ void ClientInterface::sendMessage(const QString &message)
|
|||||||
QJsonObject request;
|
QJsonObject request;
|
||||||
request["id"] = QUuid::createUuid().toString();
|
request["id"] = QUuid::createUuid().toString();
|
||||||
|
|
||||||
m_accumulatedResponse.clear();
|
|
||||||
m_chatModel->addMessage(message, ChatModel::ChatRole::User, "");
|
m_chatModel->addMessage(message, ChatModel::ChatRole::User, "");
|
||||||
m_requestHandler->sendLLMRequest(config, request);
|
m_requestHandler->sendLLMRequest(config, request);
|
||||||
}
|
}
|
||||||
@ -97,10 +101,15 @@ void ClientInterface::sendMessage(const QString &message)
|
|||||||
void ClientInterface::clearMessages()
|
void ClientInterface::clearMessages()
|
||||||
{
|
{
|
||||||
m_chatModel->clear();
|
m_chatModel->clear();
|
||||||
m_accumulatedResponse.clear();
|
|
||||||
LOG_MESSAGE("Chat history cleared");
|
LOG_MESSAGE("Chat history cleared");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ClientInterface::cancelRequest()
|
||||||
|
{
|
||||||
|
auto id = m_chatModel->lastMessageId();
|
||||||
|
m_requestHandler->cancelRequest(id);
|
||||||
|
}
|
||||||
|
|
||||||
void ClientInterface::handleLLMResponse(const QString &response,
|
void ClientInterface::handleLLMResponse(const QString &response,
|
||||||
const QJsonObject &request,
|
const QJsonObject &request,
|
||||||
bool isComplete)
|
bool isComplete)
|
||||||
|
@ -38,6 +38,7 @@ public:
|
|||||||
|
|
||||||
void sendMessage(const QString &message);
|
void sendMessage(const QString &message);
|
||||||
void clearMessages();
|
void clearMessages();
|
||||||
|
void cancelRequest();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void errorOccurred(const QString &error);
|
void errorOccurred(const QString &error);
|
||||||
@ -46,7 +47,6 @@ private:
|
|||||||
void handleLLMResponse(const QString &response, const QJsonObject &request, bool isComplete);
|
void handleLLMResponse(const QString &response, const QJsonObject &request, bool isComplete);
|
||||||
|
|
||||||
LLMCore::RequestHandler *m_requestHandler;
|
LLMCore::RequestHandler *m_requestHandler;
|
||||||
QString m_accumulatedResponse;
|
|
||||||
ChatModel *m_chatModel;
|
ChatModel *m_chatModel;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -121,6 +121,15 @@ ChatRootView {
|
|||||||
text: qsTr("Send")
|
text: qsTr("Send")
|
||||||
onClicked: sendChatMessage()
|
onClicked: sendChatMessage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: stopButton
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignBottom
|
||||||
|
text: qsTr("Stop")
|
||||||
|
onClicked: root.cancelRequest()
|
||||||
|
}
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
id: clearButton
|
id: clearButton
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user