Source: https://aiprimetech.io/zh/docs/api-reference/tool-use/ [首页](/zh/) / [文档](/zh/docs/) / 工具使用与函数调用 # 工具使用与函数调用 让模型调用您的函数——请求循环、两种格式,以及浪费 token 的常见错误。 复制页面 [ 以 Markdown 查看](/zh/docs/api-reference/tool-use.md) [ 向 ChatGPT 提问](https://chatgpt.com/?q=Read%20https%3A//aiprimetech.io/docs/api-reference/tool-use.md%20and%20answer%20questions%20about%20it.%20Start%20with%20a%20short%20summary.) [ 在 Claude 中提问](https://claude.ai/new?q=Read%20https%3A//aiprimetech.io/docs/api-reference/tool-use.md%20and%20answer%20questions%20about%20it.%20Start%20with%20a%20short%20summary.) 工具使用让模型能够请求你运行一个函数,然后根据结果继续处理。这是所有编程智能体背后的机制。 ## 交互循环 - 你发送 messages 以及 tools ,用于描述可用的工具。 - 模型回复一个 stop_reason: tool_use 以及一个 tool_use 块,其中指定工具名称及其参数。 - 由你 执行它——网关绝不会运行你的代码。 - 你将完整历史记录连同一个 tool_result 块一起发回。 - 模型生成最终答案,或请求调用另一个工具。 ## 定义工具(Messages 格式) ``` Copy{ "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?"}] } ``` ## 返回结果 ``` Copy{ "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 就可能占用大部分输入 token。 - 结果会成为上下文。 如果工具返回 200 行 JSON,这些内容会全部包含在下一次请求以及此后的每次请求中。 - 每次往返都是一次计费调用。 一个需要调用五个工具的任务至少需要六次请求。 - 限制工具输出的长度,并在返回前进行摘要。在大多数智能体循环中,将结果裁剪到模型实际需要的内容,是最能发挥作用的改进。 工具 schema 在各轮之间保持稳定,因此与系统提示词一样,非常适合作为 [提示词缓存](/zh/docs/guides/prompt-caching/) 的候选内容。 [消息 API基础参考](/zh/docs/api-reference/messages/)[费用控制智能体的 token 用在哪里](/zh/docs/guides/cost-control/)[MCP 服务器Claude Code 的现成工具](/zh/docs/guides/mcp-servers/) [上一页速率限制](/zh/docs/api-reference/rate-limits/)[下一页视觉与图像输入](/zh/docs/api-reference/vision/)