mirror of
https://github.com/Palm1r/QodeAssist.git
synced 2025-06-03 00:58:34 -04:00
Version 0.2.1
- Fix getting models list from providers - Fix clearing message history in chat - Remove unnecessary logs
This commit is contained in:
commit
d7f0cc92e6
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"Name" : "QodeAssist",
|
"Name" : "QodeAssist",
|
||||||
"Version" : "0.2.0",
|
"Version" : "0.2.1",
|
||||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||||
"Vendor" : "Petr Mironychev",
|
"Vendor" : "Petr Mironychev",
|
||||||
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} Petr Mironychev, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} Petr Mironychev, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
|
||||||
|
@ -103,10 +103,17 @@ void ChatClientInterface::sendMessage(const QString &message)
|
|||||||
m_requestHandler->sendLLMRequest(config, request);
|
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)
|
void ChatClientInterface::handleLLMResponse(const QString &response, bool isComplete)
|
||||||
{
|
{
|
||||||
m_accumulatedResponse += response;
|
m_accumulatedResponse += response;
|
||||||
logMessage("Accumulated response: " + m_accumulatedResponse);
|
|
||||||
|
|
||||||
if (isComplete) {
|
if (isComplete) {
|
||||||
logMessage("Message completed. Final response: " + m_accumulatedResponse);
|
logMessage("Message completed. Final response: " + m_accumulatedResponse);
|
||||||
|
@ -35,6 +35,7 @@ public:
|
|||||||
~ChatClientInterface();
|
~ChatClientInterface();
|
||||||
|
|
||||||
void sendMessage(const QString &message);
|
void sendMessage(const QString &message);
|
||||||
|
void clearMessages();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void messageReceived(const QString &message);
|
void messageReceived(const QString &message);
|
||||||
|
@ -77,7 +77,6 @@ void ChatWidget::sendMessage()
|
|||||||
|
|
||||||
void ChatWidget::receiveMessage(const QString &message)
|
void ChatWidget::receiveMessage(const QString &message)
|
||||||
{
|
{
|
||||||
logMessage("Received message: " + message);
|
|
||||||
updateLastAIMessage(message);
|
updateLastAIMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,7 +89,6 @@ void ChatWidget::receivePartialMessage(const QString &partialMessage)
|
|||||||
|
|
||||||
void ChatWidget::onMessageCompleted()
|
void ChatWidget::onMessageCompleted()
|
||||||
{
|
{
|
||||||
logMessage("Message completed. Final response: " + m_currentAIResponse);
|
|
||||||
updateLastAIMessage(m_currentAIResponse);
|
updateLastAIMessage(m_currentAIResponse);
|
||||||
m_currentAIResponse.clear();
|
m_currentAIResponse.clear();
|
||||||
scrollToBottom();
|
scrollToBottom();
|
||||||
@ -107,14 +105,12 @@ void ChatWidget::addMessage(const QString &message, bool fromUser)
|
|||||||
auto prefix = fromUser ? "You: " : "AI: ";
|
auto prefix = fromUser ? "You: " : "AI: ";
|
||||||
QString timestamp = m_showTimestamp ? QDateTime::currentDateTime().toString("[hh:mm:ss] ") : "";
|
QString timestamp = m_showTimestamp ? QDateTime::currentDateTime().toString("[hh:mm:ss] ") : "";
|
||||||
QString fullMessage = timestamp + prefix + message;
|
QString fullMessage = timestamp + prefix + message;
|
||||||
logMessage("Adding message to display: " + fullMessage);
|
|
||||||
m_chatDisplay->append(fullMessage);
|
m_chatDisplay->append(fullMessage);
|
||||||
scrollToBottom();
|
scrollToBottom();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatWidget::updateLastAIMessage(const QString &message)
|
void ChatWidget::updateLastAIMessage(const QString &message)
|
||||||
{
|
{
|
||||||
logMessage("Updating last AI message: " + message);
|
|
||||||
QTextCursor cursor = m_chatDisplay->textCursor();
|
QTextCursor cursor = m_chatDisplay->textCursor();
|
||||||
cursor.movePosition(QTextCursor::End);
|
cursor.movePosition(QTextCursor::End);
|
||||||
cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor);
|
cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor);
|
||||||
@ -134,6 +130,7 @@ void ChatWidget::clear()
|
|||||||
{
|
{
|
||||||
m_chatDisplay->clear();
|
m_chatDisplay->clear();
|
||||||
m_currentAIResponse.clear();
|
m_currentAIResponse.clear();
|
||||||
|
m_chatClient->clearMessages();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatWidget::scrollToBottom()
|
void ChatWidget::scrollToBottom()
|
||||||
|
@ -40,6 +40,7 @@ public:
|
|||||||
void setShowTimestamp(bool show);
|
void setShowTimestamp(bool show);
|
||||||
|
|
||||||
void receiveMessage(const QString &message);
|
void receiveMessage(const QString &message);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void sendMessage();
|
void sendMessage();
|
||||||
void receivePartialMessage(const QString &partialMessage);
|
void receivePartialMessage(const QString &partialMessage);
|
||||||
|
@ -39,7 +39,7 @@ public:
|
|||||||
|
|
||||||
virtual void prepareRequest(QJsonObject &request) = 0;
|
virtual void prepareRequest(QJsonObject &request) = 0;
|
||||||
virtual bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) = 0;
|
virtual bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) = 0;
|
||||||
virtual QList<QString> getInstalledModels(const Utils::Environment &env) = 0;
|
virtual QList<QString> getInstalledModels(const Utils::Environment &env, const QString &url) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QodeAssist::Providers
|
} // namespace QodeAssist::Providers
|
||||||
|
@ -25,7 +25,6 @@
|
|||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
|
|
||||||
#include "PromptTemplateManager.hpp"
|
|
||||||
#include "QodeAssistUtils.hpp"
|
#include "QodeAssistUtils.hpp"
|
||||||
#include "settings/PresetPromptsSettings.hpp"
|
#include "settings/PresetPromptsSettings.hpp"
|
||||||
|
|
||||||
@ -115,11 +114,12 @@ bool LMStudioProvider::handleResponse(QNetworkReply *reply, QString &accumulated
|
|||||||
return isComplete;
|
return isComplete;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QString> LMStudioProvider::getInstalledModels(const Utils::Environment &env)
|
QList<QString> LMStudioProvider::getInstalledModels(const Utils::Environment &env,
|
||||||
|
const QString &url)
|
||||||
{
|
{
|
||||||
QList<QString> models;
|
QList<QString> models;
|
||||||
QNetworkAccessManager manager;
|
QNetworkAccessManager manager;
|
||||||
QNetworkRequest request(QUrl(url() + "/v1/models"));
|
QNetworkRequest request(QString("%1%2").arg(url, "/v1/models"));
|
||||||
|
|
||||||
QNetworkReply *reply = manager.get(request);
|
QNetworkReply *reply = manager.get(request);
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ public:
|
|||||||
QString chatEndpoint() const override;
|
QString chatEndpoint() const override;
|
||||||
void prepareRequest(QJsonObject &request) override;
|
void prepareRequest(QJsonObject &request) override;
|
||||||
bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override;
|
bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override;
|
||||||
QList<QString> getInstalledModels(const Utils::Environment &env) override;
|
QList<QString> getInstalledModels(const Utils::Environment &env, const QString &url) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QodeAssist::Providers
|
} // namespace QodeAssist::Providers
|
||||||
|
@ -123,11 +123,11 @@ bool OllamaProvider::handleResponse(QNetworkReply *reply, QString &accumulatedRe
|
|||||||
return isComplete;
|
return isComplete;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QString> OllamaProvider::getInstalledModels(const Utils::Environment &env)
|
QList<QString> OllamaProvider::getInstalledModels(const Utils::Environment &env, const QString &url)
|
||||||
{
|
{
|
||||||
QList<QString> models;
|
QList<QString> models;
|
||||||
QNetworkAccessManager manager;
|
QNetworkAccessManager manager;
|
||||||
QNetworkRequest request(QUrl(url() + "/api/tags"));
|
QNetworkRequest request(QString("%1%2").arg(url, "/api/tags"));
|
||||||
QNetworkReply *reply = manager.get(request);
|
QNetworkReply *reply = manager.get(request);
|
||||||
|
|
||||||
QEventLoop loop;
|
QEventLoop loop;
|
||||||
|
@ -34,7 +34,7 @@ public:
|
|||||||
QString chatEndpoint() const override;
|
QString chatEndpoint() const override;
|
||||||
void prepareRequest(QJsonObject &request) override;
|
void prepareRequest(QJsonObject &request) override;
|
||||||
bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override;
|
bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override;
|
||||||
QList<QString> getInstalledModels(const Utils::Environment &env) override;
|
QList<QString> getInstalledModels(const Utils::Environment &env, const QString &url) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QodeAssist::Providers
|
} // namespace QodeAssist::Providers
|
||||||
|
@ -118,7 +118,8 @@ bool OpenAICompatProvider::handleResponse(QNetworkReply *reply, QString &accumul
|
|||||||
return isComplete;
|
return isComplete;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QString> OpenAICompatProvider::getInstalledModels(const Utils::Environment &env)
|
QList<QString> OpenAICompatProvider::getInstalledModels(const Utils::Environment &env,
|
||||||
|
const QString &url)
|
||||||
{
|
{
|
||||||
return QStringList();
|
return QStringList();
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ public:
|
|||||||
QString chatEndpoint() const override;
|
QString chatEndpoint() const override;
|
||||||
void prepareRequest(QJsonObject &request) override;
|
void prepareRequest(QJsonObject &request) override;
|
||||||
bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override;
|
bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override;
|
||||||
QList<QString> getInstalledModels(const Utils::Environment &env) override;
|
QList<QString> getInstalledModels(const Utils::Environment &env, const QString &url) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QodeAssist::Providers
|
} // namespace QodeAssist::Providers
|
||||||
|
@ -237,9 +237,10 @@ void GeneralSettings::showModelSelectionDialog(Utils::StringAspect *modelNameObj
|
|||||||
Providers::LLMProvider *provider)
|
Providers::LLMProvider *provider)
|
||||||
{
|
{
|
||||||
Utils::Environment env = Utils::Environment::systemEnvironment();
|
Utils::Environment env = Utils::Environment::systemEnvironment();
|
||||||
|
QString providerUrl = (modelNameObj == &modelName) ? url() : chatUrl();
|
||||||
|
|
||||||
if (provider) {
|
if (provider) {
|
||||||
QStringList models = provider->getInstalledModels(env);
|
QStringList models = provider->getInstalledModels(env, providerUrl);
|
||||||
bool ok;
|
bool ok;
|
||||||
QString selectedModel = QInputDialog::getItem(Core::ICore::dialogParent(),
|
QString selectedModel = QInputDialog::getItem(Core::ICore::dialogParent(),
|
||||||
Tr::tr("Select LLM Model"),
|
Tr::tr("Select LLM Model"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user