From 60936f6d8419039581f2213f4db63b607983b387 Mon Sep 17 00:00:00 2001
From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com>
Date: Wed, 12 Feb 2025 02:05:37 +0100
Subject: [PATCH] refactor: Improve code completion message for Instruct models
---
LLMClientInterface.cpp | 17 +++++++++++++++--
LLMClientInterface.hpp | 2 ++
settings/CodeCompletionSettings.cpp | 4 ++--
3 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/LLMClientInterface.cpp b/LLMClientInterface.cpp
index 1dadcde..6b61777 100644
--- a/LLMClientInterface.cpp
+++ b/LLMClientInterface.cpp
@@ -215,8 +215,12 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request)
systemPrompt.append(updatedContext.fileContext);
QString userMessage;
- if (completeSettings.useUserMessageTemplateForCC() && promptTemplate->type() == LLMCore::TemplateType::Chat) {
- userMessage = completeSettings.userMessageTemplateForCC().arg(updatedContext.prefix, updatedContext.suffix);
+ if (completeSettings.useUserMessageTemplateForCC()
+ && promptTemplate->type() == LLMCore::TemplateType::Chat) {
+ userMessage = processMessageToFIM(
+ completeSettings.userMessageTemplateForCC(),
+ updatedContext.prefix,
+ updatedContext.suffix);
} else {
userMessage = updatedContext.prefix;
}
@@ -242,6 +246,15 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request)
m_requestHandler.sendLLMRequest(config, request);
}
+QString LLMClientInterface::processMessageToFIM(
+ const QString &templateText, const QString &prefix, const QString &suffix)
+{
+ QString result = templateText;
+ result.replace("${prefix}", prefix);
+ result.replace("${suffix}", suffix);
+ return result;
+}
+
LLMCore::ContextData LLMClientInterface::prepareContext(const QJsonObject &request,
const QStringView &accumulatedCompletion)
{
diff --git a/LLMClientInterface.hpp b/LLMClientInterface.hpp
index 624b60e..716d75c 100644
--- a/LLMClientInterface.hpp
+++ b/LLMClientInterface.hpp
@@ -71,6 +71,8 @@ private:
void startTimeMeasurement(const QString &requestId);
void endTimeMeasurement(const QString &requestId);
void logPerformance(const QString &requestId, const QString &operation, qint64 elapsedMs);
+ QString processMessageToFIM(
+ const QString &templateText, const QString &prefix, const QString &suffix);
};
} // namespace QodeAssist
diff --git a/settings/CodeCompletionSettings.cpp b/settings/CodeCompletionSettings.cpp
index 5e28619..b671a7b 100644
--- a/settings/CodeCompletionSettings.cpp
+++ b/settings/CodeCompletionSettings.cpp
@@ -90,7 +90,7 @@ CodeCompletionSettings::CodeCompletionSettings()
maxTokens.setSettingsKey(Constants::CC_MAX_TOKENS);
maxTokens.setLabelText(Tr::tr("Max Tokens:"));
maxTokens.setRange(-1, 900000);
- maxTokens.setDefaultValue(50);
+ maxTokens.setDefaultValue(100);
// Advanced Parameters
useTopP.setSettingsKey(Constants::CC_USE_TOP_P);
@@ -180,7 +180,7 @@ CodeCompletionSettings::CodeCompletionSettings()
userMessageTemplateForCC.setDisplayStyle(Utils::StringAspect::TextEditDisplay);
userMessageTemplateForCC.setDefaultValue(
"Here is the code context with insertion points: "
- "\nBefore:%1\n\nAfter:%2\n\n\n");
+ "\nBefore:${prefix}\n\nAfter:${suffix}\n\n\n");
useProjectChangesCache.setSettingsKey(Constants::CC_USE_PROJECT_CHANGES_CACHE);
useProjectChangesCache.setDefaultValue(true);