概念更新于 2026-06-24 · 版本 1.1
什么是工具使用(函数调用)?
工具使用(也称为函数调用)允许语言模型调用外部函数、API 或代码,以获取信息或在现实世界中执行操作。模型决定调用哪个工具以及使用什么参数;应用程序运行该工具并返回结果,模型利用该结果继续执行。工具使用是将文本生成器转变为能够实际执行任务的智能体的桥梁。
证据: 生产环境置信度: 中来源: 生产系统来源: 个人经验来源: 行业观察来源: 论文
定义
工具使用(函数调用)是指允许语言模型调用预定义的外部函数或 API(使用其生成的参数),并将结果整合到其响应或下一步骤中的能力。
核心要点
- 工具使用将模型与实时数据 and 实际操作连接起来。
- 模型选择工具和参数;应用程序执行该工具。
- 清晰、描述详尽的工具可以显著提高可靠性。
- 它是智能体和 MCP 背后的核心机制。
- 工具访问在扩展能力的同时,也扩大了安全攻击面。
背景
模型本身只能生成文本。工具使用打破了这一界限:在给定一组声明的工具后,模型可以选择调用其中一个(例如搜索、数据库查询或支付 API),然后对结果进行推理。
工具的描述方式与模型本身同样重要。为模型使用而编写的工具——清晰的名称、精确的参数、有用的描述和错误信息——是 Harness Engineering(智能体支撑系统工程)的核心关注点。
架构
循环过程:应用程序声明工具(名称、描述、参数 Schema);模型发出结构化的工具调用;应用程序对其进行验证和执行;结果作为观测值(observation)返回给模型;模型继续执行或做出回答。
MCP 标准化了跨应用程序公开和发现工具的方式,因此编写一次的工具可以被任何兼容的客户端复用。护栏(Guardrails)和权限封装了执行过程以确保其安全。
组件
工具声明(Schema)工具选择(模型)参数生成执行层结果 / 观测值护栏与权限
优势
- 使回答基于实时的真实数据。
- 允许模型采取实际行动,而不仅仅是描述它们。
- 无需重新训练即可扩展模型能力。
- 组合成完整的智能体工作流。
风险
- 提示词注入可能会触发非预期的工具调用。
- 错误的参数或工具误用会导致现实世界中的错误。
- 过宽的工具访问权限会扩大攻击面。
- 延迟和成本随着每次工具往返而增加。
工具与技术
函数调用 APIModel Context Protocol (MCP)LangGraph / 智能体 SDKSchema 验证(例如 JSON Schema、Zod)
示例
- 模型调用天气 API 来回答天气预报问题。
- 智能体在采取行动前查询数据库以查找订单。
- 编码智能体调用测试运行器并读取结果。
- 实践案例:一个自主的 OpenClaw 智能体在 57 天内通过 10 个不同的工具发起了 800 次工具调用——包括 exec (481)、web_search (190)、write (48)、web_fetch (22)、read (21) 等——平均每个会话进行 5.97 次工具调用。这是一个单操作员、本地优先的部署,数据源自该智能体自身的追踪记录。
常见问题解答
- 工具使用和 MCP 是一回事吗?
- 不是。工具使用是模型调用函数的能力。而 MCP 是一种标准,用于规范如何在跨应用程序中公开和发现这些工具和数据。
- 如何让工具使用更可靠?
- 为模型编写工具:清晰的名称、精确的参数 Schema、有用的描述和信息丰富的错误提示。验证参数并限制权限。
- 安全风险有哪些?
- 工具代表着真实的访问权限。提示词注入可能会尝试触发有害的调用,因此请应用最小特权原则、验证输入,并将工具输出视为不可信内容。
- 工具使用能让模型成为智能体吗?
- 它是关键的赋能因素。智能体将工具使用与控制循环、记忆和目标相结合,从而能够跨多个步骤采取行动。