mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-06-27 15:56:28 +00:00
33 lines
1.6 KiB
C#
33 lines
1.6 KiB
C#
|
|
using AIStudio.Provider;
|
||
|
|
using AIStudio.Settings;
|
||
|
|
using AIStudio.Tools.PluginSystem;
|
||
|
|
|
||
|
|
namespace AIStudio.Tools.ToolCallingSystem;
|
||
|
|
|
||
|
|
public readonly record struct ToolCallingAvailability(bool IsAvailable, string Message)
|
||
|
|
{
|
||
|
|
public static ToolCallingAvailability Available() => new(true, string.Empty);
|
||
|
|
}
|
||
|
|
|
||
|
|
public static class ToolCallingAvailabilityExtensions
|
||
|
|
{
|
||
|
|
public static ToolCallingAvailability GetToolCallingAvailability(this AIStudio.Settings.Provider provider)
|
||
|
|
{
|
||
|
|
if (provider == AIStudio.Settings.Provider.NONE || provider.UsedLLMProvider is LLMProviders.NONE)
|
||
|
|
return new(false, I18N.I.T("The selected model does not support tool calling.", typeof(ToolCallingAvailabilityExtensions).Namespace, nameof(ToolCallingAvailabilityExtensions)));
|
||
|
|
|
||
|
|
if (provider.UsedLLMProvider is LLMProviders.ANTHROPIC)
|
||
|
|
return new(false, I18N.I.T("Tool calling for this provider is not implemented yet.", typeof(ToolCallingAvailabilityExtensions).Namespace, nameof(ToolCallingAvailabilityExtensions)));
|
||
|
|
|
||
|
|
var modelCapabilities = provider.GetModelCapabilities();
|
||
|
|
var supportsRequiredApis =
|
||
|
|
modelCapabilities.Contains(Capability.CHAT_COMPLETION_API) ||
|
||
|
|
modelCapabilities.Contains(Capability.RESPONSES_API);
|
||
|
|
|
||
|
|
if (!supportsRequiredApis || !modelCapabilities.Contains(Capability.FUNCTION_CALLING))
|
||
|
|
return new(false, I18N.I.T("The selected model does not support tool calling.", typeof(ToolCallingAvailabilityExtensions).Namespace, nameof(ToolCallingAvailabilityExtensions)));
|
||
|
|
|
||
|
|
return ToolCallingAvailability.Available();
|
||
|
|
}
|
||
|
|
}
|