From 89781c9a3a226fbb16fc459bc6f812d1f8d86c04 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Mon, 15 Dec 2025 18:12:04 +0100 Subject: [PATCH] Added display name for the model list. --- .../Provider/OpenRouter/OpenRouterModel.cs | 8 +++++++ .../OpenRouter/OpenRouterModelsResponse.cs | 7 ++++++ .../Provider/OpenRouter/ProviderOpenRouter.cs | 24 ++++++++++--------- 3 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 app/MindWork AI Studio/Provider/OpenRouter/OpenRouterModel.cs create mode 100644 app/MindWork AI Studio/Provider/OpenRouter/OpenRouterModelsResponse.cs diff --git a/app/MindWork AI Studio/Provider/OpenRouter/OpenRouterModel.cs b/app/MindWork AI Studio/Provider/OpenRouter/OpenRouterModel.cs new file mode 100644 index 00000000..7cd47a59 --- /dev/null +++ b/app/MindWork AI Studio/Provider/OpenRouter/OpenRouterModel.cs @@ -0,0 +1,8 @@ +namespace AIStudio.Provider.OpenRouter; + +/// +/// A data model for an OpenRouter model from the API. +/// +/// The model's ID. +/// The model's human-readable display name. +public readonly record struct OpenRouterModel(string Id, string? Name); diff --git a/app/MindWork AI Studio/Provider/OpenRouter/OpenRouterModelsResponse.cs b/app/MindWork AI Studio/Provider/OpenRouter/OpenRouterModelsResponse.cs new file mode 100644 index 00000000..0680c4e6 --- /dev/null +++ b/app/MindWork AI Studio/Provider/OpenRouter/OpenRouterModelsResponse.cs @@ -0,0 +1,7 @@ +namespace AIStudio.Provider.OpenRouter; + +/// +/// A data model for the response from the OpenRouter models endpoint. +/// +/// The list of models. +public readonly record struct OpenRouterModelsResponse(IList Data); diff --git a/app/MindWork AI Studio/Provider/OpenRouter/ProviderOpenRouter.cs b/app/MindWork AI Studio/Provider/OpenRouter/ProviderOpenRouter.cs index 4c33f606..e2014adc 100644 --- a/app/MindWork AI Studio/Provider/OpenRouter/ProviderOpenRouter.cs +++ b/app/MindWork AI Studio/Provider/OpenRouter/ProviderOpenRouter.cs @@ -149,17 +149,19 @@ public sealed class ProviderOpenRouter() : BaseProvider("https://openrouter.ai/a if(!response.IsSuccessStatusCode) return []; - var modelResponse = await response.Content.ReadFromJsonAsync(token); + var modelResponse = await response.Content.ReadFromJsonAsync(token); - // Filter out non-text models (image, audio, embedding models) - return modelResponse.Data.Where(n => - !n.Id.Contains("whisper", StringComparison.OrdinalIgnoreCase) && - !n.Id.Contains("dall-e", StringComparison.OrdinalIgnoreCase) && - !n.Id.Contains("tts", StringComparison.OrdinalIgnoreCase) && - !n.Id.Contains("embedding", StringComparison.OrdinalIgnoreCase) && - !n.Id.Contains("moderation", StringComparison.OrdinalIgnoreCase) && - !n.Id.Contains("stable-diffusion", StringComparison.OrdinalIgnoreCase) && - !n.Id.Contains("flux", StringComparison.OrdinalIgnoreCase) && - !n.Id.Contains("midjourney", StringComparison.OrdinalIgnoreCase)); + // Filter out non-text models (image, audio, embedding models) and convert to Model + return modelResponse.Data + .Where(n => + !n.Id.Contains("whisper", StringComparison.OrdinalIgnoreCase) && + !n.Id.Contains("dall-e", StringComparison.OrdinalIgnoreCase) && + !n.Id.Contains("tts", StringComparison.OrdinalIgnoreCase) && + !n.Id.Contains("embedding", StringComparison.OrdinalIgnoreCase) && + !n.Id.Contains("moderation", StringComparison.OrdinalIgnoreCase) && + !n.Id.Contains("stable-diffusion", StringComparison.OrdinalIgnoreCase) && + !n.Id.Contains("flux", StringComparison.OrdinalIgnoreCase) && + !n.Id.Contains("midjourney", StringComparison.OrdinalIgnoreCase)) + .Select(n => new Model(n.Id, n.Name)); } }