refactor: Remove dead code

This commit is contained in:
Petr Mironychev
2026-04-01 21:12:41 +02:00
parent b82a7cf1f1
commit f75a87ac5e
29 changed files with 47 additions and 171 deletions

View File

@ -266,8 +266,6 @@ void ClientInterface::sendMessage(
= {{"model", Settings::generalSettings().caModel()}, {"stream", true}}; = {{"model", Settings::generalSettings().caModel()}, {"stream", true}};
} }
config.apiKey = provider->apiKey();
config.provider->prepareRequest( config.provider->prepareRequest(
config.providerRequest, config.providerRequest,
promptTemplate, promptTemplate,

View File

@ -283,7 +283,6 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request)
QString("%1%2").arg(url, endpoint(provider, promptTemplate->type(), isPreset1Active))); QString("%1%2").arg(url, endpoint(provider, promptTemplate->type(), isPreset1Active)));
config.providerRequest = {{"model", modelName}, {"stream", true}}; config.providerRequest = {{"model", modelName}, {"stream", true}};
} }
config.apiKey = provider->apiKey();
config.multiLineCompletion = m_completeSettings.multiLineCompletion(); config.multiLineCompletion = m_completeSettings.multiLineCompletion();
const auto stopWords = QJsonArray::fromStringList(config.promptTemplate->stopWords()); const auto stopWords = QJsonArray::fromStringList(config.promptTemplate->stopWords());

View File

@ -146,7 +146,6 @@ void QuickRefactorHandler::prepareAndSendRequest(
config.provider = provider; config.provider = provider;
config.promptTemplate = promptTemplate; config.promptTemplate = promptTemplate;
config.url = QString("%1%2").arg(settings.qrUrl(), provider->chatEndpoint()); config.url = QString("%1%2").arg(settings.qrUrl(), provider->chatEndpoint());
config.apiKey = provider->apiKey();
if (provider->providerID() == PluginLLMCore::ProviderID::GoogleAI) { if (provider->providerID() == PluginLLMCore::ProviderID::GoogleAI) {
QString stream = QString{"streamGenerateContent?alt=sse"}; QString stream = QString{"streamGenerateContent?alt=sse"};

View File

@ -47,6 +47,13 @@ RequestID Provider::sendRequest(const QUrl &url, const QJsonObject &payload)
return requestId; return requestId;
} }
QString Provider::apiKey() const
{
if (m_apiKeyGetter)
return m_apiKeyGetter();
return {};
}
void Provider::cancelRequest(const RequestID &requestId) void Provider::cancelRequest(const RequestID &requestId)
{ {
LOG_MESSAGE(QString("%1: Cancelling request %2").arg(name(), requestId)); LOG_MESSAGE(QString("%1: Cancelling request %2").arg(name(), requestId));

View File

@ -21,11 +21,12 @@
#include <QFlags> #include <QFlags>
#include <QFuture> #include <QFuture>
#include <QNetworkRequest>
#include <QObject> #include <QObject>
#include <QString> #include <QString>
#include <utils/environment.h> #include <utils/environment.h>
#include <functional>
#include "ContextData.hpp" #include "ContextData.hpp"
#include "IToolsManager.hpp" #include "IToolsManager.hpp"
#include "PromptTemplate.hpp" #include "PromptTemplate.hpp"
@ -53,6 +54,8 @@ class Provider : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
using ApiKeyGetter = std::function<QString()>;
explicit Provider(QObject *parent = nullptr); explicit Provider(QObject *parent = nullptr);
virtual ~Provider() = default; virtual ~Provider() = default;
@ -70,16 +73,18 @@ public:
bool isThinkingEnabled) bool isThinkingEnabled)
= 0; = 0;
virtual QFuture<QList<QString>> getInstalledModels(const QString &url) = 0; virtual QFuture<QList<QString>> getInstalledModels(const QString &url) = 0;
virtual QString apiKey() const = 0;
virtual void prepareNetworkRequest(QNetworkRequest &networkRequest) const = 0;
virtual ProviderID providerID() const = 0; virtual ProviderID providerID() const = 0;
virtual ProviderCapabilities capabilities() const { return {}; } virtual ProviderCapabilities capabilities() const { return {}; }
virtual ::LLMCore::BaseClient *client() const = 0; virtual ::LLMCore::BaseClient *client() const = 0;
QString apiKey() const;
RequestID sendRequest(const QUrl &url, const QJsonObject &payload); RequestID sendRequest(const QUrl &url, const QJsonObject &payload);
void cancelRequest(const RequestID &requestId); void cancelRequest(const RequestID &requestId);
::LLMCore::ToolsManager *toolsManager() const; ::LLMCore::ToolsManager *toolsManager() const;
protected:
ApiKeyGetter m_apiKeyGetter;
}; };
} // namespace QodeAssist::PluginLLMCore } // namespace QodeAssist::PluginLLMCore

