工具调用

Tool call

模型输出的、指明工具及其参数的内容——只是结构化文本。它自己不会做任何事;Harness 必须读取并执行它。由模型在一次模型请求中产生。

工具调用的生命周期:

步骤发生了什么
1模型从 System Prompt 中的描述了解有哪些工具
2模型发出一次调用——工具名加参数,通常是 JSON——然后停止
3Harness解析调用并根据权限模式检查
4Harness如果允许就执行
5Harness在下次请求中把结果作为工具结果返回

Agent 的一轮工作通常由许多次这样的往返串联而成。

因为调用和其他所有输出一样由 next-Token 预测生成,所以它会像任何模型输出一样出错:路径不存在、命令没有那个 flag、参数看起来合理却并不正确。Harness 执行的是写下来的内容,而不是 intended 的意思——打错的路径不会优雅报错,而是去编辑错误的文件。

用法:

“它说跑了测试,但文件时间戳没变。”

“看看 transcript——它真的发出了工具调用,还只是描述了一下跑测试?模型产生调用,但如果 Harness 没有执行,那就什么都没发生。”