首页 / 文档 / 工具使用与函数调用

工具使用与函数调用

让模型调用您的函数——请求循环、两种格式,以及浪费 token 的常见错误。

工具使用让模型能够请求你运行一个函数,然后根据结果继续处理。这是所有编程智能体背后的机制。

交互循环

  1. 你发送 messages 以及 tools ,用于描述可用的工具。
  2. 模型回复一个 stop_reason: tool_use 以及一个 tool_use 块,其中指定工具名称及其参数。
  3. 由你 执行它——网关绝不会运行你的代码。
  4. 你将完整历史记录连同一个 tool_result 块一起发回。
  5. 模型生成最终答案,或请求调用另一个工具。

定义工具(Messages 格式)

{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "tools": [{
    "name": "get_weather",
    "description": "Current weather for a city. Use when the user asks about weather.",
    "input_schema": {
      "type": "object",
      "properties": {"city": {"type": "string", "description": "City name"}},
      "required": ["city"]
    }
  }],
  "messages": [{"role": "user", "content": "Weather in Paris?"}]
}

返回结果

{
  "role": "user",
  "content": [{
    "type": "tool_result",
    "tool_use_id": "toolu_01ABC...",
    "content": "18C, light rain"
  }]
}
tool_result 放在角色为以下值的消息中 user,以及 tool_use_id 必须与模型请求中的 id 完全匹配。id 不匹配会被视为无效请求而遭到拒绝。

OpenAI 格式

该 /v1/chat/completions 端点使用 OpenAI 的 tools / tool_calls 格式,结果则以角色为以下值的消息返回 tool.

工具使用的成本

工具 schema 在各轮之间保持稳定,因此与系统提示词一样,非常适合作为 提示词缓存 的候选内容。