View File

@ -35,7 +35,6 @@ struct LLMConfig
QJsonObject providerRequest; QJsonObject providerRequest;
RequestType requestType; RequestType requestType;
bool multiLineCompletion; bool multiLineCompletion;
QString apiKey;
}; };
} // namespace QodeAssist::PluginLLMCore } // namespace QodeAssist::PluginLLMCore

View File

@ -37,9 +37,9 @@ namespace QodeAssist::Providers {
ClaudeProvider::ClaudeProvider(QObject *parent) ClaudeProvider::ClaudeProvider(QObject *parent)
: PluginLLMCore::Provider(parent) : PluginLLMCore::Provider(parent)
, m_client(new ::LLMCore::ClaudeClient( , m_client(new ::LLMCore::ClaudeClient(QString(), QString(), QString(), this))
url(), Settings::providerSettings().claudeApiKey(), QString(), this))
{ {
m_apiKeyGetter = [] { return Settings::providerSettings().claudeApiKey(); };
Tools::registerQodeAssistTools(m_client->tools()); Tools::registerQodeAssistTools(m_client->tools());
} }
@ -135,21 +135,6 @@ QFuture<QList<QString>> ClaudeProvider::getInstalledModels(const QString &baseUr
return m_client->listModels(); return m_client->listModels();
} }
QString ClaudeProvider::apiKey() const
{
return Settings::providerSettings().claudeApiKey();
}
void ClaudeProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) const
{
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
networkRequest.setRawHeader("anthropic-version", "2023-06-01");
if (!apiKey().isEmpty()) {
networkRequest.setRawHeader("x-api-key", apiKey().toUtf8());
}
}
PluginLLMCore::ProviderID ClaudeProvider::providerID() const PluginLLMCore::ProviderID ClaudeProvider::providerID() const
{ {
return PluginLLMCore::ProviderID::Claude; return PluginLLMCore::ProviderID::Claude;

View File

@ -43,8 +43,6 @@ public:
bool isToolsEnabled, bool isToolsEnabled,
bool isThinkingEnabled) override; bool isThinkingEnabled) override;
QFuture<QList<QString>> getInstalledModels(const QString &url) override; QFuture<QList<QString>> getInstalledModels(const QString &url) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
PluginLLMCore::ProviderID providerID() const override; PluginLLMCore::ProviderID providerID() const override;
PluginLLMCore::ProviderCapabilities capabilities() const override; PluginLLMCore::ProviderCapabilities capabilities() const override;

View File

