From 46258a11f6c6a8acf9ad1b4f675dd2d04d375495 Mon Sep 17 00:00:00 2001 From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com> Date: Fri, 30 Aug 2024 07:47:33 +0200 Subject: [PATCH] Fix authorization to the API. --- LLMClientInterface.cpp | 28 ++++++++++++++++------------ QodeAssist.json.in | 2 +- QodeAssistConstants.hpp | 1 - QodeAssistSettings.cpp | 8 +------- QodeAssistSettings.hpp | 1 - providers/LLMProvider.hpp | 1 - providers/LMStudioProvider.cpp | 7 +------ providers/LMStudioProvider.hpp | 1 - providers/OllamaProvider.cpp | 7 +------ providers/OllamaProvider.hpp | 1 - providers/OpenAICompatProvider.cpp | 7 +------ providers/OpenAICompatProvider.h | 1 - 12 files changed, 21 insertions(+), 44 deletions(-) diff --git a/LLMClientInterface.cpp b/LLMClientInterface.cpp index 77f88cf..9414ebb 100644 --- a/LLMClientInterface.cpp +++ b/LLMClientInterface.cpp @@ -282,10 +282,7 @@ LLMClientInterface::ContextPair LLMClientInterface::prepareContext( void LLMClientInterface::updateProvider() { - m_serverUrl = QUrl(QString("%1:%2%3") - .arg(settings().url.value()) - .arg(settings().port.value()) - .arg(settings().endPoint.value())); + m_serverUrl = QUrl(QString("%1%2").arg(settings().url(), settings().endPoint())); } void LLMClientInterface::sendCompletionToClient(const QString &completion, @@ -324,22 +321,29 @@ void LLMClientInterface::sendCompletionToClient(const QString &completion, void LLMClientInterface::sendLLMRequest(const QJsonObject &request, const ContextPair &prompt) { - QJsonObject qodeRequest = {{"model", settings().modelName.value()}, {"stream", true}}; + QJsonObject providerRequest = {{"model", settings().modelName.value()}, {"stream", true}}; auto currentTemplate = PromptTemplateManager::instance().getCurrentTemplate(); - currentTemplate->prepareRequest(qodeRequest, prompt.prefix, prompt.suffix); + currentTemplate->prepareRequest(providerRequest, prompt.prefix, prompt.suffix); auto &providerManager = LLMProvidersManager::instance(); - providerManager.getCurrentProvider()->prepareRequest(qodeRequest); + providerManager.getCurrentProvider()->prepareRequest(providerRequest); - logMessage( - QString("Sending request to llm: \nurl: %1\nRequest body:\n%2") - .arg(m_serverUrl.toString()) - .arg(QString::fromUtf8(QJsonDocument(qodeRequest).toJson(QJsonDocument::Indented)))); + logMessage(QString("Sending request to llm: \nurl: %1\nRequest body:\n%2") + .arg(m_serverUrl.toString(), + QString::fromUtf8( + QJsonDocument(providerRequest).toJson(QJsonDocument::Indented)))); QNetworkRequest networkRequest(m_serverUrl); networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); - QNetworkReply *reply = m_manager->post(networkRequest, QJsonDocument(qodeRequest).toJson()); + + if (providerRequest.contains("api_key")) { + QString apiKey = providerRequest["api_key"].toString(); + networkRequest.setRawHeader("Authorization", QString("Bearer %1").arg(apiKey).toUtf8()); + providerRequest.remove("api_key"); + } + + QNetworkReply *reply = m_manager->post(networkRequest, QJsonDocument(providerRequest).toJson()); if (!reply) { logMessage("Error: Failed to create network reply"); return; diff --git a/QodeAssist.json.in b/QodeAssist.json.in index 8228dc7..4cf3b12 100644 --- a/QodeAssist.json.in +++ b/QodeAssist.json.in @@ -1,6 +1,6 @@ { "Name" : "QodeAssist", - "Version" : "0.0.5", + "Version" : "0.0.6", "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/QodeAssistConstants.hpp b/QodeAssistConstants.hpp index b6e4be9..a05cf4f 100644 --- a/QodeAssistConstants.hpp +++ b/QodeAssistConstants.hpp @@ -30,7 +30,6 @@ const char ENABLE_AUTO_COMPLETE[] = "QodeAssist.enableAutoComplete"; const char ENABLE_LOGGING[] = "QodeAssist.enableLogging"; const char LLM_PROVIDERS[] = "QodeAssist.llmProviders"; const char URL[] = "QodeAssist.url"; -const char PORT[] = "QodeAssist.port"; const char END_POINT[] = "QodeAssist.endPoint"; const char MODEL_NAME[] = "QodeAssist.modelName"; const char SELECT_MODELS[] = "QodeAssist.selectModels"; diff --git a/QodeAssistSettings.cpp b/QodeAssistSettings.cpp index 43a4f33..e6373c7 100644 --- a/QodeAssistSettings.cpp +++ b/QodeAssistSettings.cpp @@ -68,10 +68,6 @@ QodeAssistSettings::QodeAssistSettings() endPoint.setLabelText(Tr::tr("Endpoint:")); endPoint.setDisplayStyle(Utils::StringAspect::LineEditDisplay); - port.setSettingsKey(Constants::PORT); - port.setLabelText(Tr::tr("Port:")); - port.setRange(1, 65535); - modelName.setSettingsKey(Constants::MODEL_NAME); modelName.setLabelText(Tr::tr("LLM Name:")); modelName.setDisplayStyle(Utils::StringAspect::LineEditDisplay); @@ -215,7 +211,7 @@ QodeAssistSettings::QodeAssistSettings() enableLogging, Row{Stretch{1}, resetToDefaults}}}}, Group{title(Tr::tr("LLM Providers")), - Form{Column{llmProviders, Row{url, port, endPoint}, providerPaths}}}, + Form{Column{llmProviders, Row{url, endPoint}, providerPaths}}}, Group{title(Tr::tr("LLM Model Settings")), Form{Column{Row{selectModels, modelName}}}}, Group{title(Tr::tr("FIM Prompt Settings")), @@ -288,7 +284,6 @@ void QodeAssistSettings::updateProviderSettings() if (provider) { logMessage(QString("currentProvider %1").arg(provider->name())); url.setValue(provider->url()); - port.setValue(provider->defaultPort()); endPoint.setValue(provider->completionEndpoint()); ollamaLivetime.setEnabled(provider->name() == "Ollama"); } @@ -347,7 +342,6 @@ void QodeAssistSettings::resetSettingsToDefaults() resetAspect(enableAutoComplete); resetAspect(llmProviders); resetAspect(url); - resetAspect(port); resetAspect(endPoint); resetAspect(modelName); resetAspect(fimPrompts); diff --git a/QodeAssistSettings.hpp b/QodeAssistSettings.hpp index da6690e..18f6064 100644 --- a/QodeAssistSettings.hpp +++ b/QodeAssistSettings.hpp @@ -63,7 +63,6 @@ public: Utils::SelectionAspect llmProviders{this}; Utils::StringAspect url{this}; - Utils::IntegerAspect port{this}; Utils::StringAspect endPoint{this}; Utils::StringAspect modelName{this}; diff --git a/providers/LLMProvider.hpp b/providers/LLMProvider.hpp index 596365e..55cfde0 100644 --- a/providers/LLMProvider.hpp +++ b/providers/LLMProvider.hpp @@ -34,7 +34,6 @@ public: virtual QString name() const = 0; virtual QString url() const = 0; - virtual int defaultPort() const = 0; virtual QString completionEndpoint() const = 0; virtual void prepareRequest(QJsonObject &request) = 0; diff --git a/providers/LMStudioProvider.cpp b/providers/LMStudioProvider.cpp index c3cc17c..946787d 100644 --- a/providers/LMStudioProvider.cpp +++ b/providers/LMStudioProvider.cpp @@ -39,12 +39,7 @@ QString LMStudioProvider::name() const QString LMStudioProvider::url() const { - return "http://localhost"; -} - -int LMStudioProvider::defaultPort() const -{ - return 1234; + return "http://localhost:1234"; } QString LMStudioProvider::completionEndpoint() const diff --git a/providers/LMStudioProvider.hpp b/providers/LMStudioProvider.hpp index a74107f..8285c32 100644 --- a/providers/LMStudioProvider.hpp +++ b/providers/LMStudioProvider.hpp @@ -30,7 +30,6 @@ public: QString name() const override; QString url() const override; - int defaultPort() const override; QString completionEndpoint() const override; void prepareRequest(QJsonObject &request) override; bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override; diff --git a/providers/OllamaProvider.cpp b/providers/OllamaProvider.cpp index 12f2f3a..4da417e 100644 --- a/providers/OllamaProvider.cpp +++ b/providers/OllamaProvider.cpp @@ -39,12 +39,7 @@ QString OllamaProvider::name() const QString OllamaProvider::url() const { - return "http://localhost"; -} - -int OllamaProvider::defaultPort() const -{ - return 11434; + return "http://localhost:11434"; } QString OllamaProvider::completionEndpoint() const diff --git a/providers/OllamaProvider.hpp b/providers/OllamaProvider.hpp index 585c9b6..229d1ae 100644 --- a/providers/OllamaProvider.hpp +++ b/providers/OllamaProvider.hpp @@ -30,7 +30,6 @@ public: QString name() const override; QString url() const override; - int defaultPort() const override; QString completionEndpoint() const override; void prepareRequest(QJsonObject &request) override; bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override; diff --git a/providers/OpenAICompatProvider.cpp b/providers/OpenAICompatProvider.cpp index a554562..9ec55b5 100644 --- a/providers/OpenAICompatProvider.cpp +++ b/providers/OpenAICompatProvider.cpp @@ -39,12 +39,7 @@ QString OpenAICompatProvider::name() const QString OpenAICompatProvider::url() const { - return "http://localhost"; -} - -int OpenAICompatProvider::defaultPort() const -{ - return 1234; + return "http://localhost:1234"; } QString OpenAICompatProvider::completionEndpoint() const diff --git a/providers/OpenAICompatProvider.h b/providers/OpenAICompatProvider.h index edb94a7..8ca5824 100644 --- a/providers/OpenAICompatProvider.h +++ b/providers/OpenAICompatProvider.h @@ -30,7 +30,6 @@ public: QString name() const override; QString url() const override; - int defaultPort() const override; QString completionEndpoint() const override; void prepareRequest(QJsonObject &request) override; bool handleResponse(QNetworkReply *reply, QString &accumulatedResponse) override;