Improved variable names

This commit is contained in:
Thorsten Sommer 2025-11-13 16:18:29 +01:00
parent 8551ba3ee5
commit f0ba5b3671
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
22 changed files with 47 additions and 50 deletions

View File

@ -72,7 +72,7 @@ public partial class SettingsPanelProviders : SettingsPanelBase
{ x => x.IsEditing, true },
{ x => x.DataHost, provider.Host },
{ x => x.HFInferenceProviderId, provider.HFInferenceProvider },
{ x => x.ExpertProviderApiParameters, provider.ExpertProviderApiParameters },
{ x => x.AdditionalJsonApiParameters, provider.AdditionalJsonApiParameters },
};
var dialogReference = await this.DialogService.ShowAsync<ProviderDialog>(T("Edit LLM Provider"), dialogParameters, DialogOptions.FULLSCREEN);

View File

@ -131,15 +131,15 @@
/>
<MudStack>
<MudButton OnClick="@this.ToggleProviderExpertSettings">
@(this.showExpertProviderSettings ? @T("Hide Expert Settings") : @T("Show Expert Settings"))
<MudButton OnClick="@this.ToggleExpertSettings">
@(this.showExpertSettings ? T("Hide Expert Settings") : T("Show Expert Settings"))
</MudButton>
<MudDivider />
<MudCollapse Expanded="@this.showExpertProviderSettings" Class="@this.GetExpertStyles">
<MudCollapse Expanded="@this.showExpertSettings" Class="@this.GetExpertStyles">
<MudJustifiedText Class="mb-5">
@T("Please be aware: This section is for experts only. You are responsible for verifying the correctness of the additional parameters you provide to the API call. By default, AI Studio uses the OpenAI-compatible chat completions API, when that it is supported by the underlying service and model.")
</MudJustifiedText>
<MudTextField T="string" Label=@T("Additional API parameters") Variant="Variant.Outlined" Lines="4" AutoGrow="true" MaxLines="10" HelperText=@T("""Add the parameters in proper JSON formatting, e.g., "temperature": 0.5. Remove trailing commas. The usual surrounding curly brackets {} must not be used, though.""") Placeholder="@GetPlaceholderExpertSettings" @bind-Value="@this.ExpertProviderApiParameters" OnBlur="@this.OnInputChangeExpertSettings"/>
<MudTextField T="string" Label=@T("Additional API parameters") Variant="Variant.Outlined" Lines="4" AutoGrow="true" MaxLines="10" HelperText=@T("""Add the parameters in proper JSON formatting, e.g., "temperature": 0.5. Remove trailing commas. The usual surrounding curly brackets {} must not be used, though.""") Placeholder="@GetPlaceholderExpertSettings" @bind-Value="@this.AdditionalJsonApiParameters" OnBlur="@this.OnInputChangeExpertSettings"/>
</MudCollapse>
</MudStack>
</MudForm>

View File