@ -23,6 +23,12 @@
namespace QodeAssist::Providers { namespace QodeAssist::Providers {
CodestralProvider::CodestralProvider(QObject *parent)
: MistralAIProvider(parent)
{
m_apiKeyGetter = [] { return Settings::providerSettings().codestralApiKey(); };
}
QString CodestralProvider::name() const QString CodestralProvider::name() const
{ {
return "Codestral"; return "Codestral";
@ -38,9 +44,4 @@ PluginLLMCore::ProviderCapabilities CodestralProvider::capabilities() const
return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Image; return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Image;
} }
QString CodestralProvider::apiKey() const
{
return Settings::providerSettings().codestralApiKey();
}
} // namespace QodeAssist::Providers } // namespace QodeAssist::Providers

View File

@ -26,9 +26,10 @@ namespace QodeAssist::Providers {
class CodestralProvider : public MistralAIProvider class CodestralProvider : public MistralAIProvider
{ {
public: public:
explicit CodestralProvider(QObject *parent = nullptr);
QString name() const override; QString name() const override;
QString url() const override; QString url() const override;
QString apiKey() const override;
PluginLLMCore::ProviderCapabilities capabilities() const override; PluginLLMCore::ProviderCapabilities capabilities() const override;
}; };

View File

@ -38,8 +38,9 @@ namespace QodeAssist::Providers {
GoogleAIProvider::GoogleAIProvider(QObject *parent) GoogleAIProvider::GoogleAIProvider(QObject *parent)
: PluginLLMCore::Provider(parent) : PluginLLMCore::Provider(parent)
, m_client(new ::LLMCore::GoogleAIClient(url(), apiKey(), QString(), this)) , m_client(new ::LLMCore::GoogleAIClient(QString(), QString(), QString(), this))
{ {
m_apiKeyGetter = [] { return Settings::providerSettings().googleAiApiKey(); };
Tools::registerQodeAssistTools(m_client->tools()); Tools::registerQodeAssistTools(m_client->tools());
} }
@ -148,22 +149,6 @@ QFuture<QList<QString>> GoogleAIProvider::getInstalledModels(const QString &base
return m_client->listModels(); return m_client->listModels();
} }
QString GoogleAIProvider::apiKey() const
{
return Settings::providerSettings().googleAiApiKey();
}
void GoogleAIProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) const
{
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QUrl url = networkRequest.url();
QUrlQuery query(url.query());
query.addQueryItem("key", apiKey());
url.setQuery(query);
networkRequest.setUrl(url);
}
PluginLLMCore::ProviderID GoogleAIProvider::providerID() const PluginLLMCore::ProviderID GoogleAIProvider::providerID() const
{ {
return PluginLLMCore::ProviderID::GoogleAI; return PluginLLMCore::ProviderID::GoogleAI;

View File

@ -43,8 +43,6 @@ public:
bool isToolsEnabled, bool isToolsEnabled,
bool isThinkingEnabled) override; bool isThinkingEnabled) override;
QFuture<QList<QString>> getInstalledModels(const QString &url) override; QFuture<QList<QString>> getInstalledModels(const QString &url) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
PluginLLMCore::ProviderID providerID() const override; PluginLLMCore::ProviderID providerID() const override;
PluginLLMCore::ProviderCapabilities capabilities() const override; PluginLLMCore::ProviderCapabilities capabilities() const override;

View File

@ -37,7 +37,7 @@ namespace QodeAssist::Providers {
LMStudioProvider::LMStudioProvider(QObject *parent) LMStudioProvider::LMStudioProvider(QObject *parent)
: PluginLLMCore::Provider(parent) : PluginLLMCore::Provider(parent)
, m_client(new ::LLMCore::OpenAIClient(url(), apiKey(), QString(), this)) , m_client(new ::LLMCore::OpenAIClient(QString(), QString(), QString(), this))
{ {
Tools::registerQodeAssistTools(m_client->tools()); Tools::registerQodeAssistTools(m_client->tools());
} }
@ -69,16 +69,6 @@ QFuture<QList<QString>> LMStudioProvider::getInstalledModels(const QString &url)
return m_client->listModels(); return m_client->listModels();
} }
QString LMStudioProvider::apiKey() const
{
return {};
}
void LMStudioProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) const
{
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
}
PluginLLMCore::ProviderID LMStudioProvider::providerID() const PluginLLMCore::ProviderID LMStudioProvider::providerID() const
{ {
return PluginLLMCore::ProviderID::LMStudio; return PluginLLMCore::ProviderID::LMStudio;

View File

@ -42,8 +42,6 @@ public:
bool isToolsEnabled, bool isToolsEnabled,
bool isThinkingEnabled) override; bool isThinkingEnabled) override;
QFuture<QList<QString>> getInstalledModels(const QString &url) override; QFuture<QList<QString>> getInstalledModels(const QString &url) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
PluginLLMCore::ProviderID providerID() const override; PluginLLMCore::ProviderID providerID() const override;
PluginLLMCore::ProviderCapabilities capabilities() const override; PluginLLMCore::ProviderCapabilities capabilities() const override;

View File

@ -35,7 +35,7 @@ namespace QodeAssist::Providers {
LlamaCppProvider::LlamaCppProvider(QObject *parent) LlamaCppProvider::LlamaCppProvider(QObject *parent)
: PluginLLMCore::Provider(parent) : PluginLLMCore::Provider(parent)
, m_client(new ::LLMCore::LlamaCppClient(url(), apiKey(), QString(), this)) , m_client(new ::LLMCore::LlamaCppClient(QString(), QString(), QString(), this))
{ {
Tools::registerQodeAssistTools(m_client->tools()); Tools::registerQodeAssistTools(m_client->tools());
} }
@ -110,16 +110,6 @@ QFuture<QList<QString>> LlamaCppProvider::getInstalledModels(const QString &)
return QtFuture::makeReadyFuture(QList<QString>{}); return QtFuture::makeReadyFuture(QList<QString>{});
} }
QString LlamaCppProvider::apiKey() const
{
return {};
}
void LlamaCppProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) const
{
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
}
PluginLLMCore::ProviderID LlamaCppProvider::providerID() const PluginLLMCore::ProviderID LlamaCppProvider::providerID() const
{ {
return PluginLLMCore::ProviderID::LlamaCpp; return PluginLLMCore::ProviderID::LlamaCpp;

View File

@ -43,8 +43,6 @@ public:
bool isToolsEnabled, bool isToolsEnabled,
bool isThinkingEnabled) override; bool isThinkingEnabled) override;
QFuture<QList<QString>> getInstalledModels(const QString &url) override; QFuture<QList<QString>> getInstalledModels(const QString &url) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
PluginLLMCore::ProviderID providerID() const override; PluginLLMCore::ProviderID providerID() const override;
PluginLLMCore::ProviderCapabilities capabilities() const override; PluginLLMCore::ProviderCapabilities capabilities() const override;

