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

@ -65,9 +65,9 @@ void ClaudeProvider::prepareRequest(
LLMCore::ContextData context,
LLMCore::RequestType type)
{
// if (!isSupportedTemplate(prompt->name())) {
// LOG_MESSAGE(QString("Provider doesn't support %1 template").arg(prompt->name()));
// }
if (!prompt->isSupportProvider(providerID())) {
LOG_MESSAGE(QString("Template %1 doesn't support %2 provider").arg(name(), prompt->name()));
}
prompt->prepareRequest(request, context);
@ -213,4 +213,9 @@ void ClaudeProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) cons
}
}
LLMCore::ProviderID ClaudeProvider::providerID() const
{
return LLMCore::ProviderID::Claude;
}
} // namespace QodeAssist::Providers

View File

@ -41,6 +41,7 @@ public:
QList<QString> validateRequest(const QJsonObject &request, LLMCore::TemplateType type) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
};
} // namespace QodeAssist::Providers

View File

@ -168,15 +168,20 @@ void LMStudioProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) co
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
}
LLMCore::ProviderID LMStudioProvider::providerID() const
{
return LLMCore::ProviderID::LMStudio;
}
void QodeAssist::Providers::LMStudioProvider::prepareRequest(
QJsonObject &request,
LLMCore::PromptTemplate *prompt,
LLMCore::ContextData context,
LLMCore::RequestType type)
{
// if (!isSupportedTemplate(prompt->name())) {
// LOG_MESSAGE(QString("Provider doesn't support %1 template").arg(prompt->name()));
// }
if (!prompt->isSupportProvider(providerID())) {
LOG_MESSAGE(QString("Template %1 doesn't support %2 provider").arg(name(), prompt->name()));
}
prompt->prepareRequest(request, context);

View File

@ -41,6 +41,7 @@ public:
QList<QString> validateRequest(const QJsonObject &request, LLMCore::TemplateType type) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
};
} // namespace QodeAssist::Providers

View File

@ -171,15 +171,20 @@ void MistralAIProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) c
}
}
LLMCore::ProviderID MistralAIProvider::providerID() const
{
return LLMCore::ProviderID::MistralAI;
}
void MistralAIProvider::prepareRequest(
QJsonObject &request,
LLMCore::PromptTemplate *prompt,
LLMCore::ContextData context,
LLMCore::RequestType type)
{
// if (!isSupportedTemplate(prompt->name())) {
// LOG_MESSAGE(QString("Provider doesn't support %1 template").arg(prompt->name()));
// }
if (!prompt->isSupportProvider(providerID())) {
LOG_MESSAGE(QString("Template %1 doesn't support %2 provider").arg(name(), prompt->name()));
}
prompt->prepareRequest(request, context);

View File

@ -41,6 +41,7 @@ public:
QList<QString> validateRequest(const QJsonObject &request, LLMCore::TemplateType type) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
};
} // namespace QodeAssist::Providers

View File

@ -64,9 +64,9 @@ void OllamaProvider::prepareRequest(
LLMCore::ContextData context,
LLMCore::RequestType type)
{
// if (!isSupportedTemplate(prompt->name())) {
// LOG_MESSAGE(QString("Provider doesn't support %1 template").arg(prompt->name()));
// }
if (!prompt->isSupportProvider(providerID())) {
LOG_MESSAGE(QString("Template %1 doesn't support %2 provider").arg(name(), prompt->name()));
}
prompt->prepareRequest(request, context);
@ -213,4 +213,9 @@ void OllamaProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) cons
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
}
LLMCore::ProviderID OllamaProvider::providerID() const
{
return LLMCore::ProviderID::Ollama;
}
} // namespace QodeAssist::Providers

View File

@ -41,6 +41,7 @@ public:
QList<QString> validateRequest(const QJsonObject &request, LLMCore::TemplateType type) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
};
} // namespace QodeAssist::Providers

View File

@ -65,9 +65,9 @@ void OpenAICompatProvider::prepareRequest(
LLMCore::ContextData context,
LLMCore::RequestType type)
{
// if (!isSupportedTemplate(prompt->name())) {
// LOG_MESSAGE(QString("Provider doesn't support %1 template").arg(prompt->name()));
// }
if (!prompt->isSupportProvider(providerID())) {
LOG_MESSAGE(QString("Template %1 doesn't support %2 provider").arg(name(), prompt->name()));
}
prompt->prepareRequest(request, context);
@ -180,4 +180,9 @@ void OpenAICompatProvider::prepareNetworkRequest(QNetworkRequest &networkRequest
}
}
LLMCore::ProviderID OpenAICompatProvider::providerID() const
{
return LLMCore::ProviderID::OpenAICompatible;
}
} // namespace QodeAssist::Providers

View File

@ -41,6 +41,7 @@ public:
QList<QString> validateRequest(const QJsonObject &request, LLMCore::TemplateType type) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
};
} // namespace QodeAssist::Providers

View File

@ -66,9 +66,9 @@ void OpenAIProvider::prepareRequest(
LLMCore::ContextData context,
LLMCore::RequestType type)
{
// if (!isSupportedTemplate(prompt->name())) {
// LOG_MESSAGE(QString("Provider doesn't support %1 template").arg(prompt->name()));
// }
if (!prompt->isSupportProvider(providerID())) {
LOG_MESSAGE(QString("Template %1 doesn't support %2 provider").arg(name(), prompt->name()));
}
prompt->prepareRequest(request, context);
@ -216,4 +216,9 @@ void OpenAIProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) cons
}
}
LLMCore::ProviderID OpenAIProvider::providerID() const
{
return LLMCore::ProviderID::OpenAI;
}
} // namespace QodeAssist::Providers

View File

@ -41,6 +41,7 @@ public:
QList<QString> validateRequest(const QJsonObject &request, LLMCore::TemplateType type) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
LLMCore::ProviderID providerID() const override;
};
} // namespace QodeAssist::Providers

View File

@ -19,8 +19,6 @@
#include "OpenRouterAIProvider.hpp"
#include "settings/ChatAssistantSettings.hpp"
#include "settings/CodeCompletionSettings.hpp"
#include "settings/ProviderSettings.hpp"
#include <QJsonArray>
@ -99,4 +97,9 @@ QString OpenRouterProvider::apiKey() const
return Settings::providerSettings().openRouterApiKey();
}
LLMCore::ProviderID OpenRouterProvider::providerID() const
{
return LLMCore::ProviderID::OpenRouter;
}
} // namespace QodeAssist::Providers

View File

@ -31,6 +31,7 @@ public:
QString url() const override;
bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override;
QString apiKey() const override;
LLMCore::ProviderID providerID() const override;
};
} // namespace QodeAssist::Providers