From 8254bca2cc2dc0ca3086d7a4d37aa81a992a1f5a Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Thu, 13 Nov 2025 16:48:19 +0100 Subject: [PATCH] Refactor API parameter parsing to remove unnecessary arguments --- .../Provider/AlibabaCloud/ProviderAlibabaCloud.cs | 2 +- .../Provider/Anthropic/ProviderAnthropic.cs | 2 +- app/MindWork AI Studio/Provider/BaseProvider.cs | 5 +---- app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs | 2 +- .../Provider/Fireworks/ProviderFireworks.cs | 2 +- app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs | 2 +- app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs | 2 +- app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs | 2 +- .../Provider/Helmholtz/ProviderHelmholtz.cs | 2 +- .../Provider/HuggingFace/ProviderHuggingFace.cs | 2 +- app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs | 2 +- app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs | 2 +- .../Provider/Perplexity/ProviderPerplexity.cs | 2 +- .../Provider/SelfHosted/ProviderSelfHosted.cs | 2 +- app/MindWork AI Studio/Provider/X/ProviderX.cs | 2 +- 15 files changed, 15 insertions(+), 18 deletions(-) diff --git a/app/MindWork AI Studio/Provider/AlibabaCloud/ProviderAlibabaCloud.cs b/app/MindWork AI Studio/Provider/AlibabaCloud/ProviderAlibabaCloud.cs index 13e768e5..e7d3e523 100644 --- a/app/MindWork AI Studio/Provider/AlibabaCloud/ProviderAlibabaCloud.cs +++ b/app/MindWork AI Studio/Provider/AlibabaCloud/ProviderAlibabaCloud.cs @@ -37,7 +37,7 @@ public sealed class ProviderAlibabaCloud() : BaseProvider("https://dashscope-int }; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters); + var apiParameters = this.ParseAdditionalApiParameters(); // Prepare the AlibabaCloud HTTP chat request: var alibabaCloudChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest diff --git a/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs b/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs index 3fa4ccf3..d11c309c 100644 --- a/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs +++ b/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs @@ -28,7 +28,7 @@ public sealed class ProviderAnthropic() : BaseProvider("https://api.anthropic.co yield break; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters, "system"); + var apiParameters = this.ParseAdditionalApiParameters("system"); // Prepare the Anthropic HTTP chat request: var chatRequest = JsonSerializer.Serialize(new ChatRequest diff --git a/app/MindWork AI Studio/Provider/BaseProvider.cs b/app/MindWork AI Studio/Provider/BaseProvider.cs index cab22cbc..a0e07c81 100644 --- a/app/MindWork AI Studio/Provider/BaseProvider.cs +++ b/app/MindWork AI Studio/Provider/BaseProvider.cs @@ -522,18 +522,15 @@ public abstract class BaseProvider : IProvider, ISecretId /// Parse and convert API parameters from a provided JSON string into a dictionary, /// optionally merging additional parameters and removing specific keys. /// - /// A JSON string (without surrounding curly brackets) - /// containing the API parameters to be parsed. /// Optional list of keys to remove from the final dictionary /// (case-insensitive). The parameters stream, model, and messages are removed by default. protected IDictionary ParseAdditionalApiParameters( - string additionalUserProvidedParameters, params List keysToRemove) { try { // Wrap the user-provided parameters in curly brackets to form a valid JSON object: - var json = $"{{{additionalUserProvidedParameters}}}"; + var json = $"{{{this.AdditionalJsonApiParameters}}}"; var jsonDoc = JsonSerializer.Deserialize(json, JSON_SERIALIZER_OPTIONS); var dict = ConvertToDictionary(jsonDoc); diff --git a/app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs b/app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs index db49977d..1063262c 100644 --- a/app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs +++ b/app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs @@ -37,7 +37,7 @@ public sealed class ProviderDeepSeek() : BaseProvider("https://api.deepseek.com/ }; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters); + var apiParameters = this.ParseAdditionalApiParameters(); // Prepare the DeepSeek HTTP chat request: var deepSeekChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest diff --git a/app/MindWork AI Studio/Provider/Fireworks/ProviderFireworks.cs b/app/MindWork AI Studio/Provider/Fireworks/ProviderFireworks.cs index 410b1895..a02c692c 100644 --- a/app/MindWork AI Studio/Provider/Fireworks/ProviderFireworks.cs +++ b/app/MindWork AI Studio/Provider/Fireworks/ProviderFireworks.cs @@ -37,7 +37,7 @@ public class ProviderFireworks() : BaseProvider("https://api.fireworks.ai/infere }; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters); + var apiParameters = this.ParseAdditionalApiParameters(); // Prepare the Fireworks HTTP chat request: var fireworksChatRequest = JsonSerializer.Serialize(new ChatRequest diff --git a/app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs b/app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs index 097f2652..2a56bfd4 100644 --- a/app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs +++ b/app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs @@ -37,7 +37,7 @@ public sealed class ProviderGWDG() : BaseProvider("https://chat-ai.academiccloud }; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters); + var apiParameters = this.ParseAdditionalApiParameters(); // Prepare the GWDG HTTP chat request: var gwdgChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest diff --git a/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs b/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs index ababf742..8dcf0c96 100644 --- a/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs +++ b/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs @@ -37,7 +37,7 @@ public class ProviderGoogle() : BaseProvider("https://generativelanguage.googlea }; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters); + var apiParameters = this.ParseAdditionalApiParameters(); // Prepare the Google HTTP chat request: var geminiChatRequest = JsonSerializer.Serialize(new ChatRequest diff --git a/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs b/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs index 89eab391..5cc7b3df 100644 --- a/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs +++ b/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs @@ -37,7 +37,7 @@ public class ProviderGroq() : BaseProvider("https://api.groq.com/openai/v1/", LO }; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters); + var apiParameters = this.ParseAdditionalApiParameters(); // Prepare the OpenAI HTTP chat request: var groqChatRequest = JsonSerializer.Serialize(new ChatRequest diff --git a/app/MindWork AI Studio/Provider/Helmholtz/ProviderHelmholtz.cs b/app/MindWork AI Studio/Provider/Helmholtz/ProviderHelmholtz.cs index 5145d43e..f0b69bb4 100644 --- a/app/MindWork AI Studio/Provider/Helmholtz/ProviderHelmholtz.cs +++ b/app/MindWork AI Studio/Provider/Helmholtz/ProviderHelmholtz.cs @@ -37,7 +37,7 @@ public sealed class ProviderHelmholtz() : BaseProvider("https://api.helmholtz-bl }; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters); + var apiParameters = this.ParseAdditionalApiParameters(); // Prepare the Helmholtz HTTP chat request: var helmholtzChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest diff --git a/app/MindWork AI Studio/Provider/HuggingFace/ProviderHuggingFace.cs b/app/MindWork AI Studio/Provider/HuggingFace/ProviderHuggingFace.cs index 22602d86..6cfb8027 100644 --- a/app/MindWork AI Studio/Provider/HuggingFace/ProviderHuggingFace.cs +++ b/app/MindWork AI Studio/Provider/HuggingFace/ProviderHuggingFace.cs @@ -42,7 +42,7 @@ public sealed class ProviderHuggingFace : BaseProvider }; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters); + var apiParameters = this.ParseAdditionalApiParameters(); // Prepare the HuggingFace HTTP chat request: var huggingfaceChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest diff --git a/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs b/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs index f9a5550c..299f38c9 100644 --- a/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs +++ b/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs @@ -35,7 +35,7 @@ public sealed class ProviderMistral() : BaseProvider("https://api.mistral.ai/v1/ }; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters); + var apiParameters = this.ParseAdditionalApiParameters(); // Prepare the Mistral HTTP chat request: var mistralChatRequest = JsonSerializer.Serialize(new ChatRequest diff --git a/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs b/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs index f4ed57dd..7da1013f 100644 --- a/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs +++ b/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs @@ -87,7 +87,7 @@ public sealed class ProviderOpenAI() : BaseProvider("https://api.openai.com/v1/" // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters, "input", "store", "tools"); + var apiParameters = this.ParseAdditionalApiParameters("input", "store", "tools"); // // Create the request: either for the Responses API or the Chat Completion API diff --git a/app/MindWork AI Studio/Provider/Perplexity/ProviderPerplexity.cs b/app/MindWork AI Studio/Provider/Perplexity/ProviderPerplexity.cs index ed0a30ca..a15a7e3a 100644 --- a/app/MindWork AI Studio/Provider/Perplexity/ProviderPerplexity.cs +++ b/app/MindWork AI Studio/Provider/Perplexity/ProviderPerplexity.cs @@ -46,7 +46,7 @@ public sealed class ProviderPerplexity() : BaseProvider("https://api.perplexity. }; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters); + var apiParameters = this.ParseAdditionalApiParameters(); // Prepare the Perplexity HTTP chat request: var perplexityChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest diff --git a/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs b/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs index f7ab7ac3..abb15532 100644 --- a/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs +++ b/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs @@ -33,7 +33,7 @@ public sealed class ProviderSelfHosted(Host host, string hostname) : BaseProvide }; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters); + var apiParameters = this.ParseAdditionalApiParameters(); // Prepare the OpenAI HTTP chat request: var providerChatRequest = JsonSerializer.Serialize(new ChatRequest diff --git a/app/MindWork AI Studio/Provider/X/ProviderX.cs b/app/MindWork AI Studio/Provider/X/ProviderX.cs index 7e877acb..b1743c53 100644 --- a/app/MindWork AI Studio/Provider/X/ProviderX.cs +++ b/app/MindWork AI Studio/Provider/X/ProviderX.cs @@ -37,7 +37,7 @@ public sealed class ProviderX() : BaseProvider("https://api.x.ai/v1/", LOGGER) }; // Parse the API parameters: - var apiParameters = this.ParseAdditionalApiParameters(this.AdditionalJsonApiParameters); + var apiParameters = this.ParseAdditionalApiParameters(); // Prepare the xAI HTTP chat request: var xChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest