From 928519a636ea4128cc1c02e81a03c5ef6593d15d Mon Sep 17 00:00:00 2001 From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com> Date: Wed, 1 Apr 2026 01:24:46 +0200 Subject: [PATCH] refactor: Remove validate request function --- LLMClientInterface.cpp | 9 ----- pluginllmcore/CMakeLists.txt | 1 - pluginllmcore/Provider.hpp | 1 - pluginllmcore/ValidationUtils.cpp | 57 --------------------------- pluginllmcore/ValidationUtils.hpp | 41 ------------------- providers/ClaudeProvider.cpp | 21 ---------- providers/ClaudeProvider.hpp | 1 - providers/GoogleAIProvider.cpp | 23 ----------- providers/GoogleAIProvider.hpp | 1 - providers/LMStudioProvider.cpp | 20 ---------- providers/LMStudioProvider.hpp | 1 - providers/LlamaCppProvider.cpp | 39 ------------------ providers/LlamaCppProvider.hpp | 1 - providers/MistralAIProvider.cpp | 29 -------------- providers/MistralAIProvider.hpp | 1 - providers/OllamaProvider.cpp | 41 ------------------- providers/OllamaProvider.hpp | 1 - providers/OpenAICompatProvider.cpp | 20 ---------- providers/OpenAICompatProvider.hpp | 1 - providers/OpenAIProvider.cpp | 20 ---------- providers/OpenAIProvider.hpp | 1 - providers/OpenAIResponsesProvider.cpp | 41 ------------------- providers/OpenAIResponsesProvider.hpp | 1 - test/LLMClientInterfaceTests.cpp | 6 --- 24 files changed, 378 deletions(-) delete mode 100644 pluginllmcore/ValidationUtils.cpp delete mode 100644 pluginllmcore/ValidationUtils.hpp diff --git a/LLMClientInterface.cpp b/LLMClientInterface.cpp index f5461e6..0d3b603 100644 --- a/LLMClientInterface.cpp +++ b/LLMClientInterface.cpp @@ -350,15 +350,6 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request) false, false); - auto errors = config.provider->validateRequest(config.providerRequest, promptTemplate->type()); - if (!errors.isEmpty()) { - QString error = QString("Request validation failed: %1").arg(errors.join("; ")); - LOG_MESSAGE("Validate errors for request:"); - LOG_MESSAGES(errors); - sendErrorResponse(request, error); - return; - } - connect( provider->client(), &::LLMCore::BaseClient::requestCompleted, diff --git a/pluginllmcore/CMakeLists.txt b/pluginllmcore/CMakeLists.txt index a2e2222..9072785 100644 --- a/pluginllmcore/CMakeLists.txt +++ b/pluginllmcore/CMakeLists.txt @@ -10,7 +10,6 @@ add_library(PluginLLMCore STATIC PromptTemplate.hpp PromptTemplateManager.hpp PromptTemplateManager.cpp RequestConfig.hpp - ValidationUtils.hpp ValidationUtils.cpp ProviderID.hpp HttpClient.hpp HttpClient.cpp DataBuffers.hpp diff --git a/pluginllmcore/Provider.hpp b/pluginllmcore/Provider.hpp index f33f84b..abd5eb2 100644 --- a/pluginllmcore/Provider.hpp +++ b/pluginllmcore/Provider.hpp @@ -70,7 +70,6 @@ public: bool isThinkingEnabled) = 0; virtual QFuture> getInstalledModels(const QString &url) = 0; - virtual QList validateRequest(const QJsonObject &request, TemplateType type) = 0; virtual QString apiKey() const = 0; virtual void prepareNetworkRequest(QNetworkRequest &networkRequest) const = 0; virtual ProviderID providerID() const = 0; diff --git a/pluginllmcore/ValidationUtils.cpp b/pluginllmcore/ValidationUtils.cpp deleted file mode 100644 index 4b8dbac..0000000 --- a/pluginllmcore/ValidationUtils.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2024-2025 Petr Mironychev - * - * This file is part of QodeAssist. - * - * QodeAssist is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * QodeAssist is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with QodeAssist. If not, see . - */ - -#include "ValidationUtils.hpp" - -#include - -namespace QodeAssist::PluginLLMCore { - -QStringList ValidationUtils::validateRequestFields( - const QJsonObject &request, const QJsonObject &templateObj) -{ - QStringList errors; - validateFields(request, templateObj, errors); - validateNestedObjects(request, templateObj, errors); - return errors; -} - -void ValidationUtils::validateFields( - const QJsonObject &request, const QJsonObject &templateObj, QStringList &errors) -{ - for (auto it = request.begin(); it != request.end(); ++it) { - if (!templateObj.contains(it.key())) { - errors << QString("unknown field '%1'").arg(it.key()); - } - } -} - -void ValidationUtils::validateNestedObjects( - const QJsonObject &request, const QJsonObject &templateObj, QStringList &errors) -{ - for (auto it = request.begin(); it != request.end(); ++it) { - if (templateObj.contains(it.key()) && it.value().isObject() - && templateObj[it.key()].isObject()) { - validateFields(it.value().toObject(), templateObj[it.key()].toObject(), errors); - validateNestedObjects(it.value().toObject(), templateObj[it.key()].toObject(), errors); - } - } -} - -} // namespace QodeAssist::PluginLLMCore diff --git a/pluginllmcore/ValidationUtils.hpp b/pluginllmcore/ValidationUtils.hpp deleted file mode 100644 index de9835d..0000000 --- a/pluginllmcore/ValidationUtils.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2024-2025 Petr Mironychev - * - * This file is part of QodeAssist. - * - * QodeAssist is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * QodeAssist is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with QodeAssist. If not, see . - */ - -#pragma once - -#include -#include - -namespace QodeAssist::PluginLLMCore { - -class ValidationUtils -{ -public: - static QStringList validateRequestFields( - const QJsonObject &request, const QJsonObject &templateObj); - -private: - static void validateFields( - const QJsonObject &request, const QJsonObject &templateObj, QStringList &errors); - - static void validateNestedObjects( - const QJsonObject &request, const QJsonObject &templateObj, QStringList &errors); -}; - -} // namespace QodeAssist::PluginLLMCore diff --git a/providers/ClaudeProvider.cpp b/providers/ClaudeProvider.cpp index 49aecf5..f755a3f 100644 --- a/providers/ClaudeProvider.cpp +++ b/providers/ClaudeProvider.cpp @@ -25,7 +25,6 @@ #include -#include "pluginllmcore/ValidationUtils.hpp" #include "logger/Logger.hpp" #include "settings/ChatAssistantSettings.hpp" #include "settings/CodeCompletionSettings.hpp" @@ -136,26 +135,6 @@ QFuture> ClaudeProvider::getInstalledModels(const QString &baseUr return m_client->listModels(); } -QList ClaudeProvider::validateRequest( - const QJsonObject &request, PluginLLMCore::TemplateType type) -{ - const auto templateReq = QJsonObject{ - {"model", {}}, - {"system", {}}, - {"messages", QJsonArray{{QJsonObject{{"role", {}}, {"content", {}}}}}}, - {"temperature", {}}, - {"max_tokens", {}}, - {"anthropic-version", {}}, - {"top_p", {}}, - {"top_k", {}}, - {"stop", QJsonArray{}}, - {"stream", {}}, - {"tools", {}}, - {"thinking", QJsonObject{{"type", {}}, {"budget_tokens", {}}}}}; - - return PluginLLMCore::ValidationUtils::validateRequestFields(request, templateReq); -} - QString ClaudeProvider::apiKey() const { return Settings::providerSettings().claudeApiKey(); diff --git a/providers/ClaudeProvider.hpp b/providers/ClaudeProvider.hpp index 2d0250c..ec443dd 100644 --- a/providers/ClaudeProvider.hpp +++ b/providers/ClaudeProvider.hpp @@ -43,7 +43,6 @@ public: bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - QList validateRequest(const QJsonObject &request, PluginLLMCore::TemplateType type) override; QString apiKey() const override; void prepareNetworkRequest(QNetworkRequest &networkRequest) const override; PluginLLMCore::ProviderID providerID() const override; diff --git a/providers/GoogleAIProvider.cpp b/providers/GoogleAIProvider.cpp index 5cdd6b7..ca7c90f 100644 --- a/providers/GoogleAIProvider.cpp +++ b/providers/GoogleAIProvider.cpp @@ -27,7 +27,6 @@ #include #include -#include "pluginllmcore/ValidationUtils.hpp" #include "logger/Logger.hpp" #include "settings/ChatAssistantSettings.hpp" #include "settings/CodeCompletionSettings.hpp" @@ -149,28 +148,6 @@ QFuture> GoogleAIProvider::getInstalledModels(const QString &base return m_client->listModels(); } -QList GoogleAIProvider::validateRequest( - const QJsonObject &request, PluginLLMCore::TemplateType type) -{ - QJsonObject templateReq; - - templateReq = QJsonObject{ - {"contents", QJsonArray{}}, - {"system_instruction", QJsonArray{}}, - {"generationConfig", - QJsonObject{ - {"temperature", {}}, - {"maxOutputTokens", {}}, - {"topP", {}}, - {"topK", {}}, - {"thinkingConfig", - QJsonObject{{"thinkingBudget", {}}, {"includeThoughts", {}}}}}}, - {"safetySettings", QJsonArray{}}, - {"tools", QJsonArray{}}}; - - return PluginLLMCore::ValidationUtils::validateRequestFields(request, templateReq); -} - QString GoogleAIProvider::apiKey() const { return Settings::providerSettings().googleAiApiKey(); diff --git a/providers/GoogleAIProvider.hpp b/providers/GoogleAIProvider.hpp index fe99de2..d5fb640 100644 --- a/providers/GoogleAIProvider.hpp +++ b/providers/GoogleAIProvider.hpp @@ -43,7 +43,6 @@ public: bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - QList validateRequest(const QJsonObject &request, PluginLLMCore::TemplateType type) override; QString apiKey() const override; void prepareNetworkRequest(QNetworkRequest &networkRequest) const override; PluginLLMCore::ProviderID providerID() const override; diff --git a/providers/LMStudioProvider.cpp b/providers/LMStudioProvider.cpp index bc39a47..282b3a8 100644 --- a/providers/LMStudioProvider.cpp +++ b/providers/LMStudioProvider.cpp @@ -21,7 +21,6 @@ #include -#include "pluginllmcore/ValidationUtils.hpp" #include "tools/ToolsRegistration.hpp" #include "logger/Logger.hpp" #include "settings/ChatAssistantSettings.hpp" @@ -70,25 +69,6 @@ QFuture> LMStudioProvider::getInstalledModels(const QString &url) return m_client->listModels(); } -QList LMStudioProvider::validateRequest( - const QJsonObject &request, PluginLLMCore::TemplateType type) -{ - const auto templateReq = QJsonObject{ - {"model", {}}, - {"messages", QJsonArray{{QJsonObject{{"role", {}}, {"content", {}}}}}}, - {"temperature", {}}, - {"max_tokens", {}}, - {"top_p", {}}, - {"top_k", {}}, - {"frequency_penalty", {}}, - {"presence_penalty", {}}, - {"stop", QJsonArray{}}, - {"stream", {}}, - {"tools", {}}}; - - return PluginLLMCore::ValidationUtils::validateRequestFields(request, templateReq); -} - QString LMStudioProvider::apiKey() const { return {}; diff --git a/providers/LMStudioProvider.hpp b/providers/LMStudioProvider.hpp index 3145170..ca2a304 100644 --- a/providers/LMStudioProvider.hpp +++ b/providers/LMStudioProvider.hpp @@ -42,7 +42,6 @@ public: bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - QList validateRequest(const QJsonObject &request, PluginLLMCore::TemplateType type) override; QString apiKey() const override; void prepareNetworkRequest(QNetworkRequest &networkRequest) const override; PluginLLMCore::ProviderID providerID() const override; diff --git a/providers/LlamaCppProvider.cpp b/providers/LlamaCppProvider.cpp index ad3140e..5c738f1 100644 --- a/providers/LlamaCppProvider.cpp +++ b/providers/LlamaCppProvider.cpp @@ -20,7 +20,6 @@ #include "LlamaCppProvider.hpp" #include -#include "pluginllmcore/ValidationUtils.hpp" #include "logger/Logger.hpp" #include "settings/ChatAssistantSettings.hpp" #include "settings/CodeCompletionSettings.hpp" @@ -111,44 +110,6 @@ QFuture> LlamaCppProvider::getInstalledModels(const QString &) return QtFuture::makeReadyFuture(QList{}); } -QList LlamaCppProvider::validateRequest( - const QJsonObject &request, PluginLLMCore::TemplateType type) -{ - if (type == PluginLLMCore::TemplateType::FIM) { - const auto infillReq = QJsonObject{ - {"model", {}}, - {"input_prefix", {}}, - {"input_suffix", {}}, - {"input_extra", {}}, - {"prompt", {}}, - {"temperature", {}}, - {"top_p", {}}, - {"top_k", {}}, - {"max_tokens", {}}, - {"frequency_penalty", {}}, - {"presence_penalty", {}}, - {"stop", QJsonArray{}}, - {"stream", {}}}; - - return PluginLLMCore::ValidationUtils::validateRequestFields(request, infillReq); - } else { - const auto chatReq = QJsonObject{ - {"model", {}}, - {"messages", QJsonArray{{QJsonObject{{"role", {}}, {"content", {}}}}}}, - {"temperature", {}}, - {"max_tokens", {}}, - {"top_p", {}}, - {"top_k", {}}, - {"frequency_penalty", {}}, - {"presence_penalty", {}}, - {"stop", QJsonArray{}}, - {"stream", {}}, - {"tools", {}}}; - - return PluginLLMCore::ValidationUtils::validateRequestFields(request, chatReq); - } -} - QString LlamaCppProvider::apiKey() const { return {}; diff --git a/providers/LlamaCppProvider.hpp b/providers/LlamaCppProvider.hpp index 8924d24..2ed307c 100644 --- a/providers/LlamaCppProvider.hpp +++ b/providers/LlamaCppProvider.hpp @@ -43,7 +43,6 @@ public: bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - QList validateRequest(const QJsonObject &request, PluginLLMCore::TemplateType type) override; QString apiKey() const override; void prepareNetworkRequest(QNetworkRequest &networkRequest) const override; PluginLLMCore::ProviderID providerID() const override; diff --git a/providers/MistralAIProvider.cpp b/providers/MistralAIProvider.cpp index 6b09374..bbd4f7b 100644 --- a/providers/MistralAIProvider.cpp +++ b/providers/MistralAIProvider.cpp @@ -20,7 +20,6 @@ #include "MistralAIProvider.hpp" #include -#include "pluginllmcore/ValidationUtils.hpp" #include "logger/Logger.hpp" #include "settings/ChatAssistantSettings.hpp" #include "settings/CodeCompletionSettings.hpp" @@ -69,34 +68,6 @@ QFuture> MistralAIProvider::getInstalledModels(const QString &url return m_client->listModels(); } -QList MistralAIProvider::validateRequest( - const QJsonObject &request, PluginLLMCore::TemplateType type) -{ - const auto fimReq = QJsonObject{ - {"model", {}}, - {"max_tokens", {}}, - {"stream", {}}, - {"temperature", {}}, - {"prompt", {}}, - {"suffix", {}}}; - - const auto templateReq = QJsonObject{ - {"model", {}}, - {"messages", QJsonArray{{QJsonObject{{"role", {}}, {"content", {}}}}}}, - {"temperature", {}}, - {"max_tokens", {}}, - {"top_p", {}}, - {"top_k", {}}, - {"frequency_penalty", {}}, - {"presence_penalty", {}}, - {"stop", QJsonArray{}}, - {"stream", {}}, - {"tools", {}}}; - - return PluginLLMCore::ValidationUtils::validateRequestFields( - request, type == PluginLLMCore::TemplateType::FIM ? fimReq : templateReq); -} - QString MistralAIProvider::apiKey() const { return Settings::providerSettings().mistralAiApiKey(); diff --git a/providers/MistralAIProvider.hpp b/providers/MistralAIProvider.hpp index f7ff0b5..112788f 100644 --- a/providers/MistralAIProvider.hpp +++ b/providers/MistralAIProvider.hpp @@ -42,7 +42,6 @@ public: bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - QList validateRequest(const QJsonObject &request, PluginLLMCore::TemplateType type) override; QString apiKey() const override; void prepareNetworkRequest(QNetworkRequest &networkRequest) const override; PluginLLMCore::ProviderID providerID() const override; diff --git a/providers/OllamaProvider.cpp b/providers/OllamaProvider.cpp index a6091a0..e2f014c 100644 --- a/providers/OllamaProvider.cpp +++ b/providers/OllamaProvider.cpp @@ -25,7 +25,6 @@ #include #include -#include "pluginllmcore/ValidationUtils.hpp" #include "logger/Logger.hpp" #include "settings/ChatAssistantSettings.hpp" #include "settings/CodeCompletionSettings.hpp" @@ -140,46 +139,6 @@ QFuture> OllamaProvider::getInstalledModels(const QString &baseUr return m_client->listModels(); } -QList OllamaProvider::validateRequest(const QJsonObject &request, PluginLLMCore::TemplateType type) -{ - const auto fimReq = QJsonObject{ - {"keep_alive", {}}, - {"model", {}}, - {"stream", {}}, - {"prompt", {}}, - {"suffix", {}}, - {"system", {}}, - {"images", QJsonArray{}}, - {"options", - QJsonObject{ - {"temperature", {}}, - {"stop", {}}, - {"top_p", {}}, - {"top_k", {}}, - {"num_predict", {}}, - {"frequency_penalty", {}}, - {"presence_penalty", {}}}}}; - - const auto messageReq = QJsonObject{ - {"keep_alive", {}}, - {"model", {}}, - {"stream", {}}, - {"messages", QJsonArray{{QJsonObject{{"role", {}}, {"content", {}}, {"images", QJsonArray{}}}}}}, - {"tools", QJsonArray{}}, - {"options", - QJsonObject{ - {"temperature", {}}, - {"stop", {}}, - {"top_p", {}}, - {"top_k", {}}, - {"num_predict", {}}, - {"frequency_penalty", {}}, - {"presence_penalty", {}}}}}; - - return PluginLLMCore::ValidationUtils::validateRequestFields( - request, type == PluginLLMCore::TemplateType::FIM ? fimReq : messageReq); -} - QString OllamaProvider::apiKey() const { return {}; diff --git a/providers/OllamaProvider.hpp b/providers/OllamaProvider.hpp index 63e5db5..afd3b2a 100644 --- a/providers/OllamaProvider.hpp +++ b/providers/OllamaProvider.hpp @@ -43,7 +43,6 @@ public: bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - QList validateRequest(const QJsonObject &request, PluginLLMCore::TemplateType type) override; QString apiKey() const override; void prepareNetworkRequest(QNetworkRequest &networkRequest) const override; PluginLLMCore::ProviderID providerID() const override; diff --git a/providers/OpenAICompatProvider.cpp b/providers/OpenAICompatProvider.cpp index f3b92d5..1227663 100644 --- a/providers/OpenAICompatProvider.cpp +++ b/providers/OpenAICompatProvider.cpp @@ -20,7 +20,6 @@ #include "OpenAICompatProvider.hpp" #include -#include "pluginllmcore/ValidationUtils.hpp" #include "tools/ToolsRegistration.hpp" #include "logger/Logger.hpp" #include "settings/ChatAssistantSettings.hpp" @@ -113,25 +112,6 @@ QFuture> OpenAICompatProvider::getInstalledModels(const QString & return QtFuture::makeReadyFuture(QList{}); } -QList OpenAICompatProvider::validateRequest( - const QJsonObject &request, PluginLLMCore::TemplateType type) -{ - const auto templateReq = QJsonObject{ - {"model", {}}, - {"messages", QJsonArray{{QJsonObject{{"role", {}}, {"content", {}}}}}}, - {"temperature", {}}, - {"max_tokens", {}}, - {"top_p", {}}, - {"top_k", {}}, - {"frequency_penalty", {}}, - {"presence_penalty", {}}, - {"stop", QJsonArray{}}, - {"stream", {}}, - {"tools", {}}}; - - return PluginLLMCore::ValidationUtils::validateRequestFields(request, templateReq); -} - QString OpenAICompatProvider::apiKey() const { return Settings::providerSettings().openAiCompatApiKey(); diff --git a/providers/OpenAICompatProvider.hpp b/providers/OpenAICompatProvider.hpp index a106309..9413fb4 100644 --- a/providers/OpenAICompatProvider.hpp +++ b/providers/OpenAICompatProvider.hpp @@ -42,7 +42,6 @@ public: bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - QList validateRequest(const QJsonObject &request, PluginLLMCore::TemplateType type) override; QString apiKey() const override; void prepareNetworkRequest(QNetworkRequest &networkRequest) const override; PluginLLMCore::ProviderID providerID() const override; diff --git a/providers/OpenAIProvider.cpp b/providers/OpenAIProvider.cpp index 45eac6f..5f388da 100644 --- a/providers/OpenAIProvider.cpp +++ b/providers/OpenAIProvider.cpp @@ -21,7 +21,6 @@ #include #include "tools/ToolsRegistration.hpp" -#include "pluginllmcore/ValidationUtils.hpp" #include "logger/Logger.hpp" #include "settings/ChatAssistantSettings.hpp" #include "settings/CodeCompletionSettings.hpp" @@ -143,25 +142,6 @@ QFuture> OpenAIProvider::getInstalledModels(const QString &baseUr }); } -QList OpenAIProvider::validateRequest(const QJsonObject &request, PluginLLMCore::TemplateType type) -{ - const auto templateReq = QJsonObject{ - {"model", {}}, - {"messages", QJsonArray{{QJsonObject{{"role", {}}, {"content", {}}}}}}, - {"temperature", {}}, - {"max_tokens", {}}, - {"max_completion_tokens", {}}, // New parameter for newer models - {"top_p", {}}, - {"top_k", {}}, - {"frequency_penalty", {}}, - {"presence_penalty", {}}, - {"stop", QJsonArray{}}, - {"stream", {}}, - {"tools", {}}}; - - return PluginLLMCore::ValidationUtils::validateRequestFields(request, templateReq); -} - QString OpenAIProvider::apiKey() const { return Settings::providerSettings().openAiApiKey(); diff --git a/providers/OpenAIProvider.hpp b/providers/OpenAIProvider.hpp index b72ff86..12461d8 100644 --- a/providers/OpenAIProvider.hpp +++ b/providers/OpenAIProvider.hpp @@ -42,7 +42,6 @@ public: bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - QList validateRequest(const QJsonObject &request, PluginLLMCore::TemplateType type) override; QString apiKey() const override; void prepareNetworkRequest(QNetworkRequest &networkRequest) const override; PluginLLMCore::ProviderID providerID() const override; diff --git a/providers/OpenAIResponsesProvider.cpp b/providers/OpenAIResponsesProvider.cpp index edcf483..910f4eb 100644 --- a/providers/OpenAIResponsesProvider.cpp +++ b/providers/OpenAIResponsesProvider.cpp @@ -21,7 +21,6 @@ #include #include "tools/ToolsRegistration.hpp" -#include "pluginllmcore/ValidationUtils.hpp" #include "logger/Logger.hpp" #include "settings/ChatAssistantSettings.hpp" #include "settings/CodeCompletionSettings.hpp" @@ -163,46 +162,6 @@ QFuture> OpenAIResponsesProvider::getInstalledModels(const QStrin }); } -QList OpenAIResponsesProvider::validateRequest( - const QJsonObject &request, PluginLLMCore::TemplateType type) -{ - Q_UNUSED(type); - - QList errors; - - if (!request.contains("input")) { - errors.append("Missing required field: input"); - return errors; - } - - const QJsonValue inputValue = request["input"]; - if (!inputValue.isString() && !inputValue.isArray()) { - errors.append("Field 'input' must be either a string or an array"); - } - - if (request.contains("max_output_tokens") && !request["max_output_tokens"].isDouble()) { - errors.append("Field 'max_output_tokens' must be a number"); - } - - if (request.contains("top_p") && !request["top_p"].isDouble()) { - errors.append("Field 'top_p' must be a number"); - } - - if (request.contains("reasoning") && !request["reasoning"].isObject()) { - errors.append("Field 'reasoning' must be an object"); - } - - if (request.contains("stream") && !request["stream"].isBool()) { - errors.append("Field 'stream' must be a boolean"); - } - - if (request.contains("tools") && !request["tools"].isArray()) { - errors.append("Field 'tools' must be an array"); - } - - return errors; -} - QString OpenAIResponsesProvider::apiKey() const { return Settings::providerSettings().openAiApiKey(); diff --git a/providers/OpenAIResponsesProvider.hpp b/providers/OpenAIResponsesProvider.hpp index ba363ad..1dfc983 100644 --- a/providers/OpenAIResponsesProvider.hpp +++ b/providers/OpenAIResponsesProvider.hpp @@ -42,7 +42,6 @@ public: bool isToolsEnabled, bool isThinkingEnabled) override; QFuture> getInstalledModels(const QString &url) override; - QList validateRequest(const QJsonObject &request, PluginLLMCore::TemplateType type) override; QString apiKey() const override; void prepareNetworkRequest(QNetworkRequest &networkRequest) const override; PluginLLMCore::ProviderID providerID() const override; diff --git a/test/LLMClientInterfaceTests.cpp b/test/LLMClientInterfaceTests.cpp index dab3bb9..6a4f472 100644 --- a/test/LLMClientInterfaceTests.cpp +++ b/test/LLMClientInterfaceTests.cpp @@ -83,12 +83,6 @@ public: return QtFuture::makeReadyFuture(QList{}); } - QStringList validateRequest( - const QJsonObject &request, LLMCore::TemplateType templateType) override - { - return {}; - } - QString apiKey() const override { return "mock_api_key"; } void prepareNetworkRequest(QNetworkRequest &request) const override {} LLMCore::ProviderID providerID() const override { return LLMCore::ProviderID::OpenAI; }