Added display name for the model list.

This commit is contained in:
Thorsten Sommer 2025-12-15 18:12:04 +01:00
parent b8d85d1eea
commit 89781c9a3a
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
3 changed files with 28 additions and 11 deletions

View File

@ -0,0 +1,8 @@
namespace AIStudio.Provider.OpenRouter;
/// <summary>
/// A data model for an OpenRouter model from the API.
/// </summary>
/// <param name="Id">The model's ID.</param>
/// <param name="Name">The model's human-readable display name.</param>
public readonly record struct OpenRouterModel(string Id, string? Name);

View File

@ -0,0 +1,7 @@
namespace AIStudio.Provider.OpenRouter;
/// <summary>
/// A data model for the response from the OpenRouter models endpoint.
/// </summary>
/// <param name="Data">The list of models.</param>
public readonly record struct OpenRouterModelsResponse(IList<OpenRouterModel> Data);

View File

@ -149,17 +149,19 @@ public sealed class ProviderOpenRouter() : BaseProvider("https://openrouter.ai/a
if(!response.IsSuccessStatusCode)
return [];
var modelResponse = await response.Content.ReadFromJsonAsync<ModelsResponse>(token);
var modelResponse = await response.Content.ReadFromJsonAsync<OpenRouterModelsResponse>(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));
}
}