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);