Skip to content

Commit

Permalink
Add deepseek chat template
Browse files Browse the repository at this point in the history
  • Loading branch information
Palm1r committed Sep 21, 2024
1 parent 6f2029f commit 6aac288
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 2 deletions.
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ add_qtc_plugin(QodeAssist
templates/StarCoder2Template.hpp
templates/DeepSeekCoderV2.hpp
templates/CustomTemplate.hpp
templates/DeepSeekCoderChatTemplate.hpp
providers/LLMProvider.hpp
providers/OllamaProvider.hpp providers/OllamaProvider.cpp
providers/LMStudioProvider.hpp providers/LMStudioProvider.cpp
Expand All @@ -61,3 +62,4 @@ add_qtc_plugin(QodeAssist
chat/ChatOutputPane.h chat/ChatOutputPane.cpp
chat/ChatClientInterface.hpp chat/ChatClientInterface.cpp
)

15 changes: 13 additions & 2 deletions chat/ChatClientInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include "LLMProvidersManager.hpp"
#include "PromptTemplateManager.hpp"
#include "QodeAssistUtils.hpp"
#include "settings/ContextSettings.hpp"
#include "settings/PresetPromptsSettings.hpp"

#include <QJsonArray>
Expand Down Expand Up @@ -84,8 +85,18 @@ void ChatClientInterface::prepareRequest(QJsonObject &request, const QString &me

request["model"] = Settings::generalSettings().chatModelName();

QJsonArray messages = {QJsonObject{{"role", "user"}, {"content", message}}};
request["messages"] = messages;
auto *chatTemplate = PromptTemplateManager::instance().getCurrentChatTemplate();
if (chatTemplate) {
ContextData context;
context.prefix = message;
context.suffix = "";
context.instriuctions = Settings::contextSettings().specificInstractions();

chatTemplate->prepareRequest(request, context);
} else {
QJsonArray messages = {QJsonObject{{"role", "user"}, {"content", message}}};
request["messages"] = messages;
}

request["temperature"] = settings.temperature();
request["stream"] = true;
Expand Down
3 changes: 3 additions & 0 deletions qodeassist.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
#include "settings/GeneralSettings.hpp"
#include "templates/CodeLLamaTemplate.hpp"
#include "templates/CustomTemplate.hpp"
#include "templates/DeepSeekCoderChatTemplate.hpp"
#include "templates/DeepSeekCoderV2.hpp"
#include "templates/StarCoder2Template.hpp"

Expand Down Expand Up @@ -87,7 +88,9 @@ class QodeAssistPlugin final : public ExtensionSystem::IPlugin
templateManager.registerTemplate<Templates::StarCoder2Template>();
templateManager.registerTemplate<Templates::DeepSeekCoderV2Template>();
templateManager.registerTemplate<Templates::CustomTemplate>();
templateManager.registerTemplate<Templates::DeepSeekCoderChatTemplate>();
templateManager.setCurrentFimTemplate("StarCoder2");
templateManager.setCurrentChatTemplate("DeepSeekCoderChat");

Utils::Icon QCODEASSIST_ICON(
{{":/resources/images/qoderassist-icon.png", Utils::Theme::IconsBaseColor}});
Expand Down
37 changes: 37 additions & 0 deletions templates/DeepSeekCoderChatTemplate.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#pragma once

#include <QJsonArray>
#include "PromptTemplate.hpp"

namespace QodeAssist::Templates {

class DeepSeekCoderChatTemplate : public PromptTemplate
{
public:
QString name() const override { return "DeepSeekCoderChat"; }
TemplateType type() const override { return TemplateType::Chat; }

QString promptTemplate() const override { return "### Instruction:\n%1\n### Response:\n"; }

QStringList stopWords() const override
{
return QStringList() << "### Instruction:" << "### Response:" << "\n\n### ";
}

void prepareRequest(QJsonObject &request, const ContextData &context) const override
{
QJsonArray messages;

if (!context.instriuctions.isEmpty()) {
messages.append(QJsonObject{{"role", "system"}, {"content", context.instriuctions}});
}

QString userMessage = context.prefix + context.suffix;
messages.append(
QJsonObject{{"role", "user"}, {"content", promptTemplate().arg(userMessage)}});

request["messages"] = messages;
}
};

} // namespace QodeAssist::Templates

0 comments on commit 6aac288

Please sign in to comment.