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);
}