diff --git a/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs b/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs index 04c0f5cc..8c7c9d72 100644 --- a/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs +++ b/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs @@ -147,18 +147,18 @@ public sealed class ProviderAnthropic(ILogger logger) : BaseProvider("https://ap { return Task.FromResult(new[] { - new Model("claude-3-5-sonnet-latest"), - new Model("claude-3-5-sonnet-20240620"), - new Model("claude-3-5-sonnet-20241022"), + new Model("claude-3-5-sonnet-latest", "Claude 3.5 Sonnet (latest)"), + new Model("claude-3-5-sonnet-20240620", "Claude 3.5 Sonnet (20. June 2024)"), + new Model("claude-3-5-sonnet-20241022", "Claude 3.5 Sonnet (22. October 2024)"), - new Model("claude-3-5-haiku-latest"), - new Model("claude-3-5-heiku-20241022"), + new Model("claude-3-5-haiku-latest", "Claude 3.5 Haiku (latest)"), + new Model("claude-3-5-heiku-20241022", "Claude 3.5 Haiku (22. October 2024)"), - new Model("claude-3-opus-20240229"), - new Model("claude-3-opus-latest"), + new Model("claude-3-opus-20240229", "Claude 3.0 Opus (29. February 2024)"), + new Model("claude-3-opus-latest", "Claude 3.0 Opus (latest)"), - new Model("claude-3-sonnet-20240229"), - new Model("claude-3-haiku-20240307"), + new Model("claude-3-sonnet-20240229", "Claude 3.0 Sonnet (29. February 2024)"), + new Model("claude-3-haiku-20240307", "Claude 3.0 Haiku (7. March 2024)"), }.AsEnumerable()); } diff --git a/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs b/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs index 86d94e85..23296669 100644 --- a/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs +++ b/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs @@ -173,7 +173,7 @@ public sealed class ProviderMistral(ILogger logger) : BaseProvider("https://api. return modelResponse.Data.Where(n => !n.Id.StartsWith("code", StringComparison.InvariantCulture) && !n.Id.Contains("embed", StringComparison.InvariantCulture)) - .Select(n => new Provider.Model(n.Id)); + .Select(n => new Provider.Model(n.Id, null)); } #pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously diff --git a/app/MindWork AI Studio/Provider/Model.cs b/app/MindWork AI Studio/Provider/Model.cs index af397096..ff66933a 100644 --- a/app/MindWork AI Studio/Provider/Model.cs +++ b/app/MindWork AI Studio/Provider/Model.cs @@ -4,11 +4,33 @@ namespace AIStudio.Provider; /// The data model for the model to use. /// /// The model's ID. -public readonly record struct Model(string Id) +/// The model's display name. +public readonly record struct Model(string Id, string? DisplayName) { #region Overrides of ValueType - public override string ToString() => string.IsNullOrWhiteSpace(this.Id) ? "no model selected" : this.Id; + public override string ToString() + { + if(!string.IsNullOrWhiteSpace(this.DisplayName)) + return this.DisplayName; + + if(!string.IsNullOrWhiteSpace(this.Id)) + return this.Id; + + return "no model selected"; + } + + #endregion + + #region Implementation of IEquatable + + public bool Equals(Model? other) + { + if(other is null) + return false; + + return this.Id == other.Value.Id; + } #endregion } \ No newline at end of file diff --git a/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs b/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs index 9c595daa..f50b34c7 100644 --- a/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs +++ b/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs @@ -164,7 +164,7 @@ public sealed class ProviderSelfHosted(ILogger logger, Settings.Provider provide case Host.LLAMACPP: // Right now, llama.cpp only supports one model. // There is no API to list the model(s). - return [ new Provider.Model("as configured by llama.cpp") ]; + return [ new Provider.Model("as configured by llama.cpp", null) ]; case Host.LM_STUDIO: case Host.OLLAMA: @@ -188,7 +188,7 @@ public sealed class ProviderSelfHosted(ILogger logger, Settings.Provider provide return []; var lmStudioModelResponse = await lmStudioResponse.Content.ReadFromJsonAsync(token); - return lmStudioModelResponse.Data.Select(n => new Provider.Model(n.Id)); + return lmStudioModelResponse.Data.Select(n => new Provider.Model(n.Id, null)); } return [];