工具调用
Tool call
模型输出的、指明工具及其参数的内容——只是结构化文本。它自己不会做任何事;Harness 必须读取并执行它。由模型在一次模型请求中产生。
工具调用的生命周期:
| 步骤 | 谁 | 发生了什么 |
|---|---|---|
| 1 | 模型 | 从 System Prompt 中的描述了解有哪些工具 |
| 2 | 模型 | 发出一次调用——工具名加参数,通常是 JSON——然后停止 |
| 3 | Harness | 解析调用并根据权限模式检查 |
| 4 | Harness | 如果允许就执行 |
| 5 | Harness | 在下次请求中把结果作为工具结果返回 |
Agent 的一轮工作通常由许多次这样的往返串联而成。
因为调用和其他所有输出一样由 next-Token 预测生成,所以它会像任何模型输出一样出错:路径不存在、命令没有那个 flag、参数看起来合理却并不正确。Harness 执行的是写下来的内容,而不是 intended 的意思——打错的路径不会优雅报错,而是去编辑错误的文件。
用法:
“它说跑了测试,但文件时间戳没变。”
“看看 transcript——它真的发出了工具调用,还只是描述了一下跑测试?模型产生调用,但如果 Harness 没有执行,那就什么都没发生。”