feat: Add filter templates for each provider

This commit is contained in:
Petr Mironychev
2025-02-23 01:41:47 +01:00
parent d96f44d42c
commit e924029ec2
36 changed files with 291 additions and 25 deletions

View File

@ -61,6 +61,19 @@ public:
{
return "The message will contain the following tokens: ### Instruction:\n### Response:\n";
}
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::Ollama:
case QodeAssist::LLMCore::ProviderID::LMStudio:
case QodeAssist::LLMCore::ProviderID::OpenRouter:
case QodeAssist::LLMCore::ProviderID::OpenAICompatible:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -60,6 +60,18 @@ public:
{
return "The message will contain the following tokens: <|im_start|>%1\n%2\n<|im_end|>";
}
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::Ollama:
case QodeAssist::LLMCore::ProviderID::LMStudio:
case QodeAssist::LLMCore::ProviderID::OpenRouter:
case QodeAssist::LLMCore::ProviderID::OpenAICompatible:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -50,6 +50,15 @@ public:
request["messages"] = messages;
}
QString description() const override { return "Claude"; }
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::Claude:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -42,6 +42,15 @@ public:
{
return "The message will contain the following tokens: <PRE> %1 <SUF>%2 <MID>";
}
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::Ollama:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -43,6 +43,15 @@ public:
{
return "The message will contain the following tokens: <SUF>%1<PRE>%2<MID>";
}
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::Ollama:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -59,6 +59,18 @@ public:
{
return "The message will contain the following tokens: [INST]%1[/INST]\n";
}
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::Ollama:
case QodeAssist::LLMCore::ProviderID::LMStudio:
case QodeAssist::LLMCore::ProviderID::OpenRouter:
case QodeAssist::LLMCore::ProviderID::OpenAICompatible:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -63,6 +63,18 @@ public:
return "The message will contain the following tokens: "
"<|start_header_id|>%1<|end_header_id|>%2<|eot_id|>";
}
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::Ollama:
case QodeAssist::LLMCore::ProviderID::LMStudio:
case QodeAssist::LLMCore::ProviderID::OpenRouter:
case QodeAssist::LLMCore::ProviderID::OpenAICompatible:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -37,6 +37,15 @@ public:
request["suffix"] = context.suffix.value_or("");
}
QString description() const override { return "template will take from ollama modelfile"; }
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::MistralAI:
return true;
default:
return false;
}
}
};
class MistralAIChat : public LLMCore::PromptTemplate
@ -64,6 +73,15 @@ public:
request["messages"] = messages;
}
QString description() const override { return "template will take from ollama modelfile"; }
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::MistralAI:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -38,6 +38,15 @@ public:
request["system"] = context.systemPrompt.value_or("");
}
QString description() const override { return "template will take from ollama modelfile"; }
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::Ollama:
return true;
default:
return false;
}
}
};
class OllamaChat : public LLMCore::PromptTemplate
@ -65,6 +74,15 @@ public:
request["messages"] = messages;
}
QString description() const override { return "template will take from ollama modelfile"; }
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::Ollama:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -49,6 +49,15 @@ public:
request["messages"] = messages;
}
QString description() const override { return "OpenAI"; }
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::OpenAI:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -49,6 +49,17 @@ public:
request["messages"] = messages;
}
QString description() const override { return "chat without tokens"; }
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::OpenAICompatible:
case QodeAssist::LLMCore::ProviderID::OpenRouter:
case QodeAssist::LLMCore::ProviderID::LMStudio:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -41,6 +41,15 @@ public:
return "The message will contain the following tokens: "
"<|fim_prefix|>%1<|fim_suffix|>%2<|fim_middle|>";
}
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::Ollama:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -44,6 +44,15 @@ public:
return "The message will contain the following tokens: "
"<fim_prefix>%1<fim_suffix>%2<fim_middle>";
}
bool isSupportProvider(LLMCore::ProviderID id) const override
{
switch (id) {
case QodeAssist::LLMCore::ProviderID::Ollama:
return true;
default:
return false;
}
}
};
} // namespace QodeAssist::Templates

View File

@ -41,9 +41,9 @@ namespace QodeAssist::Templates {
inline void registerTemplates()
{
auto &templateManager = LLMCore::PromptTemplateManager::instance();
templateManager.registerTemplate<CodeLlamaFim>();
templateManager.registerTemplate<OllamaFim>();
templateManager.registerTemplate<OllamaChat>();
templateManager.registerTemplate<OllamaFim>();
templateManager.registerTemplate<CodeLlamaFim>();
templateManager.registerTemplate<Claude>();
templateManager.registerTemplate<OpenAI>();
templateManager.registerTemplate<MistralAIFim>();