View File

@ -36,8 +36,9 @@ namespace QodeAssist::Providers {
MistralAIProvider::MistralAIProvider(QObject *parent) MistralAIProvider::MistralAIProvider(QObject *parent)
: PluginLLMCore::Provider(parent) : PluginLLMCore::Provider(parent)
, m_client(new ::LLMCore::OpenAIClient(url(), apiKey(), QString(), this)) , m_client(new ::LLMCore::OpenAIClient(QString(), QString(), QString(), this))
{ {
m_apiKeyGetter = [] { return Settings::providerSettings().mistralAiApiKey(); };
Tools::registerQodeAssistTools(m_client->tools()); Tools::registerQodeAssistTools(m_client->tools());
} }
@ -68,20 +69,6 @@ QFuture<QList<QString>> MistralAIProvider::getInstalledModels(const QString &url
return m_client->listModels(); return m_client->listModels();
} }
QString MistralAIProvider::apiKey() const
{
return Settings::providerSettings().mistralAiApiKey();
}
void MistralAIProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) const
{
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
if (!apiKey().isEmpty()) {
networkRequest.setRawHeader("Authorization", QString("Bearer %1").arg(apiKey()).toUtf8());
}
}
PluginLLMCore::ProviderID MistralAIProvider::providerID() const PluginLLMCore::ProviderID MistralAIProvider::providerID() const
{ {
return PluginLLMCore::ProviderID::MistralAI; return PluginLLMCore::ProviderID::MistralAI;

View File

@ -42,8 +42,6 @@ public:
bool isToolsEnabled, bool isToolsEnabled,
bool isThinkingEnabled) override; bool isThinkingEnabled) override;
QFuture<QList<QString>> getInstalledModels(const QString &url) override; QFuture<QList<QString>> getInstalledModels(const QString &url) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
PluginLLMCore::ProviderID providerID() const override; PluginLLMCore::ProviderID providerID() const override;
PluginLLMCore::ProviderCapabilities capabilities() const override; PluginLLMCore::ProviderCapabilities capabilities() const override;

View File

@ -37,8 +37,9 @@ namespace QodeAssist::Providers {
OllamaProvider::OllamaProvider(QObject *parent) OllamaProvider::OllamaProvider(QObject *parent)
: PluginLLMCore::Provider(parent) : PluginLLMCore::Provider(parent)
, m_client(new ::LLMCore::OllamaClient(url(), apiKey(), QString(), this)) , m_client(new ::LLMCore::OllamaClient(QString(), QString(), QString(), this))
{ {
m_apiKeyGetter = [] { return Settings::providerSettings().ollamaBasicAuthApiKey(); };
Tools::registerQodeAssistTools(m_client->tools()); Tools::registerQodeAssistTools(m_client->tools());
} }
@ -139,20 +140,6 @@ QFuture<QList<QString>> OllamaProvider::getInstalledModels(const QString &baseUr
return m_client->listModels(); return m_client->listModels();
} }
QString OllamaProvider::apiKey() const
{
return {};
}
void OllamaProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) const
{
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
const auto key = Settings::providerSettings().ollamaBasicAuthApiKey();
if (!key.isEmpty()) {
networkRequest.setRawHeader("Authorization", "Basic " + key.toLatin1());
}
}
PluginLLMCore::ProviderID OllamaProvider::providerID() const PluginLLMCore::ProviderID OllamaProvider::providerID() const
{ {
return PluginLLMCore::ProviderID::Ollama; return PluginLLMCore::ProviderID::Ollama;

View File

@ -43,8 +43,6 @@ public:
bool isToolsEnabled, bool isToolsEnabled,
bool isThinkingEnabled) override; bool isThinkingEnabled) override;
QFuture<QList<QString>> getInstalledModels(const QString &url) override; QFuture<QList<QString>> getInstalledModels(const QString &url) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
PluginLLMCore::ProviderID providerID() const override; PluginLLMCore::ProviderID providerID() const override;
PluginLLMCore::ProviderCapabilities capabilities() const override; PluginLLMCore::ProviderCapabilities capabilities() const override;

