mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-10-06 00:29:40 +00:00
Updated model capabilities across all providers (#940)
This commit is contained in:
1 parent
c9b7f224cc
commit
edbb75dd9f
10 files changed
+275
-256
No files matched your search
@@ -71,6 +71,21 @@ public static partial class ProviderExtensions
|
||||
];
|
||||
}
|
||||
|
||||
//
|
||||
// Meta Muse models. They need their own block because their names do not
|
||||
// contain "llama". Muse Glimmer always reasons: its chat template opens the
|
||||
// thinking channel unconditionally, only the reasoning strength can be lowered.
|
||||
//
|
||||
if (modelName.IndexOf("muse-glimmer") is not -1)
|
||||
return
|
||||
[
|
||||
Capability.TEXT_INPUT, Capability.MULTIPLE_IMAGE_INPUT,
|
||||
Capability.TEXT_OUTPUT,
|
||||
|
||||
Capability.ALWAYS_REASONING, Capability.FUNCTION_CALLING,
|
||||
Capability.CHAT_COMPLETION_API,
|
||||
];
|
||||
|
||||
//
|
||||
// DeepSeek models:
|
||||
//
|
||||
@@ -122,6 +137,19 @@ public static partial class ProviderExtensions
|
||||
Capability.CHAT_COMPLETION_API,
|
||||
];
|
||||
|
||||
// Check for the Qwen 3.8 Flash models. The open weights are published as
|
||||
// Flash-Next, while Flash without the suffix is the production model. Both
|
||||
// share the same capabilities, so one check covers them:
|
||||
if(modelName.IndexOf("qwen3.8-flash") is not -1)
|
||||
return
|
||||
[
|
||||
Capability.TEXT_INPUT, Capability.MULTIPLE_IMAGE_INPUT, Capability.VIDEO_INPUT,
|
||||
Capability.TEXT_OUTPUT,
|
||||
|
||||
Capability.REASONING_BY_DEFAULT, Capability.FUNCTION_CALLING,
|
||||
Capability.CHAT_COMPLETION_API,
|
||||
];
|
||||
|
||||
// Check for the multimodal Qwen 3.8 27B checkpoint:
|
||||
if(modelName.IndexOf("qwen3.8-27b") is not -1)
|
||||
return
|
||||
@@ -193,6 +221,23 @@ public static partial class ProviderExtensions
|
||||
Capability.CHAT_COMPLETION_API,
|
||||
];
|
||||
|
||||
//
|
||||
// Tencent Hunyuan models. Hy3 answers directly by default: its reasoning_effort
|
||||
// parameter defaults to no_think, low and high must be requested. We also match
|
||||
// the short name because providers offer the model as tencent/hy3, so checking
|
||||
// the start of the name is not enough.
|
||||
//
|
||||
if (modelName.IndexOf("hunyuan") is not -1 ||
|
||||
modelName.IndexOf("hy3") is not -1)
|
||||
return
|
||||
[
|
||||
Capability.TEXT_INPUT,
|
||||
Capability.TEXT_OUTPUT,
|
||||
|
||||
Capability.OPTIONAL_REASONING, Capability.FUNCTION_CALLING,
|
||||
Capability.CHAT_COMPLETION_API,
|
||||
];
|
||||
|
||||
//
|
||||
// Mistral models:
|
||||
//
|
||||
@@ -335,6 +380,18 @@ public static partial class ProviderExtensions
|
||||
Capability.CHAT_COMPLETION_API,
|
||||
];
|
||||
|
||||
// Grok 4 models take text, images, and video natively. Reasoning is always
|
||||
// on, only the reasoning effort can be configured:
|
||||
if(modelName.IndexOf("grok-4") is not -1)
|
||||
return
|
||||
[
|
||||
Capability.TEXT_INPUT, Capability.MULTIPLE_IMAGE_INPUT, Capability.VIDEO_INPUT,
|
||||
Capability.TEXT_OUTPUT,
|
||||
|
||||
Capability.ALWAYS_REASONING, Capability.FUNCTION_CALLING,
|
||||
Capability.CHAT_COMPLETION_API,
|
||||
];
|
||||
|
||||
if(modelName.StartsWith("grok-3-mini"))
|
||||
return
|
||||
[
|
||||
@@ -346,14 +403,25 @@ public static partial class ProviderExtensions
|
||||
];
|
||||
|
||||
if(modelName.StartsWith("grok-3"))
|
||||
return
|
||||
return
|
||||
[
|
||||
Capability.TEXT_INPUT,
|
||||
Capability.TEXT_OUTPUT,
|
||||
|
||||
|
||||
Capability.FUNCTION_CALLING,
|
||||
Capability.CHAT_COMPLETION_API,
|
||||
];
|
||||
|
||||
// Any other Grok model. Without this, unknown Grok versions would fall
|
||||
// through to the global default and would lose function calling:
|
||||
return
|
||||
[
|
||||
Capability.TEXT_INPUT,
|
||||
Capability.TEXT_OUTPUT,
|
||||
|
||||
Capability.FUNCTION_CALLING,
|
||||
Capability.CHAT_COMPLETION_API,
|
||||
];
|
||||
}
|
||||
|
||||
//
|
||||
@@ -383,11 +451,41 @@ public static partial class ProviderExtensions
|
||||
];
|
||||
}
|
||||
|
||||
//
|
||||
// NVIDIA Nemotron models. They are built for agentic workloads and are text
|
||||
// only. Reasoning has to be requested through enable_thinking, so it is
|
||||
// optional. The check also covers the quantized checkpoints such as
|
||||
// NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4.
|
||||
//
|
||||
if (modelName.IndexOf("nemotron") is not -1)
|
||||
return
|
||||
[
|
||||
Capability.TEXT_INPUT,
|
||||
Capability.TEXT_OUTPUT,
|
||||
|
||||
Capability.OPTIONAL_REASONING, Capability.FUNCTION_CALLING,
|
||||
Capability.CHAT_COMPLETION_API,
|
||||
];
|
||||
|
||||
//
|
||||
// Z AI / GLM models:
|
||||
//
|
||||
if (modelName.IndexOf("glm") is not -1)
|
||||
{
|
||||
// GLM 5.3 uses forced thinking: the reasoning effort can be lowered, but
|
||||
// reasoning cannot be turned off. This check must stay in front of the
|
||||
// vision check below, because quantized builds such as GLM-5.3-Flash-NVFP4
|
||||
// contain a "v" and would be misread as a vision model:
|
||||
if (modelName.IndexOf("glm-5.3") is not -1)
|
||||
return
|
||||
[
|
||||
Capability.TEXT_INPUT, Capability.MULTIPLE_IMAGE_INPUT,
|
||||
Capability.TEXT_OUTPUT,
|
||||
|
||||
Capability.ALWAYS_REASONING, Capability.FUNCTION_CALLING,
|
||||
Capability.CHAT_COMPLETION_API,
|
||||
];
|
||||
|
||||
if (modelName.IndexOf("glm-5.2") is not -1)
|
||||
return
|
||||
[
|
||||
|
||||
Reference in new issue
Block a user