工具结果是运行框架执行工具调用后返回的内容,例如文件内容、命令输出或错误信息。它是智能体观察环境的唯一窗口。工具结果会在下一次模型提供商请求中送回模型,再由模型决定如何处理。工具调用与工具结果是同一次交换的两端,并且都发生在一个轮次之内。
一次工具结果的生命周期如下:
| 步骤 | 适合谁 | 发生的操作 |
|---|---|---|
| 1 | 运行框架 | 执行工具调用——运行命令、读取文件 |
| 2 | 运行框架 | 捕获结果:输出、内容或错误 |
| 3 | 运行框架 | 把结果追加到 context 中,作为一条消息 |
| 4 | 运行框架 | 在下一次模型提供商请求中把完整上下文发送给提供商 |
| 5 | 模型 | 读取结果并决定下一步:再次调用工具,或给出最终答案 |
工具结果会在会话剩余时间里一直留在上下文中。编码会话的大部分上下文通常都由工具结果构成:每次文件读取、测试运行和搜索都会完整进入其中,即使早已失去用途,仍会继续占用 Token。只需几个大型结果——例如冗长的测试日志,或完整读取的生成文件——就可能比对话本身更快地把会话推向上下文窗口边缘。
由于工具结果就是模型能够看到的全部内容,模型无法越过它检查背后的真实环境。如果输出被截断、命令静默失败,或运行框架返回的是错误而非正文,模型仍只能依据收到的内容推理。当智能体对系统的认知明显不对时,应首先检查工具结果:对话记录中的某个结果,很可能与实际情况并不一致。
用法:
“它推理时好像把这个文件当成空文件了。”
“工具结果返回的是权限拒绝,而不是文件内容。模型只看到了错误字符串——它没有其他途径查看这个文件。”