mirror of
https://github.com/Palm1r/QodeAssist.git
synced 2026-02-14 11:03:08 -05:00
fix: Cleanup accumulated text in one request
This commit is contained in:
@ -151,6 +151,12 @@ void ClientInterface::sendMessage(
|
|||||||
m_chatModel,
|
m_chatModel,
|
||||||
&ChatModel::updateToolResult,
|
&ChatModel::updateToolResult,
|
||||||
Qt::UniqueConnection);
|
Qt::UniqueConnection);
|
||||||
|
connect(
|
||||||
|
provider,
|
||||||
|
&LLMCore::Provider::continuationStarted,
|
||||||
|
this,
|
||||||
|
&ClientInterface::handleCleanAccumulatedData,
|
||||||
|
Qt::UniqueConnection);
|
||||||
|
|
||||||
provider->sendRequest(requestId, config.url, config.providerRequest);
|
provider->sendRequest(requestId, config.url, config.providerRequest);
|
||||||
}
|
}
|
||||||
@ -279,4 +285,10 @@ void ClientInterface::handleRequestFailed(const QString &requestId, const QStrin
|
|||||||
m_accumulatedResponses.remove(requestId);
|
m_accumulatedResponses.remove(requestId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ClientInterface::handleCleanAccumulatedData(const QString &requestId)
|
||||||
|
{
|
||||||
|
m_accumulatedResponses[requestId].clear();
|
||||||
|
LOG_MESSAGE(QString("Cleared accumulated responses for continuation request %1").arg(requestId));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace QodeAssist::Chat
|
} // namespace QodeAssist::Chat
|
||||||
|
|||||||
@ -56,6 +56,7 @@ private slots:
|
|||||||
void handlePartialResponse(const QString &requestId, const QString &partialText);
|
void handlePartialResponse(const QString &requestId, const QString &partialText);
|
||||||
void handleFullResponse(const QString &requestId, const QString &fullText);
|
void handleFullResponse(const QString &requestId, const QString &fullText);
|
||||||
void handleRequestFailed(const QString &requestId, const QString &error);
|
void handleRequestFailed(const QString &requestId, const QString &error);
|
||||||
|
void handleCleanAccumulatedData(const QString &requestId);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void handleLLMResponse(const QString &response, const QJsonObject &request, bool isComplete);
|
void handleLLMResponse(const QString &response, const QJsonObject &request, bool isComplete);
|
||||||
|
|||||||
@ -83,7 +83,6 @@ signals:
|
|||||||
void fullResponseReceived(
|
void fullResponseReceived(
|
||||||
const QodeAssist::LLMCore::RequestID &requestId, const QString &fullText);
|
const QodeAssist::LLMCore::RequestID &requestId, const QString &fullText);
|
||||||
void requestFailed(const QodeAssist::LLMCore::RequestID &requestId, const QString &error);
|
void requestFailed(const QodeAssist::LLMCore::RequestID &requestId, const QString &error);
|
||||||
signals:
|
|
||||||
void toolExecutionStarted(
|
void toolExecutionStarted(
|
||||||
const QString &requestId, const QString &toolId, const QString &toolName);
|
const QString &requestId, const QString &toolId, const QString &toolName);
|
||||||
void toolExecutionCompleted(
|
void toolExecutionCompleted(
|
||||||
@ -91,6 +90,7 @@ signals:
|
|||||||
const QString &toolId,
|
const QString &toolId,
|
||||||
const QString &toolName,
|
const QString &toolName,
|
||||||
const QString &result);
|
const QString &result);
|
||||||
|
void continuationStarted(const QodeAssist::LLMCore::RequestID &requestId);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QJsonObject parseEventLine(const QString &line);
|
QJsonObject parseEventLine(const QString &line);
|
||||||
|
|||||||
@ -196,9 +196,7 @@ LLMCore::ProviderID ClaudeProvider::providerID() const
|
|||||||
void ClaudeProvider::sendRequest(
|
void ClaudeProvider::sendRequest(
|
||||||
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload)
|
const LLMCore::RequestID &requestId, const QUrl &url, const QJsonObject &payload)
|
||||||
{
|
{
|
||||||
if (m_dataBuffers.contains(requestId)) {
|
if (!m_messages.contains(requestId)) {
|
||||||
m_dataBuffers[requestId].responseContent.clear();
|
|
||||||
} else {
|
|
||||||
m_dataBuffers[requestId].clear();
|
m_dataBuffers[requestId].clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -340,6 +338,7 @@ void ClaudeProvider::processStreamEvent(const QString &requestId, const QJsonObj
|
|||||||
|
|
||||||
if (eventType == "message_start") {
|
if (eventType == "message_start") {
|
||||||
message->startNewContinuation();
|
message->startNewContinuation();
|
||||||
|
emit continuationStarted(requestId);
|
||||||
LOG_MESSAGE(QString("Starting NEW continuation for request %1").arg(requestId));
|
LOG_MESSAGE(QString("Starting NEW continuation for request %1").arg(requestId));
|
||||||
|
|
||||||
} else if (eventType == "content_block_start") {
|
} else if (eventType == "content_block_start") {
|
||||||
|
|||||||
@ -320,6 +320,11 @@ void LMStudioProvider::processStreamChunk(const QString &requestId, const QJsonO
|
|||||||
message = new OpenAIMessage(this);
|
message = new OpenAIMessage(this);
|
||||||
m_messages[requestId] = message;
|
m_messages[requestId] = message;
|
||||||
LOG_MESSAGE(QString("Created NEW OpenAIMessage for request %1").arg(requestId));
|
LOG_MESSAGE(QString("Created NEW OpenAIMessage for request %1").arg(requestId));
|
||||||
|
|
||||||
|
if (m_dataBuffers.contains(requestId)) {
|
||||||
|
emit continuationStarted(requestId);
|
||||||
|
LOG_MESSAGE(QString("Starting continuation for request %1").arg(requestId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (delta.contains("content") && !delta["content"].isNull()) {
|
if (delta.contains("content") && !delta["content"].isNull()) {
|
||||||
|
|||||||
@ -324,6 +324,11 @@ void LlamaCppProvider::processStreamChunk(const QString &requestId, const QJsonO
|
|||||||
message = new OpenAIMessage(this);
|
message = new OpenAIMessage(this);
|
||||||
m_messages[requestId] = message;
|
m_messages[requestId] = message;
|
||||||
LOG_MESSAGE(QString("Created NEW OpenAIMessage for llama.cpp request %1").arg(requestId));
|
LOG_MESSAGE(QString("Created NEW OpenAIMessage for llama.cpp request %1").arg(requestId));
|
||||||
|
|
||||||
|
if (m_dataBuffers.contains(requestId)) {
|
||||||
|
emit continuationStarted(requestId);
|
||||||
|
LOG_MESSAGE(QString("Starting continuation for request %1").arg(requestId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (delta.contains("content") && !delta["content"].isNull()) {
|
if (delta.contains("content") && !delta["content"].isNull()) {
|
||||||
|
|||||||
@ -341,6 +341,11 @@ void MistralAIProvider::processStreamChunk(const QString &requestId, const QJson
|
|||||||
message = new OpenAIMessage(this);
|
message = new OpenAIMessage(this);
|
||||||
m_messages[requestId] = message;
|
m_messages[requestId] = message;
|
||||||
LOG_MESSAGE(QString("Created NEW OpenAIMessage for Mistral request %1").arg(requestId));
|
LOG_MESSAGE(QString("Created NEW OpenAIMessage for Mistral request %1").arg(requestId));
|
||||||
|
|
||||||
|
if (m_dataBuffers.contains(requestId)) {
|
||||||
|
emit continuationStarted(requestId);
|
||||||
|
LOG_MESSAGE(QString("Starting continuation for request %1").arg(requestId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (delta.contains("content") && !delta["content"].isNull()) {
|
if (delta.contains("content") && !delta["content"].isNull()) {
|
||||||
|
|||||||
@ -298,6 +298,11 @@ void OpenAICompatProvider::processStreamChunk(const QString &requestId, const QJ
|
|||||||
message = new OpenAIMessage(this);
|
message = new OpenAIMessage(this);
|
||||||
m_messages[requestId] = message;
|
m_messages[requestId] = message;
|
||||||
LOG_MESSAGE(QString("Created NEW OpenAIMessage for request %1").arg(requestId));
|
LOG_MESSAGE(QString("Created NEW OpenAIMessage for request %1").arg(requestId));
|
||||||
|
|
||||||
|
if (m_dataBuffers.contains(requestId)) {
|
||||||
|
emit continuationStarted(requestId);
|
||||||
|
LOG_MESSAGE(QString("Starting continuation for request %1").arg(requestId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (delta.contains("content") && !delta["content"].isNull()) {
|
if (delta.contains("content") && !delta["content"].isNull()) {
|
||||||
|
|||||||
@ -334,6 +334,11 @@ void OpenAIProvider::processStreamChunk(const QString &requestId, const QJsonObj
|
|||||||
message = new OpenAIMessage(this);
|
message = new OpenAIMessage(this);
|
||||||
m_messages[requestId] = message;
|
m_messages[requestId] = message;
|
||||||
LOG_MESSAGE(QString("Created NEW OpenAIAPIMessage for request %1").arg(requestId));
|
LOG_MESSAGE(QString("Created NEW OpenAIAPIMessage for request %1").arg(requestId));
|
||||||
|
|
||||||
|
if (m_dataBuffers.contains(requestId)) {
|
||||||
|
emit continuationStarted(requestId);
|
||||||
|
LOG_MESSAGE(QString("Starting continuation for request %1").arg(requestId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (delta.contains("content") && !delta["content"].isNull()) {
|
if (delta.contains("content") && !delta["content"].isNull()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user