From 974599795233b2d286894292ffcf543511d1054f Mon Sep 17 00:00:00 2001 From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com> Date: Mon, 23 Sep 2024 23:54:36 +0200 Subject: [PATCH 1/4] Fix clear message history --- chat/ChatClientInterface.cpp | 8 ++++++++ chat/ChatClientInterface.hpp | 1 + chat/ChatWidget.cpp | 1 + chat/ChatWidget.h | 1 + 4 files changed, 11 insertions(+) diff --git a/chat/ChatClientInterface.cpp b/chat/ChatClientInterface.cpp index 34d7942..65ce9bd 100644 --- a/chat/ChatClientInterface.cpp +++ b/chat/ChatClientInterface.cpp @@ -103,6 +103,14 @@ void ChatClientInterface::sendMessage(const QString &message) m_requestHandler->sendLLMRequest(config, request); } +void ChatClientInterface::clearMessages() +{ + m_chatHistory = {}; + m_accumulatedResponse.clear(); + m_pendingMessage.clear(); + logMessage("Chat history cleared"); +} + void ChatClientInterface::handleLLMResponse(const QString &response, bool isComplete) { m_accumulatedResponse += response; diff --git a/chat/ChatClientInterface.hpp b/chat/ChatClientInterface.hpp index f1d7b69..16267dc 100644 --- a/chat/ChatClientInterface.hpp +++ b/chat/ChatClientInterface.hpp @@ -35,6 +35,7 @@ public: ~ChatClientInterface(); void sendMessage(const QString &message); + void clearMessages(); signals: void messageReceived(const QString &message); diff --git a/chat/ChatWidget.cpp b/chat/ChatWidget.cpp index dadc8f0..1dbac73 100644 --- a/chat/ChatWidget.cpp +++ b/chat/ChatWidget.cpp @@ -134,6 +134,7 @@ void ChatWidget::clear() { m_chatDisplay->clear(); m_currentAIResponse.clear(); + m_chatClient->clearMessages(); } void ChatWidget::scrollToBottom() diff --git a/chat/ChatWidget.h b/chat/ChatWidget.h index 94bbba0..cef4f64 100644 --- a/chat/ChatWidget.h +++ b/chat/ChatWidget.h @@ -40,6 +40,7 @@ public: void setShowTimestamp(bool show); void receiveMessage(const QString &message); + private slots: void sendMessage(); void receivePartialMessage(const QString &partialMessage); From b559a174073135d75ac06f0c6687d8ac1716569a Mon Sep 17 00:00:00 2001 From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com> Date: Tue, 24 Sep 2024 08:59:26 +0200 Subject: [PATCH 2/4] Fix getting models list --- providers/LLMProvider.hpp | 2 +- providers/LMStudioProvider.cpp | 6 +++--- providers/LMStudioProvider.hpp | 2 +- providers/OllamaProvider.cpp | 4 ++-- providers/OllamaProvider.hpp | 2 +- providers/OpenAICompatProvider.cpp | 3 ++- providers/OpenAICompatProvider.hpp | 2 +- settings/GeneralSettings.cpp | 3 ++- 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/providers/LLMProvider.hpp b/providers/LLMProvider.hpp index f02e639..27286b4 100644 --- a/providers/LLMProvider.hpp +++ b/providers/LLMProvider.hpp @@ -39,7 +39,7 @@ public: virtual void prepareRequest(QJsonObject &request) = 0; virtual bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) = 0; - virtual QList getInstalledModels(const Utils::Environment &env) = 0; + virtual QList getInstalledModels(const Utils::Environment &env, const QString &url) = 0; }; } // namespace QodeAssist::Providers diff --git a/providers/LMStudioProvider.cpp b/providers/LMStudioProvider.cpp index 705d90c..75afce1 100644 --- a/providers/LMStudioProvider.cpp +++ b/providers/LMStudioProvider.cpp @@ -25,7 +25,6 @@ #include #include -#include "PromptTemplateManager.hpp" #include "QodeAssistUtils.hpp" #include "settings/PresetPromptsSettings.hpp" @@ -115,11 +114,12 @@ bool LMStudioProvider::handleResponse(QNetworkReply *reply, QString &accumulated return isComplete; } -QList LMStudioProvider::getInstalledModels(const Utils::Environment &env) +QList LMStudioProvider::getInstalledModels(const Utils::Environment &env, + const QString &url) { QList models; QNetworkAccessManager manager; - QNetworkRequest request(QUrl(url() + "/v1/models")); + QNetworkRequest request(QString("%1%2").arg(url, "/v1/models")); QNetworkReply *reply = manager.get(request); diff --git a/providers/LMStudioProvider.hpp b/providers/LMStudioProvider.hpp index 1cfc2a9..0bcf56b 100644 --- a/providers/LMStudioProvider.hpp +++ b/providers/LMStudioProvider.hpp @@ -34,7 +34,7 @@ public: QString chatEndpoint() const override; void prepareRequest(QJsonObject &request) override; bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override; - QList getInstalledModels(const Utils::Environment &env) override; + QList getInstalledModels(const Utils::Environment &env, const QString &url) override; }; } // namespace QodeAssist::Providers diff --git a/providers/OllamaProvider.cpp b/providers/OllamaProvider.cpp index 091d24f..661f944 100644 --- a/providers/OllamaProvider.cpp +++ b/providers/OllamaProvider.cpp @@ -123,11 +123,11 @@ bool OllamaProvider::handleResponse(QNetworkReply *reply, QString &accumulatedRe return isComplete; } -QList OllamaProvider::getInstalledModels(const Utils::Environment &env) +QList OllamaProvider::getInstalledModels(const Utils::Environment &env, const QString &url) { QList models; QNetworkAccessManager manager; - QNetworkRequest request(QUrl(url() + "/api/tags")); + QNetworkRequest request(QString("%1%2").arg(url, "/api/tags")); QNetworkReply *reply = manager.get(request); QEventLoop loop; diff --git a/providers/OllamaProvider.hpp b/providers/OllamaProvider.hpp index c78f8f3..f4290e4 100644 --- a/providers/OllamaProvider.hpp +++ b/providers/OllamaProvider.hpp @@ -34,7 +34,7 @@ public: QString chatEndpoint() const override; void prepareRequest(QJsonObject &request) override; bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override; - QList getInstalledModels(const Utils::Environment &env) override; + QList getInstalledModels(const Utils::Environment &env, const QString &url) override; }; } // namespace QodeAssist::Providers diff --git a/providers/OpenAICompatProvider.cpp b/providers/OpenAICompatProvider.cpp index a366ed4..36960f6 100644 --- a/providers/OpenAICompatProvider.cpp +++ b/providers/OpenAICompatProvider.cpp @@ -118,7 +118,8 @@ bool OpenAICompatProvider::handleResponse(QNetworkReply *reply, QString &accumul return isComplete; } -QList OpenAICompatProvider::getInstalledModels(const Utils::Environment &env) +QList OpenAICompatProvider::getInstalledModels(const Utils::Environment &env, + const QString &url) { return QStringList(); } diff --git a/providers/OpenAICompatProvider.hpp b/providers/OpenAICompatProvider.hpp index 417c643..4d7b8ec 100644 --- a/providers/OpenAICompatProvider.hpp +++ b/providers/OpenAICompatProvider.hpp @@ -34,7 +34,7 @@ public: QString chatEndpoint() const override; void prepareRequest(QJsonObject &request) override; bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override; - QList getInstalledModels(const Utils::Environment &env) override; + QList getInstalledModels(const Utils::Environment &env, const QString &url) override; }; } // namespace QodeAssist::Providers diff --git a/settings/GeneralSettings.cpp b/settings/GeneralSettings.cpp index be28fb1..631080e 100644 --- a/settings/GeneralSettings.cpp +++ b/settings/GeneralSettings.cpp @@ -237,9 +237,10 @@ void GeneralSettings::showModelSelectionDialog(Utils::StringAspect *modelNameObj Providers::LLMProvider *provider) { Utils::Environment env = Utils::Environment::systemEnvironment(); + QString providerUrl = (modelNameObj == &modelName) ? url() : chatUrl(); if (provider) { - QStringList models = provider->getInstalledModels(env); + QStringList models = provider->getInstalledModels(env, providerUrl); bool ok; QString selectedModel = QInputDialog::getItem(Core::ICore::dialogParent(), Tr::tr("Select LLM Model"), From cd6dd94cd246fffa93a01363bc440b5da72f10ce Mon Sep 17 00:00:00 2001 From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com> Date: Tue, 24 Sep 2024 09:20:26 +0200 Subject: [PATCH 3/4] Upgrade version to 0.2.1 --- QodeAssist.json.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QodeAssist.json.in b/QodeAssist.json.in index a54f244..6a1f752 100644 --- a/QodeAssist.json.in +++ b/QodeAssist.json.in @@ -1,6 +1,6 @@ { "Name" : "QodeAssist", - "Version" : "0.2.0", + "Version" : "0.2.1", "CompatVersion" : "${IDE_VERSION_COMPAT}", "Vendor" : "Petr Mironychev", "Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} Petr Mironychev, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd", From 8311db5b08e88fe7987618062472649ed234227e Mon Sep 17 00:00:00 2001 From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com> Date: Tue, 24 Sep 2024 09:28:53 +0200 Subject: [PATCH 4/4] Removed unessary logs --- chat/ChatClientInterface.cpp | 1 - chat/ChatWidget.cpp | 4 ---- 2 files changed, 5 deletions(-) diff --git a/chat/ChatClientInterface.cpp b/chat/ChatClientInterface.cpp index 65ce9bd..265f330 100644 --- a/chat/ChatClientInterface.cpp +++ b/chat/ChatClientInterface.cpp @@ -114,7 +114,6 @@ void ChatClientInterface::clearMessages() void ChatClientInterface::handleLLMResponse(const QString &response, bool isComplete) { m_accumulatedResponse += response; - logMessage("Accumulated response: " + m_accumulatedResponse); if (isComplete) { logMessage("Message completed. Final response: " + m_accumulatedResponse); diff --git a/chat/ChatWidget.cpp b/chat/ChatWidget.cpp index 1dbac73..b99dbad 100644 --- a/chat/ChatWidget.cpp +++ b/chat/ChatWidget.cpp @@ -77,7 +77,6 @@ void ChatWidget::sendMessage() void ChatWidget::receiveMessage(const QString &message) { - logMessage("Received message: " + message); updateLastAIMessage(message); } @@ -90,7 +89,6 @@ void ChatWidget::receivePartialMessage(const QString &partialMessage) void ChatWidget::onMessageCompleted() { - logMessage("Message completed. Final response: " + m_currentAIResponse); updateLastAIMessage(m_currentAIResponse); m_currentAIResponse.clear(); scrollToBottom(); @@ -107,14 +105,12 @@ void ChatWidget::addMessage(const QString &message, bool fromUser) auto prefix = fromUser ? "You: " : "AI: "; QString timestamp = m_showTimestamp ? QDateTime::currentDateTime().toString("[hh:mm:ss] ") : ""; QString fullMessage = timestamp + prefix + message; - logMessage("Adding message to display: " + fullMessage); m_chatDisplay->append(fullMessage); scrollToBottom(); } void ChatWidget::updateLastAIMessage(const QString &message) { - logMessage("Updating last AI message: " + message); QTextCursor cursor = m_chatDisplay->textCursor(); cursor.movePosition(QTextCursor::End); cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor);