diff --git a/ChatView/ClientInterface.cpp b/ChatView/ClientInterface.cpp index 3ec44b8..93602c1 100644 --- a/ChatView/ClientInterface.cpp +++ b/ChatView/ClientInterface.cpp @@ -126,6 +126,7 @@ void ClientInterface::sendMessage(const QString &message, bool includeCurrentFil config.url = QString("%1%2").arg(Settings::generalSettings().caUrl(), provider->chatEndpoint()); config.providerRequest = providerRequest; config.multiLineCompletion = false; + config.apiKey = Settings::chatAssistantSettings().apiKey(); QJsonObject request; request["id"] = QUuid::createUuid().toString(); diff --git a/LLMClientInterface.cpp b/LLMClientInterface.cpp index dd15605..3b56e21 100644 --- a/LLMClientInterface.cpp +++ b/LLMClientInterface.cpp @@ -172,6 +172,7 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request) config.promptTemplate = promptTemplate; config.url = QUrl( QString("%1%2").arg(Settings::generalSettings().ccUrl(), provider->completionEndpoint())); + config.apiKey = Settings::codeCompletionSettings().apiKey(); config.providerRequest = {{"model", Settings::generalSettings().ccModel()}, {"stream", true}}; diff --git a/llmcore/RequestConfig.hpp b/llmcore/RequestConfig.hpp index d456fed..f521067 100644 --- a/llmcore/RequestConfig.hpp +++ b/llmcore/RequestConfig.hpp @@ -35,6 +35,7 @@ struct LLMConfig QJsonObject providerRequest; RequestType requestType; bool multiLineCompletion; + QString apiKey; }; } // namespace QodeAssist::LLMCore diff --git a/llmcore/RequestHandler.cpp b/llmcore/RequestHandler.cpp index 1a7e5c6..22bea52 100644 --- a/llmcore/RequestHandler.cpp +++ b/llmcore/RequestHandler.cpp @@ -38,7 +38,8 @@ void RequestHandler::sendLLMRequest(const LLMConfig &config, const QJsonObject & QJsonDocument(config.providerRequest).toJson(QJsonDocument::Indented)))); QNetworkRequest networkRequest(config.url); - prepareNetworkRequest(networkRequest, config.providerRequest); + if (!config.apiKey.isEmpty()) + prepareNetworkRequest(networkRequest, config.apiKey); QNetworkReply *reply = m_manager->post(networkRequest, QJsonDocument(config.providerRequest).toJson()); @@ -107,15 +108,11 @@ bool RequestHandler::cancelRequest(const QString &id) return false; } -void RequestHandler::prepareNetworkRequest(QNetworkRequest &networkRequest, - const QJsonObject &providerRequest) +void RequestHandler::prepareNetworkRequest( + QNetworkRequest &networkRequest, const QString &apiKey) const { networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); - - if (providerRequest.contains("api_key")) { - QString apiKey = providerRequest["api_key"].toString(); - networkRequest.setRawHeader("Authorization", QString("Bearer %1").arg(apiKey).toUtf8()); - } + networkRequest.setRawHeader("Authorization", QString("Bearer %1").arg(apiKey).toUtf8()); } bool RequestHandler::processSingleLineCompletion(QNetworkReply *reply, diff --git a/llmcore/RequestHandler.hpp b/llmcore/RequestHandler.hpp index d53a910..f50d16f 100644 --- a/llmcore/RequestHandler.hpp +++ b/llmcore/RequestHandler.hpp @@ -52,7 +52,7 @@ private: QMap m_activeRequests; QMap m_accumulatedResponses; - void prepareNetworkRequest(QNetworkRequest &networkRequest, const QJsonObject &providerRequest); + void prepareNetworkRequest(QNetworkRequest &networkRequest, const QString &apiKey) const; bool processSingleLineCompletion(QNetworkReply *reply, const QJsonObject &request, const QString &accumulatedResponse, diff --git a/providers/OpenAICompatProvider.cpp b/providers/OpenAICompatProvider.cpp index a8aaae6..3349f1a 100644 --- a/providers/OpenAICompatProvider.cpp +++ b/providers/OpenAICompatProvider.cpp @@ -82,10 +82,6 @@ void OpenAICompatProvider::prepareRequest(QJsonObject &request, LLMCore::Request request["frequency_penalty"] = settings.frequencyPenalty(); if (settings.usePresencePenalty()) request["presence_penalty"] = settings.presencePenalty(); - const QString &apiKey = settings.apiKey(); - if (!apiKey.isEmpty()) { - request["api_key"] = apiKey; - } }; QJsonArray messages = prepareMessages(request);