View File

@ -36,8 +36,9 @@ namespace QodeAssist::Providers {
OpenAICompatProvider::OpenAICompatProvider(QObject *parent) OpenAICompatProvider::OpenAICompatProvider(QObject *parent)
: PluginLLMCore::Provider(parent) : PluginLLMCore::Provider(parent)
, m_client(new ::LLMCore::OpenAIClient(url(), apiKey(), QString(), this)) , m_client(new ::LLMCore::OpenAIClient(QString(), QString(), QString(), this))
{ {
m_apiKeyGetter = [] { return Settings::providerSettings().openAiCompatApiKey(); };
Tools::registerQodeAssistTools(m_client->tools()); Tools::registerQodeAssistTools(m_client->tools());
} }
@ -112,20 +113,6 @@ QFuture<QList<QString>> OpenAICompatProvider::getInstalledModels(const QString &
return QtFuture::makeReadyFuture(QList<QString>{}); return QtFuture::makeReadyFuture(QList<QString>{});
} }
QString OpenAICompatProvider::apiKey() const
{
return Settings::providerSettings().openAiCompatApiKey();
}
void OpenAICompatProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) const
{
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
if (!apiKey().isEmpty()) {
networkRequest.setRawHeader("Authorization", QString("Bearer %1").arg(apiKey()).toUtf8());
}
}
PluginLLMCore::ProviderID OpenAICompatProvider::providerID() const PluginLLMCore::ProviderID OpenAICompatProvider::providerID() const
{ {
return PluginLLMCore::ProviderID::OpenAICompatible; return PluginLLMCore::ProviderID::OpenAICompatible;

View File

@ -42,8 +42,6 @@ public:
bool isToolsEnabled, bool isToolsEnabled,
bool isThinkingEnabled) override; bool isThinkingEnabled) override;
QFuture<QList<QString>> getInstalledModels(const QString &url) override; QFuture<QList<QString>> getInstalledModels(const QString &url) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
PluginLLMCore::ProviderID providerID() const override; PluginLLMCore::ProviderID providerID() const override;
PluginLLMCore::ProviderCapabilities capabilities() const override; PluginLLMCore::ProviderCapabilities capabilities() const override;

View File

@ -36,8 +36,9 @@ namespace QodeAssist::Providers {
OpenAIProvider::OpenAIProvider(QObject *parent) OpenAIProvider::OpenAIProvider(QObject *parent)
: PluginLLMCore::Provider(parent) : PluginLLMCore::Provider(parent)
, m_client(new ::LLMCore::OpenAIClient(url(), apiKey(), QString(), this)) , m_client(new ::LLMCore::OpenAIClient(QString(), QString(), QString(), this))
{ {
m_apiKeyGetter = [] { return Settings::providerSettings().openAiApiKey(); };
Tools::registerQodeAssistTools(m_client->tools()); Tools::registerQodeAssistTools(m_client->tools());
} }
@ -142,20 +143,6 @@ QFuture<QList<QString>> OpenAIProvider::getInstalledModels(const QString &baseUr
}); });
} }
QString OpenAIProvider::apiKey() const
{
return Settings::providerSettings().openAiApiKey();
}
void OpenAIProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) const
{
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
if (!apiKey().isEmpty()) {
networkRequest.setRawHeader("Authorization", QString("Bearer %1").arg(apiKey()).toUtf8());
}
}
PluginLLMCore::ProviderID OpenAIProvider::providerID() const PluginLLMCore::ProviderID OpenAIProvider::providerID() const
{ {
return PluginLLMCore::ProviderID::OpenAI; return PluginLLMCore::ProviderID::OpenAI;

View File

@ -42,8 +42,6 @@ public:
bool isToolsEnabled, bool isToolsEnabled,
bool isThinkingEnabled) override; bool isThinkingEnabled) override;
QFuture<QList<QString>> getInstalledModels(const QString &url) override; QFuture<QList<QString>> getInstalledModels(const QString &url) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
PluginLLMCore::ProviderID providerID() const override; PluginLLMCore::ProviderID providerID() const override;
PluginLLMCore::ProviderCapabilities capabilities() const override; PluginLLMCore::ProviderCapabilities capabilities() const override;

