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 [];