+
+namespace QodeAssist {
+
+struct ContextData
+{
+ QString prefix;
+ QString suffix;
+ QString instriuctions;
+};
+
+} // namespace QodeAssist
diff --git a/QodeAssistSettings.cpp b/QodeAssistSettings.cpp
index bf2630f..b280afe 100644
--- a/QodeAssistSettings.cpp
+++ b/QodeAssistSettings.cpp
@@ -153,6 +153,14 @@ QodeAssistSettings::QodeAssistSettings()
startSuggestionTimer.setRange(10, 10000);
startSuggestionTimer.setDefaultValue(500);
+ useFilePathInContext.setSettingsKey(Constants::USE_FILE_PATH_IN_CONTEXT);
+ useFilePathInContext.setDefaultValue(false);
+ useFilePathInContext.setLabelText(Tr::tr("Use File Path in Context"));
+
+ useSpecificInstructions.setSettingsKey(Constants::USE_SPECIFIC_INSTRUCTIONS);
+ useSpecificInstructions.setDefaultValue(false);
+ useSpecificInstructions.setLabelText(Tr::tr("Use Specific Instructions"));
+
specificInstractions.setSettingsKey(Constants::SPECIFIC_INSTRUCTIONS);
specificInstractions.setDisplayStyle(Utils::StringAspect::TextEditDisplay);
specificInstractions.setLabelText(
@@ -195,6 +203,7 @@ QodeAssistSettings::QodeAssistSettings()
frequencyPenalty.setEnabled(useFrequencyPenalty());
readStringsAfterCursor.setEnabled(!readFullFile());
readStringsBeforeCursor.setEnabled(!readFullFile());
+ specificInstractions.setEnabled(useSpecificInstructions());
PromptTemplateManager::instance().setCurrentTemplate(fimPrompts.stringValue());
LLMProvidersManager::instance().setCurrentProvider(llmProviders.stringValue());
@@ -221,6 +230,8 @@ QodeAssistSettings::QodeAssistSettings()
readStringsAfterCursor,
ollamaLivetime,
apiKey,
+ useFilePathInContext,
+ useSpecificInstructions,
specificInstractions,
temperature,
maxTokens,
@@ -274,6 +285,9 @@ void QodeAssistSettings::setupConnections()
connect(&enableLogging, &Utils::BoolAspect::volatileValueChanged, this, [this]() {
setLoggingEnabled(enableLogging.volatileValue());
});
+ connect(&useSpecificInstructions, &Utils::BoolAspect::volatileValueChanged, this, [this]() {
+ specificInstractions.setEnabled(useSpecificInstructions.volatileValue());
+ });
}
void QodeAssistSettings::updateProviderSettings()
diff --git a/QodeAssistSettings.hpp b/QodeAssistSettings.hpp
index 18f6064..f974874 100644
--- a/QodeAssistSettings.hpp
+++ b/QodeAssistSettings.hpp
@@ -95,6 +95,8 @@ public:
Utils::StringAspect ollamaLivetime{this};
Utils::StringAspect specificInstractions{this};
+ Utils::BoolAspect useSpecificInstructions{this};
+ Utils::BoolAspect useFilePathInContext{this};
Utils::BoolAspect multiLineCompletion{this};
Utils::StringAspect apiKey{this};
diff --git a/templates/CodeLLamaTemplate.hpp b/templates/CodeLLamaTemplate.hpp
index 5159979..6115d28 100644
--- a/templates/CodeLLamaTemplate.hpp
+++ b/templates/CodeLLamaTemplate.hpp
@@ -27,17 +27,17 @@ class CodeLLamaTemplate : public PromptTemplate
{
public:
QString name() const override { return "CodeLlama"; }
- QString promptTemplate() const override { return " %1 %2 "; }
+ QString promptTemplate() const override { return "%1 %2 %3 "; }
QStringList stopWords() const override
{
return QStringList() << "" << "" << "";
}
- void prepareRequest(QJsonObject &request,
- const QString &prefix,
- const QString &suffix) const override
+ void prepareRequest(QJsonObject &request, const ContextData &context) const override
{
- QString formattedPrompt = promptTemplate().arg(prefix, suffix);
+ QString formattedPrompt = promptTemplate().arg(context.instriuctions,
+ context.prefix,
+ context.suffix);
request["prompt"] = formattedPrompt;
}
};
diff --git a/templates/CodeQwenChat.hpp b/templates/CodeQwenChat.hpp
index dff2f07..dfae27e 100644
--- a/templates/CodeQwenChat.hpp
+++ b/templates/CodeQwenChat.hpp
@@ -27,16 +27,16 @@ class CodeQwenChatTemplate : public PromptTemplate
{
public:
QString name() const override { return "CodeQwenChat (experimental)"; }
- QString promptTemplate() const override { return "\n### Instruction:%1%2 ### Response:\n"; }
+ QString promptTemplate() const override { return "%1\n### Instruction:%2%3 ### Response:\n"; }
QStringList stopWords() const override
{
return QStringList() << "### Instruction:" << "### Response:" << "\n\n### ";
}
- void prepareRequest(QJsonObject &request,
- const QString &prefix,
- const QString &suffix) const override
+ void prepareRequest(QJsonObject &request, const ContextData &context) const override
{
- QString formattedPrompt = promptTemplate().arg(prefix, suffix);
+ QString formattedPrompt = promptTemplate().arg(context.instriuctions,
+ context.prefix,
+ context.suffix);
request["prompt"] = formattedPrompt;
}
};
diff --git a/templates/DeepSeekCoderV2.hpp b/templates/DeepSeekCoderV2.hpp
index 2c60f4b..69886fb 100644
--- a/templates/DeepSeekCoderV2.hpp
+++ b/templates/DeepSeekCoderV2.hpp
@@ -29,14 +29,14 @@ public:
QString name() const override { return "DeepSeekCoderV2"; }
QString promptTemplate() const override
{
- return "<|fim▁begin|>%1<|fim▁hole|>%2<|fim▁end|>";
+ return "%1<|fim▁begin|>%2<|fim▁hole|>%3<|fim▁end|>";
}
QStringList stopWords() const override { return QStringList(); }
- void prepareRequest(QJsonObject &request,
- const QString &prefix,
- const QString &suffix) const override
+ void prepareRequest(QJsonObject &request, const ContextData &context) const override
{
- QString formattedPrompt = promptTemplate().arg(prefix, suffix);
+ QString formattedPrompt = promptTemplate().arg(context.instriuctions,
+ context.prefix,
+ context.suffix);
request["prompt"] = formattedPrompt;
}
};
diff --git a/templates/PromptTemplate.hpp b/templates/PromptTemplate.hpp
index 72b254a..5b134ee 100644
--- a/templates/PromptTemplate.hpp
+++ b/templates/PromptTemplate.hpp
@@ -23,6 +23,8 @@
#include
#include
+#include "QodeAssistData.hpp"
+
namespace QodeAssist::Templates {
class PromptTemplate
@@ -32,9 +34,6 @@ public:
virtual QString name() const = 0;
virtual QString promptTemplate() const = 0;
virtual QStringList stopWords() const = 0;
- virtual void prepareRequest(QJsonObject &request,
- const QString &prefix,
- const QString &suffix) const
- = 0;
+ virtual void prepareRequest(QJsonObject &request, const ContextData &context) const = 0;
};
} // namespace QodeAssist::Templates
diff --git a/templates/StarCoder2Template.hpp b/templates/StarCoder2Template.hpp
index 456b50a..8f89679 100644
--- a/templates/StarCoder2Template.hpp
+++ b/templates/StarCoder2Template.hpp
@@ -27,17 +27,17 @@ class StarCoder2Template : public PromptTemplate
{
public:
QString name() const override { return "StarCoder2"; }
- QString promptTemplate() const override { return "%1%2"; }
+ QString promptTemplate() const override { return "%1%2%3"; }
QStringList stopWords() const override
{
return QStringList() << "<|endoftext|>" << "" << "" << ""
<< "";
}
- void prepareRequest(QJsonObject &request,
- const QString &prefix,
- const QString &suffix) const override
+ void prepareRequest(QJsonObject &request, const ContextData &context) const override
{
- QString formattedPrompt = promptTemplate().arg(prefix, suffix);
+ QString formattedPrompt = promptTemplate().arg(context.instriuctions,
+ context.prefix,
+ context.suffix);
request["prompt"] = formattedPrompt;
}
};