Skip to content

核心概念

Tool Definition

工具定义就是你给模型看的“能力说明书”,一般包含:

  • 名称
  • 描述
  • 参数 schema
  • 可选的约束信息

模型不会真正执行工具,它只会根据说明书决定:

  • 要不要调用
  • 调哪个工具
  • 参数填什么

Tool Call

Tool call 是模型发出的结构化调用请求,不是代码执行本身。

例如:

json
{
  "id": "call_123",
  "type": "function",
  "function": {
    "name": "search_docs",
    "arguments": "{\"query\":\"tool_calls\"}"
  }
}

这段结构的含义是:模型建议宿主程序调用 search_docs,参数为 query=tool_calls

Tool Result

执行工具的是宿主程序,不是模型。执行后返回的结果叫 tool result。

tool result 可能是:

  • 正常业务结果
  • 结构化错误
  • 拒绝执行信息
  • 部分成功信息

Tool Loop

tool loop 是实际应用里最关键的一环:

  1. 发请求
  2. 看模型是否请求工具
  3. 执行工具
  4. 回填结果
  5. 再次请求模型
  6. 直到模型输出最终自然语言回答

Tool Choice

tool choice 用来控制模型的自由度:

含义
auto模型自行决定是否调用工具
none明确不允许工具调用
required必须至少调用一个工具
指定工具名强制调用某个工具

为什么 schema 重要

模型不是类型系统。schema 写得越模糊,模型越容易:

  • 漏字段
  • 字段类型错
  • 编出并不存在的参数
  • 把多个意图塞进一个字段

所以好的 tool schema 通常有这些特点:

  • 字段名短但明确
  • description 足够具体
  • enum 能收窄时就收窄
  • required 只保留真正必要字段
  • 避免一个字段承载多个含义

并行调用

有些模型支持一次返回多个独立 tool calls。适合:

  • 多城市天气查询
  • 多数据源聚合
  • 多文件并行读取

但前提是这些调用彼此独立且宿主支持并发执行

聚焦 OpenClaw、tool_calls、function calling 与 agent 实战。