Read the context window from four more model lists

This commit is contained in:
Thorsten Sommer committed 2026-09-13 10:59:41 +02:00
1 parent 1c03a46e2f
commit caf2aba4b9
16 files changed
+415 -28

No files matched your search

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace AIStudio.Provider.Groq;
/// <summary>
/// One model as Groq lists it.
/// </summary>
/// <remarks>
/// Groq says more about a model than the shared OpenAI-compatible list does, which is why this
/// provider brings a data model of its own instead of using that one: the shared record is read by
/// a dozen providers, and a field only one of them sends has no business in it.
/// </remarks>
/// <param name="Id">The model's ID.</param>
/// <param name="ContextWindowTokens">How much the model reads and writes in one conversation, in tokens.</param>
public readonly record struct GroqModel(string Id, [property: JsonPropertyName("context_window")] int? ContextWindowTokens);
@@ -0,0 +1,7 @@
namespace AIStudio.Provider.Groq;
/// <summary>
/// A data model for the response from the Groq models endpoint.
/// </summary>
/// <param name="Data">The models Groq serves.</param>
public readonly record struct GroqModelsResponse(IList<GroqModel> Data);
@@ -1,6 +1,7 @@
using System.Runtime.CompilerServices;
using AIStudio.Chat;
using AIStudio.Models.Live;
using AIStudio.Provider.OpenAI;
using AIStudio.Settings;
@@ -113,10 +114,12 @@ public class ProviderGroq() : BaseProvider(LLMProviders.GROQ, new Uri("https://a
private Task<ModelLoadResult> LoadModels(SecretStoreType storeType, string? apiKeyProvisional, CancellationToken token)
{
return this.LoadModelsResponse<ModelsResponse>(
return this.LoadModelsResponse<GroqModelsResponse>(
storeType,
"models",
modelResponse => modelResponse.Data,
apiKeyProvisional, token: token);
modelResponse => modelResponse.Data.Select(n => new Model(n.Id, null)),
apiKeyProvisional,
listingFactory: modelResponse => modelResponse.Data.Select(n => ModelListing.For(n.Id, n.ContextWindowTokens)),
token: token);
}
}