diff --git a/CMakeLists.txt b/CMakeLists.txt index 171761a..8a691ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,7 @@ add_qtc_plugin(QodeAssist templates/DeepSeekCoderChat.hpp templates/CodeLlamaChat.hpp templates/QwenChat.hpp + templates/StarCoderChat.hpp providers/OllamaProvider.hpp providers/OllamaProvider.cpp providers/LMStudioProvider.hpp providers/LMStudioProvider.cpp providers/OpenAICompatProvider.hpp providers/OpenAICompatProvider.cpp diff --git a/QodeAssist.json.in b/QodeAssist.json.in index b8e36d8..73d1eeb 100644 --- a/QodeAssist.json.in +++ b/QodeAssist.json.in @@ -1,6 +1,6 @@ { "Name" : "QodeAssist", - "Version" : "0.3.1", + "Version" : "0.3.2", "CompatVersion" : "${IDE_VERSION_COMPAT}", "Vendor" : "Petr Mironychev", "Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} Petr Mironychev, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd", diff --git a/qodeassist.cpp b/qodeassist.cpp index 2ab2f4b..2aa3389 100644 --- a/qodeassist.cpp +++ b/qodeassist.cpp @@ -55,6 +55,7 @@ #include "templates/DeepSeekCoderFim.hpp" #include "templates/QwenChat.hpp" #include "templates/StarCoder2Fim.hpp" +#include "templates/StarCoderChat.hpp" using namespace Utils; using namespace Core; @@ -95,6 +96,7 @@ public: templateManager.registerTemplate(); templateManager.registerTemplate(); templateManager.registerTemplate(); + templateManager.registerTemplate(); Utils::Icon QCODEASSIST_ICON( {{":/resources/images/qoderassist-icon.png", Utils::Theme::IconsBaseColor}}); diff --git a/templates/StarCoderChat.hpp b/templates/StarCoderChat.hpp new file mode 100644 index 0000000..437f53e --- /dev/null +++ b/templates/StarCoderChat.hpp @@ -0,0 +1,51 @@ +/* + * 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 +#include "llmcore/PromptTemplate.hpp" + +namespace QodeAssist::Templates { + +class StarCoderChat : public LLMCore::PromptTemplate +{ +public: + QString name() const override { return "StarCoder Chat"; } + LLMCore::TemplateType type() const override { return LLMCore::TemplateType::Chat; } + QString promptTemplate() const override { return "### Instruction:\n%1\n### Response:\n"; } + QStringList stopWords() const override + { + return QStringList() << "###" + << "<|endoftext|>" << ""; + } + void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override + { + QString formattedPrompt = promptTemplate().arg(context.prefix); + QJsonArray messages = request["messages"].toArray(); + + QJsonObject newMessage; + newMessage["role"] = "user"; + newMessage["content"] = formattedPrompt; + messages.append(newMessage); + + request["messages"] = messages; + } +}; +} // namespace QodeAssist::Templates