From 45dbbdf29981d07089b25977dd037f2b0425a5b5 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Wed, 7 May 2025 19:57:43 +0200 Subject: [PATCH] Update GetModelCapabilities to include multiple image input and optional reasoning for Claude models --- .../Provider/Anthropic/ProviderAnthropic.cs | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs b/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs index 7f7d2f7b..75c424d4 100644 --- a/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs +++ b/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs @@ -110,26 +110,33 @@ public sealed class ProviderAnthropic(ILogger logger) : BaseProvider("https://ap return Task.FromResult(Enumerable.Empty()); } - #region Overrides of BaseProvider - public override IReadOnlyCollection GetModelCapabilities(Model model) { var modelName = model.Id.ToLowerInvariant().AsSpan(); // Claude 3.7 is able to do reasoning: 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: 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: - return [Capability.TEXT_INPUT, Capability.TEXT_OUTPUT, Capability.FUNCTION_CALLING]; + return [ + Capability.TEXT_INPUT, + Capability.TEXT_OUTPUT, + Capability.FUNCTION_CALLING]; } - - #endregion - + #endregion private async Task> LoadModels(CancellationToken token, string? apiKeyProvisional = null)