Update GetModelCapabilities to include multiple image input and optional reasoning for Claude models

This commit is contained in:
Thorsten Sommer 2025-05-07 19:57:43 +02:00
parent e503811ffd
commit 45dbbdf299
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108

View File

@ -110,26 +110,33 @@ public sealed class ProviderAnthropic(ILogger logger) : BaseProvider("https://ap
return Task.FromResult(Enumerable.Empty<Model>()); return Task.FromResult(Enumerable.Empty<Model>());
} }
#region Overrides of BaseProvider
public override IReadOnlyCollection<Capability> GetModelCapabilities(Model model) public override IReadOnlyCollection<Capability> GetModelCapabilities(Model model)
{ {
var modelName = model.Id.ToLowerInvariant().AsSpan(); var modelName = model.Id.ToLowerInvariant().AsSpan();
// Claude 3.7 is able to do reasoning: // Claude 3.7 is able to do reasoning:
if(modelName.StartsWith("claude-3-7")) if(modelName.StartsWith("claude-3-7"))
return [Capability.TEXT_INPUT, Capability.IMAGE_INPUT, Capability.TEXT_OUTPUT, Capability.REASONING, Capability.FUNCTION_CALLING]; return [
Capability.TEXT_INPUT, Capability.MULTIPLE_IMAGE_INPUT,
Capability.TEXT_OUTPUT,
Capability.OPTIONAL_REASONING, Capability.FUNCTION_CALLING];
// All other 3.x models are able to process text and images as input: // All other 3.x models are able to process text and images as input:
if(modelName.StartsWith("claude-3-")) if(modelName.StartsWith("claude-3-"))
return [Capability.TEXT_INPUT, Capability.IMAGE_INPUT, Capability.TEXT_OUTPUT, Capability.FUNCTION_CALLING]; return [
Capability.TEXT_INPUT, Capability.MULTIPLE_IMAGE_INPUT,
Capability.TEXT_OUTPUT,
Capability.FUNCTION_CALLING];
// Any other model is able to process text only: // Any other model is able to process text only:
return [Capability.TEXT_INPUT, Capability.TEXT_OUTPUT, Capability.FUNCTION_CALLING]; return [
Capability.TEXT_INPUT,
Capability.TEXT_OUTPUT,
Capability.FUNCTION_CALLING];
} }
#endregion
#endregion #endregion
private async Task<IEnumerable<Model>> LoadModels(CancellationToken token, string? apiKeyProvisional = null) private async Task<IEnumerable<Model>> LoadModels(CancellationToken token, string? apiKeyProvisional = null)