promptgarten 🌱
🌍 DE
概念●●○4 分钟 · +40 XP

工具使用(Tool Use):LLM 如何调用工具

工具使用(Tool Use,也叫 function calling)让 LLM 不只是写文字,还能调用真正的函数——这是每个 AI agent 的基础。

核心问题

LLM 本身只能生成文字。它不能保存文件、查询数据库,也不能发邮件。工具使用(Tool Use,也叫 function calling)解决了这个问题:你把可用的“工具”(tools)描述给模型——比如一个叫 get_weather 或 send_email 的函数——并附上一份说明它们需要什么输入的 schema。

整个流程是如何运作的

当模型判断需要用到某个工具时,它不会用普通文字回答,而是返回一个结构化的“tool_use”块:工具名称加上以 JSON 格式给出的输入参数。你的应用读取这个块,执行真正的操作(调用 API、查询数据库),然后把结果作为“tool_result”发回给模型。模型会用这个结果继续工作,或组织出最终答案。

为什么这是所有 agent 的基础

Agent 归根结底就是一个在循环中调用工具的 LLM:提出请求、使用工具、读取结果、选择下一个工具,直到任务完成。没有工具使用,模型就只是一个纯文字生成器,无法对真实世界产生任何影响。

一个重要的特性

模型本身从不执行代码。它只决定何时调用哪个工具、传入什么参数。真正的执行——以及由此而来的风险控制——都掌握在你的应用手里。

示例

一个天气工具被定义为 { name: 'get_weather', input_schema: {location: string} }。用户问:“柏林天气怎么样?”Claude 返回一个 tool_use 块:{ name: 'get_weather', input: {location: 'Berlin'} }。你的应用调用真正的天气 API,把结果作为 tool_result 发回。之后 Claude 才会把它组织成文字回答。

🛠️ 练习——自己动手试试

为你自己选的一个任务(比如 search_product)定义一个简单的工具 schema,然后让一个 LLM 生成对应的 tool_use 调用。

  1. 为你的工具写一个 JSON schema,包含名称、描述和 1-2 个输入参数。
  2. 写一个明显需要用到这个工具的用户问题,把它和 schema 一起交给一个模型。
  3. 检查返回结果:是否收到了一个带有合理参数的正确 tool_use 块?

自查清单

  • 模型有没有选对工具(而不是比如直接猜一个答案)?
  • tool_use 块里的参数是否正确地从用户问题中提取出来了?
  • 如果工具描述写得含糊,会发生什么——你有没有实际测试过?

小测验

当 Claude 想要调用一个工具时,会发生什么?

来源

相关主题

什么是 AI agent?(和 chatbot 的区别) ●○○Agent loop:思考 → 行动 → 检查 → 重复 ●●○MCP(Model Context Protocol):AI 工具如何互联 ●●○什么是 API?(说人话版) ●○○