AI-Studio/app/MindWork AI Studio/Tools/PluginSystem/ConfigurationExport.cs

96 lines
3.8 KiB
C#
Raw Normal View History

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");
}
}