KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA

05. 工具结果为什么要回到下一轮? — keel 龙骨

工具返回事实,不会自动生成用户能读懂的诊断。模型必须在下一轮看到工具结果,才能继续决定或组织最终回答。

工具返回事实,不会自动生成用户能读懂的诊断。模型必须在下一轮看到工具结果,才能继续决定或组织最终回答。

role 是协议语义

role 谁产生 含义
user 用户 目标和补充信息
assistant 模型 文本、thinking 或工具请求
tool Harness/执行器 对某个工具请求的结果

工具结果不能伪装成 user 消息,否则模型会把执行数据理解成用户新指令。

多轮循环

flowchart TD
    A[messages] --> B[模型]
    B --> C[保存完整 assistant 消息]
    C --> D{有 tool_calls?}
    D -->|否| E[最终回答]
    D -->|是| F[转换内部 ToolCall]
    F --> G[Registry + Executor]
    G --> H[追加 tool result]
    H --> I{预算允许继续?}
    I -->|是| A
    I -->|否| J[limit_reached]

运行:

python courses/foundation/tool-calling/course/project/examples/03_tool_loop.py

请沿着 runner.py 找五个位置:工具描述传入模型、assistant 请求保存、供应商对象转内部 ToolCall、tool 结果回传、停止条件。

错误是否回传模型

事件不存在可以作为结构化 tool result 回传,让模型解释或请求补充信息;权限拒绝、输出契约破坏和安全策略拒绝可能直接终止。是否继续由 Harness 错误策略决定,不由模型自由选择。

本章自测

如果模型连续请求同一个工具,为什么不能只依赖 prompt 让它自己停止?因为停止条件是运行时安全边界,必须由 max_steps、deadline、取消和成本预算控制。

下一章:工具失败时为什么不能急着重试?

进入 keel 阅读