Refactored configuration export into provider classes

This commit is contained in:
Thorsten Sommer 2026-02-05 10:59:59 +01:00
parent 092fa26dd6
commit dcfaf22859
Signed by untrusted user who does not match committer: tsommer
GPG Key ID: 371BBA77A02C0108
7 changed files with 132 additions and 106 deletions

View File

@ -1,6 +1,5 @@
using AIStudio.Dialogs; using AIStudio.Dialogs;
using AIStudio.Settings; using AIStudio.Settings;
using AIStudio.Tools.PluginSystem;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
@ -121,7 +120,7 @@ public partial class SettingsPanelEmbeddings : SettingsPanelBase
if (provider == EmbeddingProvider.NONE) if (provider == EmbeddingProvider.NONE)
return; return;
var luaCode = ConfigurationExport.ExportEmbeddingProvider(provider); var luaCode = provider.ExportAsConfigurationSection();
if (string.IsNullOrWhiteSpace(luaCode)) if (string.IsNullOrWhiteSpace(luaCode))
return; return;

View File

@ -3,7 +3,6 @@ using System.Diagnostics.CodeAnalysis;
using AIStudio.Dialogs; using AIStudio.Dialogs;
using AIStudio.Provider; using AIStudio.Provider;
using AIStudio.Settings; using AIStudio.Settings;
using AIStudio.Tools.PluginSystem;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
@ -140,7 +139,7 @@ public partial class SettingsPanelProviders : SettingsPanelBase
if (provider == AIStudio.Settings.Provider.NONE) if (provider == AIStudio.Settings.Provider.NONE)
return; return;
var luaCode = ConfigurationExport.ExportProvider(provider); var luaCode = provider.ExportAsConfigurationSection();
if (string.IsNullOrWhiteSpace(luaCode)) if (string.IsNullOrWhiteSpace(luaCode))
return; return;

View File

@ -1,6 +1,5 @@
using AIStudio.Dialogs; using AIStudio.Dialogs;
using AIStudio.Settings; using AIStudio.Settings;
using AIStudio.Tools.PluginSystem;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
@ -121,7 +120,7 @@ public partial class SettingsPanelTranscription : SettingsPanelBase
if (provider == TranscriptionProvider.NONE) if (provider == TranscriptionProvider.NONE)
return; return;
var luaCode = ConfigurationExport.ExportTranscriptionProvider(provider); var luaCode = provider.ExportAsConfigurationSection();
if (string.IsNullOrWhiteSpace(luaCode)) if (string.IsNullOrWhiteSpace(luaCode))
return; return;

View File

@ -131,4 +131,42 @@ public sealed record EmbeddingProvider(
model = new(id, displayName); model = new(id, displayName);
return true; return true;
} }
public string ExportAsConfigurationSection()
{
return $$"""
CONFIG["EMBEDDING_PROVIDERS"][#CONFIG["EMBEDDING_PROVIDERS"]+1] = {
["Id"] = "{{EscapeLuaString(NormalizeId(this.Id))}}",
["Name"] = "{{EscapeLuaString(this.Name)}}",
["UsedLLMProvider"] = "{{this.UsedLLMProvider}}",
["Host"] = "{{this.Host}}",
["Hostname"] = "{{EscapeLuaString(this.Hostname)}}",
["Model"] = {
["Id"] = "{{EscapeLuaString(this.Model.Id)}}",
["DisplayName"] = "{{EscapeLuaString(this.Model.DisplayName ?? string.Empty)}}",
},
}
""";
}
private static string NormalizeId(string? id)
{
if (!string.IsNullOrWhiteSpace(id))
return id;
return Guid.NewGuid().ToString();
}
private static string EscapeLuaString(string? value)
{
if (string.IsNullOrEmpty(value))
return string.Empty;
return value
.Replace("\\", "\\\\")
.Replace("\"", "\\\"")
.Replace("\r", "\\r")
.Replace("\n", "\\n");
}
} }

View File

@ -188,4 +188,52 @@ public sealed record Provider(
model = new(id, displayName); model = new(id, displayName);
return true; return true;
} }
public string ExportAsConfigurationSection()
{
var hfInferenceProviderLine = string.Empty;
if (this.HFInferenceProvider is not HFInferenceProvider.NONE)
{
hfInferenceProviderLine = $"""
["HFInferenceProvider"] = "{this.HFInferenceProvider}",
""";
}
return $$"""
CONFIG["LLM_PROVIDERS"][#CONFIG["LLM_PROVIDERS"]+1] = {
["Id"] = "{{EscapeLuaString(NormalizeId(this.Id))}}",
["InstanceName"] = "{{EscapeLuaString(this.InstanceName)}}",
["UsedLLMProvider"] = "{{this.UsedLLMProvider}}",
["Host"] = "{{this.Host}}",
["Hostname"] = "{{EscapeLuaString(this.Hostname)}}",
{{hfInferenceProviderLine}}
["AdditionalJsonApiParameters"] = "{{EscapeLuaString(this.AdditionalJsonApiParameters)}}",
["Model"] = {
["Id"] = "{{EscapeLuaString(this.Model.Id)}}",
["DisplayName"] = "{{EscapeLuaString(this.Model.DisplayName ?? string.Empty)}}",
},
}
""";
}
private static string NormalizeId(string? id)
{
if (!string.IsNullOrWhiteSpace(id))
return id;
return Guid.NewGuid().ToString();
}
private static string EscapeLuaString(string? value)
{
if (string.IsNullOrEmpty(value))
return string.Empty;
return value
.Replace("\\", "\\\\")
.Replace("\"", "\\\"")
.Replace("\r", "\\r")
.Replace("\n", "\\n");
}
} }

