From 4f2dc0c4501d669ff172462476575a83733c1b58 Mon Sep 17 00:00:00 2001 From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com> Date: Sat, 23 Nov 2024 21:15:34 +0100 Subject: [PATCH] feat: Add Ollama auto template for chat --- CMakeLists.txt | 1 + qodeassist.cpp | 3 +++ settings/GeneralSettings.cpp | 2 +- templates/BasicChat.hpp | 49 ++++++++++++++++++++++++++++++++++++ templates/CodeLlamaChat.hpp | 3 ++- templates/Ollama.hpp | 23 +++++++++++++++++ 6 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 templates/BasicChat.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index afb8538..45a6620 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,6 +49,7 @@ add_qtc_plugin(QodeAssist templates/Qwen.hpp templates/StarCoderChat.hpp templates/Ollama.hpp + templates/BasicChat.hpp providers/OllamaProvider.hpp providers/OllamaProvider.cpp providers/LMStudioProvider.hpp providers/LMStudioProvider.cpp providers/OpenAICompatProvider.hpp providers/OpenAICompatProvider.cpp diff --git a/qodeassist.cpp b/qodeassist.cpp index 6941e5a..c132a68 100644 --- a/qodeassist.cpp +++ b/qodeassist.cpp @@ -49,6 +49,7 @@ #include "providers/OllamaProvider.hpp" #include "providers/OpenAICompatProvider.hpp" +#include "templates/BasicChat.hpp" #include "templates/CodeLlamaChat.hpp" #include "templates/CodeLlamaFim.hpp" #include "templates/CustomFimTemplate.hpp" @@ -101,6 +102,8 @@ public: templateManager.registerTemplate(); templateManager.registerTemplate(); templateManager.registerTemplate(); + templateManager.registerTemplate(); + templateManager.registerTemplate(); Utils::Icon QCODEASSIST_ICON( {{":/resources/images/qoderassist-icon.png", Utils::Theme::IconsBaseColor}}); diff --git a/settings/GeneralSettings.cpp b/settings/GeneralSettings.cpp index 422a61b..5a92131 100644 --- a/settings/GeneralSettings.cpp +++ b/settings/GeneralSettings.cpp @@ -91,7 +91,7 @@ GeneralSettings::GeneralSettings() caModel.setHistoryCompleter(Constants::CA_MODEL_HISTORY); caSelectModel.m_buttonText = TrConstants::SELECT; - initStringAspect(caTemplate, Constants::CA_TEMPLATE, TrConstants::TEMPLATE, "CodeLlama Chat"); + initStringAspect(caTemplate, Constants::CA_TEMPLATE, TrConstants::TEMPLATE, "Ollama Auto Chat"); caTemplate.setReadOnly(true); caSelectTemplate.m_buttonText = TrConstants::SELECT; diff --git a/templates/BasicChat.hpp b/templates/BasicChat.hpp new file mode 100644 index 0000000..1bb6b31 --- /dev/null +++ b/templates/BasicChat.hpp @@ -0,0 +1,49 @@ +/* + * 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 BasicChat : public LLMCore::PromptTemplate +{ +public: + LLMCore::TemplateType type() const override { return LLMCore::TemplateType::Chat; } + QString name() const override { return "Basic Chat"; } + QString promptTemplate() const override { return {}; } + QStringList stopWords() const override { return QStringList(); } + + void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override + { + QJsonArray messages = request["messages"].toArray(); + + QJsonObject newMessage; + newMessage["role"] = "user"; + newMessage["content"] = context.prefix; + messages.append(newMessage); + + request["messages"] = messages; + } +}; + +} // namespace QodeAssist::Templates diff --git a/templates/CodeLlamaChat.hpp b/templates/CodeLlamaChat.hpp index c7c9dac..0a6b713 100644 --- a/templates/CodeLlamaChat.hpp +++ b/templates/CodeLlamaChat.hpp @@ -19,7 +19,8 @@ #pragma once -#include +#include + #include "llmcore/PromptTemplate.hpp" namespace QodeAssist::Templates { diff --git a/templates/Ollama.hpp b/templates/Ollama.hpp index 6824564..e215c66 100644 --- a/templates/Ollama.hpp +++ b/templates/Ollama.hpp @@ -19,6 +19,8 @@ #pragma once +#include + #include "llmcore/PromptTemplate.hpp" namespace QodeAssist::Templates { @@ -38,4 +40,25 @@ public: } }; +class OllamaAutoChat : public LLMCore::PromptTemplate +{ +public: + LLMCore::TemplateType type() const override { return LLMCore::TemplateType::Chat; } + QString name() const override { return "Ollama Auto Chat"; } + QString promptTemplate() const override { return {}; } + QStringList stopWords() const override { return QStringList(); } + + void prepareRequest(QJsonObject &request, const LLMCore::ContextData &context) const override + { + QJsonArray messages = request["messages"].toArray(); + + QJsonObject newMessage; + newMessage["role"] = "user"; + newMessage["content"] = context.prefix; + messages.append(newMessage); + + request["messages"] = messages; + } +}; + } // namespace QodeAssist::Templates