View File

@ -36,8 +36,9 @@ namespace QodeAssist::Providers {
OpenAIResponsesProvider::OpenAIResponsesProvider(QObject *parent) OpenAIResponsesProvider::OpenAIResponsesProvider(QObject *parent)
: PluginLLMCore::Provider(parent) : PluginLLMCore::Provider(parent)
, m_client(new ::LLMCore::OpenAIResponsesClient(url(), apiKey(), QString(), this)) , m_client(new ::LLMCore::OpenAIResponsesClient(QString(), QString(), QString(), this))
{ {
m_apiKeyGetter = [] { return Settings::providerSettings().openAiApiKey(); };
Tools::registerQodeAssistTools(m_client->tools()); Tools::registerQodeAssistTools(m_client->tools());
} }
@ -162,20 +163,6 @@ QFuture<QList<QString>> OpenAIResponsesProvider::getInstalledModels(const QStrin
}); });
} }
QString OpenAIResponsesProvider::apiKey() const
{
return Settings::providerSettings().openAiApiKey();
}
void OpenAIResponsesProvider::prepareNetworkRequest(QNetworkRequest &networkRequest) const
{
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
if (!apiKey().isEmpty()) {
networkRequest.setRawHeader("Authorization", QString("Bearer %1").arg(apiKey()).toUtf8());
}
}
PluginLLMCore::ProviderID OpenAIResponsesProvider::providerID() const PluginLLMCore::ProviderID OpenAIResponsesProvider::providerID() const
{ {
return PluginLLMCore::ProviderID::OpenAIResponses; return PluginLLMCore::ProviderID::OpenAIResponses;

View File

@ -42,8 +42,6 @@ public:
bool isToolsEnabled, bool isToolsEnabled,
bool isThinkingEnabled) override; bool isThinkingEnabled) override;
QFuture<QList<QString>> getInstalledModels(const QString &url) override; QFuture<QList<QString>> getInstalledModels(const QString &url) override;
QString apiKey() const override;
void prepareNetworkRequest(QNetworkRequest &networkRequest) const override;
PluginLLMCore::ProviderID providerID() const override; PluginLLMCore::ProviderID providerID() const override;
PluginLLMCore::ProviderCapabilities capabilities() const override; PluginLLMCore::ProviderCapabilities capabilities() const override;

View File

@ -28,6 +28,12 @@
namespace QodeAssist::Providers { namespace QodeAssist::Providers {
OpenRouterProvider::OpenRouterProvider(QObject *parent)
: OpenAICompatProvider(parent)
{
m_apiKeyGetter = [] { return Settings::providerSettings().openRouterApiKey(); };
}
QString OpenRouterProvider::name() const QString OpenRouterProvider::name() const
{ {
return "OpenRouter"; return "OpenRouter";
@ -38,11 +44,6 @@ QString OpenRouterProvider::url() const
return "https://openrouter.ai/api"; return "https://openrouter.ai/api";
} }
QString OpenRouterProvider::apiKey() const
{
return Settings::providerSettings().openRouterApiKey();
}
PluginLLMCore::ProviderID OpenRouterProvider::providerID() const PluginLLMCore::ProviderID OpenRouterProvider::providerID() const
{ {
return PluginLLMCore::ProviderID::OpenRouter; return PluginLLMCore::ProviderID::OpenRouter;

View File

@ -26,9 +26,10 @@ namespace QodeAssist::Providers {
class OpenRouterProvider : public OpenAICompatProvider class OpenRouterProvider : public OpenAICompatProvider
{ {
public: public:
explicit OpenRouterProvider(QObject *parent = nullptr);
QString name() const override; QString name() const override;
QString url() const override; QString url() const override;
QString apiKey() const override;
PluginLLMCore::ProviderID providerID() const override; PluginLLMCore::ProviderID providerID() const override;
}; };

View File

@ -83,8 +83,6 @@ public:
return QtFuture::makeReadyFuture(QList<QString>{}); return QtFuture::makeReadyFuture(QList<QString>{});
} }
QString apiKey() const override { return "mock_api_key"; }
void prepareNetworkRequest(QNetworkRequest &request) const override {}
LLMCore::ProviderID providerID() const override { return LLMCore::ProviderID::OpenAI; } LLMCore::ProviderID providerID() const override { return LLMCore::ProviderID::OpenAI; }
}; };