namespace Service.AgentFramework; /// /// Tool 的定义和元数据 /// public record ToolDefinition { /// /// Tool 唯一标识 /// public string Name { get; init; } = string.Empty; /// /// Tool 描述 /// public string Description { get; init; } = string.Empty; /// /// Tool 对应的委托 /// public Delegate Handler { get; init; } = null!; /// /// Tool 所属类别 /// public string Category { get; init; } = string.Empty; /// /// Tool 是否可缓存 /// public bool Cacheable { get; init; } } /// /// Tool Registry 接口 - 管理所有可用的 Tools /// public interface IToolRegistry { /// /// 注册一个 Tool /// void RegisterTool( string name, string description, Func> handler, string category = "General", bool cacheable = false); /// /// 注册一个带参数的 Tool /// void RegisterTool( string name, string description, Func> handler, string category = "General", bool cacheable = false); /// /// 注册一个带多参数的 Tool /// void RegisterTool( string name, string description, Func> handler, string category = "General", bool cacheable = false); /// /// 获取 Tool 定义 /// ToolDefinition? GetToolDefinition(string name); /// /// 获取所有 Tools /// IEnumerable GetAllTools(); /// /// 按类别获取 Tools /// IEnumerable GetToolsByCategory(string category); /// /// 调用无参 Tool /// Task InvokeToolAsync(string toolName); /// /// 调用带参 Tool /// Task InvokeToolAsync(string toolName, TParam param); /// /// 调用带多参 Tool /// Task InvokeToolAsync( string toolName, TParam1 param1, TParam2 param2); }