diff --git a/CMakeLists.txt b/CMakeLists.txt index 12adba6..5fdeeba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,6 +55,7 @@ add_qtc_plugin(QodeAssist templates/Llama2.hpp templates/Claude.hpp templates/OpenAI.hpp + templates/CodeLlamaQMLFim.hpp providers/Providers.hpp providers/OllamaProvider.hpp providers/OllamaProvider.cpp providers/LMStudioProvider.hpp providers/LMStudioProvider.cpp diff --git a/templates/CodeLlamaQMLFim.hpp b/templates/CodeLlamaQMLFim.hpp new file mode 100644 index 0000000..1be20eb --- /dev/null +++ b/templates/CodeLlamaQMLFim.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2024 Petr Mironychev + * + * This file is part of QodeAssist. + * + * QodeAssist is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QodeAssist is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QodeAssist. If not, see . + */ + +#pragma once + +#include "llmcore/PromptTemplate.hpp" + +namespace QodeAssist::Templates { + +class CodeLlamaQMLFim : public LLMCore::PromptTemplate +{ +public: + LLMCore::TemplateType type() const override { return LLMCore::TemplateType::Fim; } + QString name() const override { return "CodeLlama QML FIM"; } + QString promptTemplate() const override { return "%1
%2"; }
+    QStringList stopWords() const override
+    {
+        return QStringList() << "" << "
" << "
" << "
" << "< EOT >" << "\\end" + << "" << "" << "##"; + } + void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override + { + QString formattedPrompt = promptTemplate().arg(context.suffix, context.prefix); + request["prompt"] = formattedPrompt; + } + QString description() const override + { + return "The message will contain the following tokens: %1
%2";
+    }
+};
+
+} // namespace QodeAssist::Templates
diff --git a/templates/Templates.hpp b/templates/Templates.hpp
index 80f215c..872b58d 100644
--- a/templates/Templates.hpp
+++ b/templates/Templates.hpp
@@ -25,6 +25,7 @@
 #include "templates/ChatML.hpp"
 #include "templates/Claude.hpp"
 #include "templates/CodeLlamaFim.hpp"
+#include "templates/CodeLlamaQMLFim.hpp"
 #include "templates/CustomFimTemplate.hpp"
 #include "templates/DeepSeekCoderFim.hpp"
 #include "templates/Llama2.hpp"
@@ -53,6 +54,7 @@ inline void registerTemplates()
     templateManager.registerTemplate();
     templateManager.registerTemplate();
     templateManager.registerTemplate();
+    templateManager.registerTemplate();
 }
 
 } // namespace QodeAssist::Templates