@ -79,7 +79,7 @@ public partial class ProviderDialog : MSGComponentBase, ISecretId
public bool IsEditing { get; init; }
[Parameter]
public string ExpertProviderApiParameters { get; set; } = string.Empty;
public string AdditionalJsonApiParameters { get; set; } = string.Empty;
[Inject]
private RustService RustService { get; init; } = null!;
@ -97,7 +97,7 @@ public partial class ProviderDialog : MSGComponentBase, ISecretId
private string dataManuallyModel = string.Empty;
private string dataAPIKeyStorageIssue = string.Empty;
private string dataEditingPreviousInstanceName = string.Empty;
private bool showExpertProviderSettings;
private bool showExpertSettings;
// We get the form reference from Blazor code to validate it manually:
private MudForm form = null!;
@ -139,7 +139,7 @@ public partial class ProviderDialog : MSGComponentBase, ISecretId
Hostname = cleanedHostname.EndsWith('/') ? cleanedHostname[..^1] : cleanedHostname,
Host = this.DataHost,
HFInferenceProvider = this.HFInferenceProviderId,
ExpertProviderApiParameters = this.ExpertProviderApiParameters,
AdditionalJsonApiParameters = this.AdditionalJsonApiParameters,
};
}
@ -155,7 +155,7 @@ public partial class ProviderDialog : MSGComponentBase, ISecretId
this.UsedInstanceNames = this.SettingsManager.ConfigurationData.Providers.Select(x => x.InstanceName.ToLowerInvariant()).ToList();
#pragma warning restore MWAIS0001
this.showExpertProviderSettings = !string.IsNullOrWhiteSpace(this.ExpertProviderApiParameters);
this.showExpertSettings = !string.IsNullOrWhiteSpace(this.AdditionalJsonApiParameters);
// When editing, we need to load the data:
if(this.IsEditing)
@ -276,17 +276,14 @@ public partial class ProviderDialog : MSGComponentBase, ISecretId
_ => T("API Key"),
};
private void ToggleProviderExpertSettings()
{
this.showExpertProviderSettings = !this.showExpertProviderSettings;
}
private void ToggleExpertSettings() => this.showExpertSettings = !this.showExpertSettings;
private void OnInputChangeExpertSettings()
{
this.ExpertProviderApiParameters = this.ExpertProviderApiParameters.TrimEnd(',', ' ');
this.AdditionalJsonApiParameters = this.AdditionalJsonApiParameters.Trim().TrimEnd(',', ' ');
}
private string GetExpertStyles => this.showExpertProviderSettings ? "border-2 border-dashed rounded pa-2" : string.Empty;
private string GetExpertStyles => this.showExpertSettings ? "border-2 border-dashed rounded pa-2" : string.Empty;
private static string GetPlaceholderExpertSettings =>
"""

View File

@ -37,7 +37,7 @@ public sealed class ProviderAlibabaCloud() : BaseProvider("https://dashscope-int
};
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters);
// Prepare the AlibabaCloud HTTP chat request:
var alibabaCloudChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest

View File

@ -28,7 +28,7 @@ public sealed class ProviderAnthropic() : BaseProvider("https://api.anthropic.co
yield break;
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters, ["system"]);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters, ["system"]);
// Prepare the Anthropic HTTP chat request:
var chatRequest = JsonSerializer.Serialize(new ChatRequest

View File

@ -66,7 +66,7 @@ public abstract class BaseProvider : IProvider, ISecretId
public abstract string InstanceName { get; set; }
/// <inheritdoc />
public string ExpertProviderApiParameters { get; init; } = string.Empty;
public string AdditionalJsonApiParameters { get; init; } = string.Empty;
/// <inheritdoc />
public abstract IAsyncEnumerable<ContentStreamChunk> StreamChatCompletion(Model chatModel, ChatThread chatThread, SettingsManager settingsManager, CancellationToken token = default);

View File

@ -37,7 +37,7 @@ public sealed class ProviderDeepSeek() : BaseProvider("https://api.deepseek.com/
};
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters);
// Prepare the DeepSeek HTTP chat request:
var deepSeekChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest

View File

@ -37,7 +37,7 @@ public class ProviderFireworks() : BaseProvider("https://api.fireworks.ai/infere
};
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters);
// Prepare the Fireworks HTTP chat request:
var fireworksChatRequest = JsonSerializer.Serialize(new ChatRequest

View File

@ -37,7 +37,7 @@ public sealed class ProviderGWDG() : BaseProvider("https://chat-ai.academiccloud
};
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters);
// Prepare the GWDG HTTP chat request:
var gwdgChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest

View File

@ -37,7 +37,7 @@ public class ProviderGoogle() : BaseProvider("https://generativelanguage.googlea
};
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters);
// Prepare the Google HTTP chat request:
var geminiChatRequest = JsonSerializer.Serialize(new ChatRequest

View File

@ -37,7 +37,7 @@ public class ProviderGroq() : BaseProvider("https://api.groq.com/openai/v1/", LO
};
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters);
// Prepare the OpenAI HTTP chat request:
var groqChatRequest = JsonSerializer.Serialize(new ChatRequest

View File

@ -37,7 +37,7 @@ public sealed class ProviderHelmholtz() : BaseProvider("https://api.helmholtz-bl
};
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters);
// Prepare the Helmholtz HTTP chat request:
var helmholtzChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest

View File

@ -42,7 +42,7 @@ public sealed class ProviderHuggingFace : BaseProvider
};
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters);
// Prepare the HuggingFace HTTP chat request:
var huggingfaceChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest

View File

@ -22,7 +22,7 @@ public interface IProvider
/// <summary>
/// The additional API parameters.
/// </summary>
public string ExpertProviderApiParameters { get; }
public string AdditionalJsonApiParameters { get; }
/// <summary>
/// Starts a chat completion stream.

View File

@ -144,7 +144,7 @@ public static class LLMProvidersExtensions
/// <returns>The provider instance.</returns>
public static IProvider CreateProvider(this AIStudio.Settings.Provider providerSettings)
{
return providerSettings.UsedLLMProvider.CreateProvider(providerSettings.InstanceName, providerSettings.Host, providerSettings.Hostname, providerSettings.Model, providerSettings.HFInferenceProvider, providerSettings.ExpertProviderApiParameters);
return providerSettings.UsedLLMProvider.CreateProvider(providerSettings.InstanceName, providerSettings.Host, providerSettings.Hostname, providerSettings.Model, providerSettings.HFInferenceProvider, providerSettings.AdditionalJsonApiParameters);
}
/// <summary>
@ -163,23 +163,23 @@ public static class LLMProvidersExtensions
{
return provider switch
{
LLMProviders.OPEN_AI => new ProviderOpenAI { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.ANTHROPIC => new ProviderAnthropic { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.MISTRAL => new ProviderMistral { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.GOOGLE => new ProviderGoogle { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.X => new ProviderX { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.DEEP_SEEK => new ProviderDeepSeek { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.ALIBABA_CLOUD => new ProviderAlibabaCloud { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.PERPLEXITY => new ProviderPerplexity { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.OPEN_AI => new ProviderOpenAI { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.ANTHROPIC => new ProviderAnthropic { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.MISTRAL => new ProviderMistral { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.GOOGLE => new ProviderGoogle { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.X => new ProviderX { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.DEEP_SEEK => new ProviderDeepSeek { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.ALIBABA_CLOUD => new ProviderAlibabaCloud { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.PERPLEXITY => new ProviderPerplexity { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.GROQ => new ProviderGroq { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.FIREWORKS => new ProviderFireworks { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.HUGGINGFACE => new ProviderHuggingFace(inferenceProvider, model) { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.GROQ => new ProviderGroq { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.FIREWORKS => new ProviderFireworks { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.HUGGINGFACE => new ProviderHuggingFace(inferenceProvider, model) { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.SELF_HOSTED => new ProviderSelfHosted(host, hostname) { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.SELF_HOSTED => new ProviderSelfHosted(host, hostname) { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.HELMHOLTZ => new ProviderHelmholtz { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.GWDG => new ProviderGWDG { InstanceName = instanceName, ExpertProviderApiParameters = expertProviderApiParameter },
LLMProviders.HELMHOLTZ => new ProviderHelmholtz { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
LLMProviders.GWDG => new ProviderGWDG { InstanceName = instanceName, AdditionalJsonApiParameters = expertProviderApiParameter },
_ => new NoProvider(),
};

View File

@ -35,7 +35,7 @@ public sealed class ProviderMistral() : BaseProvider("https://api.mistral.ai/v1/
};
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters);
// Prepare the Mistral HTTP chat request:
var mistralChatRequest = JsonSerializer.Serialize(new ChatRequest

View File

@ -14,7 +14,7 @@ public class NoProvider : IProvider
public string InstanceName { get; set; } = "None";
/// <inheritdoc />
public string ExpertProviderApiParameters { get; set; } = string.Empty;
public string AdditionalJsonApiParameters { get; set; } = string.Empty;
public Task<IEnumerable<Model>> GetTextModels(string? apiKeyProvisional = null, CancellationToken token = default) => Task.FromResult<IEnumerable<Model>>([]);

View File

@ -87,7 +87,7 @@ public sealed class ProviderOpenAI() : BaseProvider("https://api.openai.com/v1/"
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters, ["input", "store", "tools"]);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters, ["input", "store", "tools"]);
//
// Create the request: either for the Responses API or the Chat Completion API

View File

@ -46,7 +46,7 @@ public sealed class ProviderPerplexity() : BaseProvider("https://api.perplexity.
};
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters);
// Prepare the Perplexity HTTP chat request:
var perplexityChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest

View File

@ -33,7 +33,7 @@ public sealed class ProviderSelfHosted(Host host, string hostname) : BaseProvide
};
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters);
// Prepare the OpenAI HTTP chat request:
var providerChatRequest = JsonSerializer.Serialize(new ChatRequest

View File

@ -37,7 +37,7 @@ public sealed class ProviderX() : BaseProvider("https://api.x.ai/v1/", LOGGER)
};
// Parse the API parameters:
var apiParameters = this.ParseApiParameters(this.ExpertProviderApiParameters);
var apiParameters = this.ParseApiParameters(this.AdditionalJsonApiParameters);
// Prepare the xAI HTTP chat request:
var xChatRequest = JsonSerializer.Serialize(new ChatCompletionAPIRequest

View File

@ -32,7 +32,7 @@ public sealed record Provider(
string Hostname = "http://localhost:1234",
Host Host = Host.NONE,
HFInferenceProvider HFInferenceProvider = HFInferenceProvider.NONE,
string ExpertProviderApiParameters = "") : ConfigurationBaseObject, ISecretId
string AdditionalJsonApiParameters = "") : ConfigurationBaseObject, ISecretId
{
private static readonly ILogger<Provider> LOGGER = Program.LOGGER_FACTORY.CreateLogger<Provider>();
@ -152,7 +152,7 @@ public sealed record Provider(
EnterpriseConfigurationPluginId = configPluginId,
Hostname = hostname,
Host = host,
ExpertProviderApiParameters = expertProviderApiParameters,
AdditionalJsonApiParameters = expertProviderApiParameters,
};
return true;