View File

@ -131,4 +131,42 @@ public sealed record TranscriptionProvider(
model = new(id, displayName); model = new(id, displayName);
return true; return true;
} }
public string ExportAsConfigurationSection()
{
return $$"""
CONFIG["TRANSCRIPTION_PROVIDERS"][#CONFIG["TRANSCRIPTION_PROVIDERS"]+1] = {
["Id"] = "{{EscapeLuaString(NormalizeId(this.Id))}}",
["Name"] = "{{EscapeLuaString(this.Name)}}",
["UsedLLMProvider"] = "{{this.UsedLLMProvider}}",
["Host"] = "{{this.Host}}",
["Hostname"] = "{{EscapeLuaString(this.Hostname)}}",
["Model"] = {
["Id"] = "{{EscapeLuaString(this.Model.Id)}}",
["DisplayName"] = "{{EscapeLuaString(this.Model.DisplayName ?? string.Empty)}}",
},
}
""";
}
private static string NormalizeId(string? id)
{
if (!string.IsNullOrWhiteSpace(id))
return id;
return Guid.NewGuid().ToString();
}
private static string EscapeLuaString(string? value)
{
if (string.IsNullOrEmpty(value))
return string.Empty;
return value
.Replace("\\", "\\\\")
.Replace("\"", "\\\"")
.Replace("\r", "\\r")
.Replace("\n", "\\n");
}
} }

View File

@ -1,95 +0,0 @@
using AIStudio.Provider.HuggingFace;
namespace AIStudio.Tools.PluginSystem;
public static class ConfigurationExport
{
public static string ExportProvider(AIStudio.Settings.Provider provider)
{
if (provider == Settings.Provider.NONE)
return string.Empty;
var hfInferenceProviderLine = provider.HFInferenceProvider is not HFInferenceProvider.NONE
? $" [\"HFInferenceProvider\"] = \"{provider.HFInferenceProvider}\",\n"
: string.Empty;
return $$"""
CONFIG["LLM_PROVIDERS"][#CONFIG["LLM_PROVIDERS"]+1] = {
["Id"] = "{{EscapeLuaString(NormalizeId(provider.Id))}}",
["InstanceName"] = "{{EscapeLuaString(provider.InstanceName)}}",
["UsedLLMProvider"] = "{{provider.UsedLLMProvider}}",
["Host"] = "{{provider.Host}}",
["Hostname"] = "{{EscapeLuaString(provider.Hostname)}}",
{{hfInferenceProviderLine}}
["AdditionalJsonApiParameters"] = "{{EscapeLuaString(provider.AdditionalJsonApiParameters)}}",
["Model"] = {
["Id"] = "{{EscapeLuaString(provider.Model.Id)}}",
["DisplayName"] = "{{EscapeLuaString(provider.Model.DisplayName ?? string.Empty)}}",
},
}
""";
}
public static string ExportEmbeddingProvider(Settings.EmbeddingProvider provider)
{
if (provider == Settings.EmbeddingProvider.NONE)
return string.Empty;
return $$"""
CONFIG["EMBEDDING_PROVIDERS"][#CONFIG["EMBEDDING_PROVIDERS"]+1] = {
["Id"] = "{{EscapeLuaString(NormalizeId(provider.Id))}}",
["Name"] = "{{EscapeLuaString(provider.Name)}}",
["UsedLLMProvider"] = "{{provider.UsedLLMProvider}}",
["Host"] = "{{provider.Host}}",
["Hostname"] = "{{EscapeLuaString(provider.Hostname)}}",
["Model"] = {
["Id"] = "{{EscapeLuaString(provider.Model.Id)}}",
["DisplayName"] = "{{EscapeLuaString(provider.Model.DisplayName ?? string.Empty)}}",
},
}
""";
}
public static string ExportTranscriptionProvider(Settings.TranscriptionProvider provider)
{
if (provider == Settings.TranscriptionProvider.NONE)
return string.Empty;
return $$"""
CONFIG["TRANSCRIPTION_PROVIDERS"][#CONFIG["TRANSCRIPTION_PROVIDERS"]+1] = {
["Id"] = "{{EscapeLuaString(NormalizeId(provider.Id))}}",
["Name"] = "{{EscapeLuaString(provider.Name)}}",
["UsedLLMProvider"] = "{{provider.UsedLLMProvider}}",
["Host"] = "{{provider.Host}}",
["Hostname"] = "{{EscapeLuaString(provider.Hostname)}}",
["Model"] = {
["Id"] = "{{EscapeLuaString(provider.Model.Id)}}",
["DisplayName"] = "{{EscapeLuaString(provider.Model.DisplayName ?? string.Empty)}}",
},
}
""";
}
private static string NormalizeId(string? id)
{
if (!string.IsNullOrWhiteSpace(id))
return id;
return Guid.NewGuid().ToString();
}
private static string EscapeLuaString(string? value)
{
if (string.IsNullOrEmpty(value))
return string.Empty;
return value
.Replace("\\", "\\\\")
.Replace("\"", "\\\"")
.Replace("\r", "\\r")
.Replace("\n", "\\n");
}
}