From d8ed5fd1b27fca69c1aa3bec1c114f1de8131e5e Mon Sep 17 00:00:00 2001 From: colin Date: Fri, 27 Mar 2026 14:18:34 +0800 Subject: [PATCH] feat(ai): Add tool support for property discovery interface --- .../Http/HttpAIToolDefinitionExtenssions.cs | 14 +-- .../Abp/AI/Tools/Http/HttpAIToolProvider.cs | 26 ++++- .../Tools/Http/Localization/Resources/en.json | 6 +- .../Http/Localization/Resources/zh-Hans.json | 6 +- .../LINGYUN.Abp.AI.Tools.Mcp.csproj | 5 + .../Tools/Mcp/Localization/Resources/en.json | 14 +++ .../Mcp/Localization/Resources/zh-Hans.json | 14 +++ .../Mcp/McpAIToolDefinitionExtenssions.cs | 12 +- .../Abp/AI/Tools/Mcp/McpAIToolProvider.cs | 35 +++++- .../Abp/AI/Tools/AIToolPropertyDescriptor.cs | 109 ++++++++++++++++++ .../FunctionAIToolDefinitionExtenssions.cs | 13 ++- .../Abp/AI/Tools/FunctionAIToolProvider.cs | 17 ++- .../LINGYUN/Abp/AI/Tools/IAIToolProvider.cs | 2 + .../AI/Tools/Localization/Resources/en.json | 6 +- .../Tools/Localization/Resources/zh-Hans.json | 6 +- 15 files changed, 261 insertions(+), 24 deletions(-) create mode 100644 aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/Localization/Resources/en.json create mode 100644 aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/Localization/Resources/zh-Hans.json create mode 100644 aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/AIToolPropertyDescriptor.cs diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/HttpAIToolDefinitionExtenssions.cs b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/HttpAIToolDefinitionExtenssions.cs index 7e6af037b..24fcd4fde 100644 --- a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/HttpAIToolDefinitionExtenssions.cs +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/HttpAIToolDefinitionExtenssions.cs @@ -5,15 +5,15 @@ using Volo.Abp; namespace LINGYUN.Abp.AI.Tools.Http; public static class HttpAIToolDefinitionExtenssions { - private const string RemoteService = "RemoteService"; - private const string RemoteController = "RemoteController"; - private const string RemoteMethod = "RemoteMethod"; + public const string RemoteService = "RemoteService"; + public const string RemoteController = "RemoteController"; + public const string RemoteMethod = "RemoteMethod"; - private const string Endpoint = "HttpEndpoint"; - private const string Method = "HttpMethod"; - private const string Headers = "HttpHeaders"; + public const string Endpoint = "HttpEndpoint"; + public const string Method = "HttpMethod"; + public const string Headers = "HttpHeaders"; - private const string CurrentAccessToken = "UseHttpCurrentAccessToken"; + public const string CurrentAccessToken = "UseHttpCurrentAccessToken"; public static AIToolDefinition UseHttpCurrentAccessToken(this AIToolDefinition definition, bool useCurrentAccessToken = true) { diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/HttpAIToolProvider.cs b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/HttpAIToolProvider.cs index 32022ffa2..dfb2455aa 100644 --- a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/HttpAIToolProvider.cs +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/HttpAIToolProvider.cs @@ -1,9 +1,12 @@ -using Microsoft.Extensions.AI; +using LINGYUN.Abp.AI.Localization; +using Microsoft.Extensions.AI; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using System; +using System.Net.Http; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; +using Volo.Abp.Localization; namespace LINGYUN.Abp.AI.Tools.Http; public class HttpAIToolProvider : IAIToolProvider, ITransientDependency @@ -16,6 +19,27 @@ public class HttpAIToolProvider : IAIToolProvider, ITransientDependency ServiceProvider = serviceProvider; } + public virtual AIToolPropertyDescriptor[] GetPropertites() + { + return [ + AIToolPropertyDescriptor.CreateStringProperty( + HttpAIToolDefinitionExtenssions.Endpoint, + LocalizableString.Create("HttpAITool:Endpoint")), + AIToolPropertyDescriptor.CreateSelectProperty( + HttpAIToolDefinitionExtenssions.Method, + LocalizableString.Create("HttpAITool:Method"), + [ + new(HttpMethod.Get.Method, HttpMethod.Get.Method), + new(HttpMethod.Post.Method, HttpMethod.Post.Method), + ]), + AIToolPropertyDescriptor.CreateDictionaryProperty( + HttpAIToolDefinitionExtenssions.Headers, + LocalizableString.Create("HttpAITool:Headers")), + AIToolPropertyDescriptor.CreateBoolProperty( + HttpAIToolDefinitionExtenssions.CurrentAccessToken, + LocalizableString.Create("HttpAITool:CurrentAccessToken"))]; + } + public virtual Task CreateToolsAsync(AIToolDefinition definition) { string? description = null; diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/Localization/Resources/en.json b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/Localization/Resources/en.json index 088f61324..36672f8ec 100644 --- a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/Localization/Resources/en.json +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/Localization/Resources/en.json @@ -1,6 +1,10 @@ { "culture": "en", "texts": { - "Tools:GetApplicationConfiguration": "Get Application Configuration" + "Tools:GetApplicationConfiguration": "Get Application Configuration", + "HttpAITool:Endpoint": "Endpoint", + "HttpAITool:Method": "Method", + "HttpAITool:Headers": "Headers", + "HttpAITool:CurrentAccessToken": "Use the current user token" } } \ No newline at end of file diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/Localization/Resources/zh-Hans.json b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/Localization/Resources/zh-Hans.json index d8439fa2d..4f62a73de 100644 --- a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/Localization/Resources/zh-Hans.json +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Http/LINGYUN/Abp/AI/Tools/Http/Localization/Resources/zh-Hans.json @@ -1,6 +1,10 @@ { "culture": "zh-Hans", "texts": { - "Tools:GetApplicationConfiguration": "获取应用程序配置" + "Tools:GetApplicationConfiguration": "获取应用程序配置", + "HttpAITool:Endpoint": "请求地址", + "HttpAITool:Method": "请求方法", + "HttpAITool:Headers": "请求头", + "HttpAITool:CurrentAccessToken": "使用当前用户Token" } } \ No newline at end of file diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN.Abp.AI.Tools.Mcp.csproj b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN.Abp.AI.Tools.Mcp.csproj index 838a8c793..487b3429f 100644 --- a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN.Abp.AI.Tools.Mcp.csproj +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN.Abp.AI.Tools.Mcp.csproj @@ -14,6 +14,11 @@ + + + + + diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/Localization/Resources/en.json b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/Localization/Resources/en.json new file mode 100644 index 000000000..668fef84b --- /dev/null +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/Localization/Resources/en.json @@ -0,0 +1,14 @@ +{ + "culture": "en", + "texts": { + "McpAITool:Endpoint": "Endpoint", + "McpAITool:Headers": "Headers", + "McpAITool:TransportMode": "Transport Mode", + "McpAITool:TransportModeDesc": "The transport mode to use for the connection. The default is: Auto Detect.", + "McpAITool:ConnectionTimeout": "Connection Timeout", + "McpAITool:ConnectionTimeoutDesc": "The timeout used to establish the initial connection to the SSE server. The default is 30 seconds.", + "McpAITool:MaxReconnectionAttempts": "Max Reconnection Attempts", + "McpAITool:MaxReconnectionAttemptsDesc": "The maximum number of reconnection attempts. The default is 5.", + "McpAITool:CurrentAccessToken": "Use the current user token" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/Localization/Resources/zh-Hans.json b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/Localization/Resources/zh-Hans.json new file mode 100644 index 000000000..401f0ad7b --- /dev/null +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/Localization/Resources/zh-Hans.json @@ -0,0 +1,14 @@ +{ + "culture": "zh-Hans", + "texts": { + "McpAITool:Endpoint": "请求地址", + "McpAITool:Headers": "请求头", + "McpAITool:TransportMode": "传输方式", + "McpAITool:TransportModeDesc": "连接所采用的传输方式, 默认: Auto Detect.", + "McpAITool:ConnectionTimeout": "超时时间", + "McpAITool:ConnectionTimeoutDesc": "用于建立与 SSE 服务器初始连接的超时时间, 默认: 30秒.", + "McpAITool:MaxReconnectionAttempts": "最大重连次数", + "McpAITool:MaxReconnectionAttemptsDesc": "最大重连次数, 默认: 5次.", + "McpAITool:CurrentAccessToken": "使用当前用户Token" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/McpAIToolDefinitionExtenssions.cs b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/McpAIToolDefinitionExtenssions.cs index 5854903d4..9914af69c 100644 --- a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/McpAIToolDefinitionExtenssions.cs +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/McpAIToolDefinitionExtenssions.cs @@ -6,12 +6,12 @@ using Volo.Abp; namespace LINGYUN.Abp.AI.Tools.Mcp; public static class McpAIToolDefinitionExtenssions { - private const string Endpoint = "McpEndpoint"; - private const string Headers = "McpHeaders"; - private const string TransportMode = "McpTransportMode"; - private const string ConnectionTimeout = "McpConnectionTimeout"; - private const string MaxReconnectionAttempts = "McpMaxReconnectionAttempts"; - private const string CurrentAccessToken = "UseMcpCurrentAccessToken"; + public const string Endpoint = "McpEndpoint"; + public const string Headers = "McpHeaders"; + public const string TransportMode = "McpTransportMode"; + public const string ConnectionTimeout = "McpConnectionTimeout"; + public const string MaxReconnectionAttempts = "McpMaxReconnectionAttempts"; + public const string CurrentAccessToken = "UseMcpCurrentAccessToken"; public static AIToolDefinition UseMcpCurrentAccessToken(this AIToolDefinition definition, bool useCurrentAccessToken = true) { diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/McpAIToolProvider.cs b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/McpAIToolProvider.cs index 1b32dc900..b56abbd34 100644 --- a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/McpAIToolProvider.cs +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools.Mcp/LINGYUN/Abp/AI/Tools/Mcp/McpAIToolProvider.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.AI; +using LINGYUN.Abp.AI.Localization; +using Microsoft.Extensions.AI; using Microsoft.Extensions.DependencyInjection; using ModelContextProtocol.Client; using System; @@ -8,6 +9,7 @@ using System.Net.Http; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Http.Client.Authentication; +using Volo.Abp.Localization; namespace LINGYUN.Abp.AI.Tools.Mcp; public class McpAIToolProvider : IAIToolProvider, ITransientDependency @@ -25,6 +27,37 @@ public class McpAIToolProvider : IAIToolProvider, ITransientDependency HttpClientFactory = httpClientFactory; } + public virtual AIToolPropertyDescriptor[] GetPropertites() + { + return [ + AIToolPropertyDescriptor.CreateStringProperty( + McpAIToolDefinitionExtenssions.Endpoint, + LocalizableString.Create("McpAITool:Endpoint")), + AIToolPropertyDescriptor.CreateDictionaryProperty( + McpAIToolDefinitionExtenssions.Headers, + LocalizableString.Create("McpAITool:Headers")), + AIToolPropertyDescriptor.CreateSelectProperty( + McpAIToolDefinitionExtenssions.TransportMode, + LocalizableString.Create("HttpAITool:TransportMode"), + [ + new("Auto Detect", HttpTransportMode.AutoDetect), + new("Streamable Http", HttpTransportMode.StreamableHttp), + new("Sse", HttpTransportMode.Sse), + ], + LocalizableString.Create("HttpAITool:TransportModeDesc")), + AIToolPropertyDescriptor.CreateNumberProperty( + McpAIToolDefinitionExtenssions.ConnectionTimeout, + LocalizableString.Create("McpAITool:ConnectionTimeout"), + LocalizableString.Create("McpAITool:ConnectionTimeoutDesc")), + AIToolPropertyDescriptor.CreateNumberProperty( + McpAIToolDefinitionExtenssions.MaxReconnectionAttempts, + LocalizableString.Create("McpAITool:MaxReconnectionAttempts"), + LocalizableString.Create("McpAITool:MaxReconnectionAttemptsDesc")), + AIToolPropertyDescriptor.CreateBoolProperty( + McpAIToolDefinitionExtenssions.CurrentAccessToken, + LocalizableString.Create("McpAITool:CurrentAccessToken"))]; + } + public async virtual Task CreateToolsAsync(AIToolDefinition definition) { var httpClient = HttpClientFactory.CreateMcpAIToolClient(); diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/AIToolPropertyDescriptor.cs b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/AIToolPropertyDescriptor.cs new file mode 100644 index 000000000..d3f44c9d1 --- /dev/null +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/AIToolPropertyDescriptor.cs @@ -0,0 +1,109 @@ +using System.Collections.Generic; +using Volo.Abp; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.AI.Tools; + +public enum PropertyValueType +{ + String = 0, + Number = 1, + Boolean = 2, + Dictionary = 3, + Select = 4, +} + +public class AIToolPropertyDescriptor +{ + public string Name { get; } + public PropertyValueType ValueType { get; } + public List> Options { get; } + public ILocalizableString DisplayName { get; } + public ILocalizableString? Description { get; } + private AIToolPropertyDescriptor( + string name, + PropertyValueType valueType, + ILocalizableString displayName, + ILocalizableString? description = null) + { + Name = name; + ValueType = valueType; + DisplayName = displayName; + Description = description; + + Options = new List>(); + } + + public static AIToolPropertyDescriptor CreateStringProperty( + string name, + ILocalizableString displayName, + ILocalizableString? description = null) + { + return new AIToolPropertyDescriptor( + name, + PropertyValueType.String, + displayName, + description); + } + + public static AIToolPropertyDescriptor CreateNumberProperty( + string name, + ILocalizableString displayName, + ILocalizableString? description = null) + { + return new AIToolPropertyDescriptor( + name, + PropertyValueType.Number, + displayName, + description); + } + + public static AIToolPropertyDescriptor CreateBoolProperty( + string name, + ILocalizableString displayName, + ILocalizableString? description = null) + { + return new AIToolPropertyDescriptor( + name, + PropertyValueType.Boolean, + displayName, + description); + } + + public static AIToolPropertyDescriptor CreateDictionaryProperty( + string name, + ILocalizableString displayName, + ILocalizableString? description = null) + { + return new AIToolPropertyDescriptor( + name, + PropertyValueType.Dictionary, + displayName, + description); + } + + public static AIToolPropertyDescriptor CreateSelectProperty( + string name, + ILocalizableString displayName, + List> options, + ILocalizableString? description = null) + { + var propertyDescriptor = new AIToolPropertyDescriptor( + name, + PropertyValueType.Select, + displayName, + description); + + foreach (var option in options) + { + propertyDescriptor.WithOption(option.Name, option.Value); + } + + return propertyDescriptor; + } + + public void WithOption(string name, object value) + { + Options.Add(new NameValue(name, value)); + } +} diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/FunctionAIToolDefinitionExtenssions.cs b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/FunctionAIToolDefinitionExtenssions.cs index 9379d79b2..09bb67f6c 100644 --- a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/FunctionAIToolDefinitionExtenssions.cs +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/FunctionAIToolDefinitionExtenssions.cs @@ -5,17 +5,22 @@ using Volo.Abp; namespace LINGYUN.Abp.AI.Tools; public static class FunctionAIToolDefinitionExtenssions { - private const string FunctionType = "Function"; - public static AIToolDefinition WithFunction(this AIToolDefinition definition) + public const string FunctionType = "FunctionType"; + public const string FunctionName = "FunctionName"; + public static AIToolDefinition WithFunction(this AIToolDefinition definition, string? funcName = null) { - return definition.WithFunction(typeof(TFunc)); + return definition.WithFunction(typeof(TFunc), funcName); } - public static AIToolDefinition WithFunction(this AIToolDefinition definition, Type funcType) + public static AIToolDefinition WithFunction(this AIToolDefinition definition, Type funcType, string? funcName = null) { Check.NotNull(funcType, nameof(funcType)); definition.WithProperty(FunctionType, funcType.AssemblyQualifiedName); + if (!funcName.IsNullOrWhiteSpace()) + { + definition.WithProperty(FunctionName, funcName); + } return definition; } diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/FunctionAIToolProvider.cs b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/FunctionAIToolProvider.cs index 482228c22..a1b584dfb 100644 --- a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/FunctionAIToolProvider.cs +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/FunctionAIToolProvider.cs @@ -1,10 +1,12 @@ -using Microsoft.Extensions.AI; +using LINGYUN.Abp.AI.Localization; +using Microsoft.Extensions.AI; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using System; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.DependencyInjection; +using Volo.Abp.Localization; namespace LINGYUN.Abp.AI.Tools; public class FunctionAIToolProvider : IAIToolProvider, ITransientDependency @@ -18,6 +20,19 @@ public class FunctionAIToolProvider : IAIToolProvider, ITransientDependency ServiceProvider = serviceProvider; } + public virtual AIToolPropertyDescriptor[] GetPropertites() + { + return [ + AIToolPropertyDescriptor.CreateStringProperty( + FunctionAIToolDefinitionExtenssions.FunctionType, + LocalizableString.Create("FunctionAITool:FunctionType"), + LocalizableString.Create("FunctionAITool:FunctionTypeDesc")), + AIToolPropertyDescriptor.CreateStringProperty( + FunctionAIToolDefinitionExtenssions.FunctionName, + LocalizableString.Create("FunctionAITool:FunctionName"), + LocalizableString.Create("FunctionAITool:FunctionNameDesc"))]; + } + public virtual Task CreateToolsAsync(AIToolDefinition definition) { var aiToolType = definition.GetFunction(); diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/IAIToolProvider.cs b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/IAIToolProvider.cs index b8027f85f..df0a95157 100644 --- a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/IAIToolProvider.cs +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/IAIToolProvider.cs @@ -6,5 +6,7 @@ public interface IAIToolProvider { string Name { get; } + AIToolPropertyDescriptor[] GetPropertites(); + Task CreateToolsAsync(AIToolDefinition definition); } diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/Localization/Resources/en.json b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/Localization/Resources/en.json index 7a1b2b9f1..d9e4cb283 100644 --- a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/Localization/Resources/en.json +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/Localization/Resources/en.json @@ -5,6 +5,10 @@ "Tools:GetNowTime": "Get now time", "Tools:GetUserInfo": "Get the current user information", "Tools:GetSetting": "Get setting value", - "Tools:GetSettings": "Get all settings" + "Tools:GetSettings": "Get all settings", + "FunctionAITool:FunctionType": "Custom function type", + "FunctionAITool:FunctionTypeDesc": "To use the full name of the function, use Type.AssemblyQualifiedName for retrieval.", + "FunctionAITool:FunctionName": "Custom function name", + "FunctionAITool:FunctionNameDesc": "The name of the called function, if not specified, will default to Invoke (synchronous) or InvokeAsync (asynchronous) function." } } \ No newline at end of file diff --git a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/Localization/Resources/zh-Hans.json b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/Localization/Resources/zh-Hans.json index 0b5545756..a8a4b72fb 100644 --- a/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/Localization/Resources/zh-Hans.json +++ b/aspnet-core/modules/ai/LINGYUN.Abp.AI.Tools/LINGYUN/Abp/AI/Tools/Localization/Resources/zh-Hans.json @@ -5,6 +5,10 @@ "Tools:GetNowTime": "获取当前时间", "Tools:GetUserInfo": "获取当前用户信息", "Tools:GetSetting": "获取设置值", - "Tools:GetSettings": "获取所有设置" + "Tools:GetSettings": "获取所有设置", + "FunctionAITool:FunctionType": "自定义函数类型", + "FunctionAITool:FunctionTypeDesc": "使用函数全名, 应使用Type.AssemblyQualifiedName获取.", + "FunctionAITool:FunctionName": "自定义函数名称", + "FunctionAITool:FunctionNameDesc": "调用的函数名称, 如未指定, 默认调用 Invoke(同步) 或 InvokeAsync(异步)函数." } } \ No newline at end of file