From 4f5815272a6126185bd7a7dac8a44ccd4e367cbd Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Wed, 24 Jul 2024 19:27:25 +0200 Subject: [PATCH] 39 improve hostname handling (#42) --- .../Components/Pages/Settings.razor | 4 +-- .../Components/Pages/Settings.razor.cs | 7 +++++ app/MindWork AI Studio/Provider/Providers.cs | 29 +++++++++++++------ .../Settings/ProviderDialog.razor.cs | 4 +-- .../wwwroot/changelog/v0.8.3.md | 5 ++++ 5 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.8.3.md diff --git a/app/MindWork AI Studio/Components/Pages/Settings.razor b/app/MindWork AI Studio/Components/Pages/Settings.razor index 9a11b04..d79eaab 100644 --- a/app/MindWork AI Studio/Components/Pages/Settings.razor +++ b/app/MindWork AI Studio/Components/Pages/Settings.razor @@ -29,11 +29,11 @@ @if (context.UsedProvider is not Providers.SELF_HOSTED) { - @context.Model + @this.GetProviderModelName(context) } else if (context.UsedProvider is Providers.SELF_HOSTED && context.Host is not Host.LLAMACPP) { - @context.Model + @this.GetProviderModelName(context) } else { diff --git a/app/MindWork AI Studio/Components/Pages/Settings.razor.cs b/app/MindWork AI Studio/Components/Pages/Settings.razor.cs index 868289f..db820e6 100644 --- a/app/MindWork AI Studio/Components/Pages/Settings.razor.cs +++ b/app/MindWork AI Studio/Components/Pages/Settings.razor.cs @@ -111,5 +111,12 @@ public partial class Settings : ComponentBase _ => string.Empty, }; + private string GetProviderModelName(AIStudio.Settings.Provider provider) + { + const int MAX_LENGTH = 36; + var modelName = provider.Model.ToString(); + return modelName.Length > MAX_LENGTH ? "[...] " + modelName[^Math.Min(MAX_LENGTH, modelName.Length)..] : modelName; + } + #endregion } \ No newline at end of file diff --git a/app/MindWork AI Studio/Provider/Providers.cs b/app/MindWork AI Studio/Provider/Providers.cs index 3f0d88e..47e7ed9 100644 --- a/app/MindWork AI Studio/Provider/Providers.cs +++ b/app/MindWork AI Studio/Provider/Providers.cs @@ -47,14 +47,25 @@ public static class ExtensionsProvider /// /// The provider settings. /// The provider instance. - public static IProvider CreateProvider(this Settings.Provider providerSettings) => providerSettings.UsedProvider switch + public static IProvider CreateProvider(this Settings.Provider providerSettings) { - Providers.OPEN_AI => new ProviderOpenAI { InstanceName = providerSettings.InstanceName }, - Providers.ANTHROPIC => new ProviderAnthropic { InstanceName = providerSettings.InstanceName }, - Providers.MISTRAL => new ProviderMistral { InstanceName = providerSettings.InstanceName }, - - Providers.SELF_HOSTED => new ProviderSelfHosted(providerSettings) { InstanceName = providerSettings.InstanceName }, - - _ => new NoProvider(), - }; + try + { + return providerSettings.UsedProvider switch + { + Providers.OPEN_AI => new ProviderOpenAI { InstanceName = providerSettings.InstanceName }, + Providers.ANTHROPIC => new ProviderAnthropic { InstanceName = providerSettings.InstanceName }, + Providers.MISTRAL => new ProviderMistral { InstanceName = providerSettings.InstanceName }, + + Providers.SELF_HOSTED => new ProviderSelfHosted(providerSettings) { InstanceName = providerSettings.InstanceName }, + + _ => new NoProvider(), + }; + } + catch (Exception e) + { + Console.WriteLine($"Failed to create provider: {e.Message}"); + return new NoProvider(); + } + } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/ProviderDialog.razor.cs b/app/MindWork AI Studio/Settings/ProviderDialog.razor.cs index edd00e9..1c76e88 100644 --- a/app/MindWork AI Studio/Settings/ProviderDialog.razor.cs +++ b/app/MindWork AI Studio/Settings/ProviderDialog.razor.cs @@ -102,7 +102,7 @@ public partial class ProviderDialog : ComponentBase UsedProvider = this.DataProvider, Model = this.DataModel, IsSelfHosted = this.DataProvider is Providers.SELF_HOSTED, - Hostname = this.DataHostname, + Hostname = this.DataHostname.EndsWith('/') ? this.DataHostname[..^1] : this.DataHostname, Host = this.DataHost, }; @@ -312,7 +312,7 @@ public partial class ProviderDialog : ComponentBase var provider = currentProviderSettings.CreateProvider(); if(provider is NoProvider) return; - + var models = await provider.GetTextModels(this.JsRuntime, this.SettingsManager, this.dataAPIKey); // Order descending by ID means that the newest models probably come first: diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.8.3.md b/app/MindWork AI Studio/wwwroot/changelog/v0.8.3.md new file mode 100644 index 0000000..0df1aa4 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.8.3.md @@ -0,0 +1,5 @@ +# v0.8.3 (WIP) +- Migrated UI framework from MudBlazor v6.x.x to v7.x.x +- Added an option to configure the behavior of the navigation bar in the settings +- Improved the handling of self-hosted provider hostnames +- Improved the configured provider table: long model names are now truncated \ No newline at end of file