From 4f0f9338dccf44c69811cff13e8ca0a0377bdb45 Mon Sep 17 00:00:00 2001
From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com>
Date: Sat, 31 Aug 2024 23:20:23 +0200
Subject: [PATCH] Add DeepSeekCoderV2 template
---
CMakeLists.txt | 3 +-
QodeAssist.json.in | 2 +-
providers/OpenAICompatProvider.cpp | 2 +-
...patProvider.h => OpenAICompatProvider.hpp} | 0
qodeassist.cpp | 4 +-
templates/DeepSeekCoderV2.hpp | 44 +++++++++++++++++++
6 files changed, 51 insertions(+), 4 deletions(-)
rename providers/{OpenAICompatProvider.h => OpenAICompatProvider.hpp} (100%)
create mode 100644 templates/DeepSeekCoderV2.hpp
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a269b24..9533a35 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -35,10 +35,11 @@ add_qtc_plugin(QodeAssist
templates/CodeLLamaTemplate.hpp
templates/StarCoder2Template.hpp
templates/CodeQwenChat.hpp
+ templates/DeepSeekCoderV2.hpp
providers/LLMProvider.hpp
providers/OllamaProvider.hpp providers/OllamaProvider.cpp
providers/LMStudioProvider.hpp providers/LMStudioProvider.cpp
- providers/OpenAICompatProvider.h providers/OpenAICompatProvider.cpp
+ providers/OpenAICompatProvider.hpp providers/OpenAICompatProvider.cpp
LLMProvidersManager.hpp LLMProvidersManager.cpp
QodeAssistSettings.hpp QodeAssistSettings.cpp
QodeAssist.qrc
diff --git a/QodeAssist.json.in b/QodeAssist.json.in
index 4cf3b12..264266e 100644
--- a/QodeAssist.json.in
+++ b/QodeAssist.json.in
@@ -1,6 +1,6 @@
{
"Name" : "QodeAssist",
- "Version" : "0.0.6",
+ "Version" : "0.0.7",
"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/providers/OpenAICompatProvider.cpp b/providers/OpenAICompatProvider.cpp
index 9ec55b5..51fdc54 100644
--- a/providers/OpenAICompatProvider.cpp
+++ b/providers/OpenAICompatProvider.cpp
@@ -17,7 +17,7 @@
* along with QodeAssist. If not, see .
*/
-#include "OpenAICompatProvider.h"
+#include "OpenAICompatProvider.hpp"
#include
#include
diff --git a/providers/OpenAICompatProvider.h b/providers/OpenAICompatProvider.hpp
similarity index 100%
rename from providers/OpenAICompatProvider.h
rename to providers/OpenAICompatProvider.hpp
diff --git a/qodeassist.cpp b/qodeassist.cpp
index 90fd069..ffcd0f6 100644
--- a/qodeassist.cpp
+++ b/qodeassist.cpp
@@ -43,9 +43,10 @@
#include "QodeAssistClient.hpp"
#include "providers/LMStudioProvider.hpp"
#include "providers/OllamaProvider.hpp"
-#include "providers/OpenAICompatProvider.h"
+#include "providers/OpenAICompatProvider.hpp"
#include "templates/CodeLLamaTemplate.hpp"
#include "templates/CodeQwenChat.hpp"
+#include "templates/DeepSeekCoderV2.hpp"
#include "templates/StarCoder2Template.hpp"
using namespace Utils;
@@ -80,6 +81,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/DeepSeekCoderV2.hpp b/templates/DeepSeekCoderV2.hpp
new file mode 100644
index 0000000..2c60f4b
--- /dev/null
+++ b/templates/DeepSeekCoderV2.hpp
@@ -0,0 +1,44 @@
+/*
+ * 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 "PromptTemplate.hpp"
+
+namespace QodeAssist::Templates {
+
+class DeepSeekCoderV2Template : public PromptTemplate
+{
+public:
+ QString name() const override { return "DeepSeekCoderV2"; }
+ QString promptTemplate() const override
+ {
+ return "<|fim▁begin|>%1<|fim▁hole|>%2<|fim▁end|>";
+ }
+ QStringList stopWords() const override { return QStringList(); }
+ void prepareRequest(QJsonObject &request,
+ const QString &prefix,
+ const QString &suffix) const override
+ {
+ QString formattedPrompt = promptTemplate().arg(prefix, suffix);
+ request["prompt"] = formattedPrompt;
+ }
+};
+
+} // namespace QodeAssist::Templates