AgentTool 代理工具详解
904 字
5 分钟
AgentTool 代理工具详解
AgentTool — 代理工具详解
AgentTool 是一个 面向 Agent 的增强工具接口,提供了:
- UI 友好的展示(
label) - 参数容错(
prepareArguments) - 可中断、可流式更新的执行(
execute的signal和onUpdate) - 细粒度并发控制(
executionMode)
它与 AgentState 中的 tools 数组紧密结合,并且浅拷贝策略让工具对象自身可以安全地在外部被修改,同时数组结构本身受 setter 保护。
AgentTool(代理的工具)— “五要素法”
一个工具包含这五样东西:
label— 显示名字(给人看的,如”查天气”)prepareArguments(可选)— 参数预处理(模型给的参数不标准时,你帮他修一下)execute— 真正干活的方法(核心!)executionMode(可选)— 执行模式(串行还是并行)- 还从基础
Tool继承name和schema(工具标识和参数格式)
execute 的参数(四个参数)
toolCallId— 这次调用的唯一IDparams— 校验后的参数(类型安全)signal— 取消信号(可以中途停止)onUpdate— 进度回调(干到一半时回报)
记忆口诀:名标预执模,干活传四宝(ID、参数、信号、回调)。
五要素详解
1. 显示名称:label
UI 友好的展示名称,给人看的。例如:
- “查天气”
- “搜索文件”
- “执行命令”
2. 参数预处理:prepareArguments(可选)
当模型生成的参数不完全符合预期时,预处理函数可以修正:
- 缺失的默认值
- 类型转换(如字符串转数字)
- 参数补全(如添加上下文相关的隐式参数)
3. 执行方法:execute(核心)
真正干活的方法,支持四个参数:
参数详解:
| 参数 | 类型 | 作用 |
|---|---|---|
toolCallId | string | 本次调用的唯一标识符 |
params | Record<string, any> | 经校验和预处理后的参数 |
signal | AbortSignal | 取消信号,用于中断执行 |
onUpdate | (update: any) => void | 进度回调,流式输出中间结果 |
4. 执行模式:executionMode(可选)
细粒度并发控制:
"sequential"— 串行执行,必须等前一个工具完成"parallel"— 并行执行,多个工具同时执行(默认)
5. 基础属性:name 和 schema
从基础 Tool 接口继承:
name— 工具的唯一标识符(字符串)schema— 参数格式定义(Schema 对象)
可中断执行机制
signal 参数提供中断能力:
流式进度更新
onUpdate 回调支持实时反馈:
// 执行过程中汇报进度onUpdate({ stage: 'downloading', progress: 30, message: '正在获取数据...'});
// 完成时返回结果onUpdate({ stage: 'complete', result: finalResult});与 AgentState 的集成
AgentTool 放在 AgentState.tools 数组中:
| 集成点 | 说明 |
|---|---|
| 数组防护 | State 的 setter 会浅拷贝 tools 数组 |
| 并发控制 | executionMode 决定该工具与其他工具的执行顺序 |
| 状态追踪 | pendingToolCalls Set 记录执行中的工具 ID |
一句话对比
- AgentState:代理的”状态卡”,记着配置、聊天记录和正在干嘛。
- AgentTool:代理的”技能卡”,写着技能叫什么、怎么准备参数、怎么执行、能否并行。
与其他核心类型的关系
| 类型 | 关系 | 交互点 |
|---|---|---|
AgentState | 容器关系 | tools 数组的元素 |
AgentLoopConfig | 配置关系 | beforeToolCall / afterToolCall 钩子控制执行 |
AgentMessage | 结果记录 | 工具执行结果写入对话历史 |
完整工作流:
用户请求 → AgentState(tools列表) → AgentLoopConfig(beforeToolCall) → AgentTool.execute → AgentLoopConfig(afterToolCall) → AgentState(messages记录)支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
相关文章 智能推荐
1
AgentState 代理状态详解
pi 掌握代理的配置快照与运行时状态管理,理解系统提示、对话历史、流式输出的核心字段
2
AgentLoopConfig 主循环配置详解
pi 深入理解代理主循环的八大钩子配置,掌握 LLM 调用、工具执行、Turn 管理的关键节点
3
AgentEvent 类型系统详解
pi 深入理解 AgentEvent 的7种业务事件和 AssistantMessageEvent 的13种技术事件
4
Agent Loop 核心机制详解
pi 深入理解双入口设计、双层循环架构、三种消息注入机制、工具执行模式
5
Loop与Agent 问题驱动的架构设计分析
pi 从表面问题出发,抽象本质问题,推导核心原则,展示技术实现的完整设计过程,理解agent-loop.ts与agent.ts的分层职责
随机文章 随机推荐