概念更新于 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、有用的描述和信息丰富的错误提示。验证参数并限制权限。
安全风险有哪些?
工具代表着真实的访问权限。提示词注入可能会尝试触发有害的调用,因此请应用最小特权原则、验证输入,并将工具输出视为不可信内容。
工具使用能让模型成为智能体吗?
它是关键的赋能因素。智能体将工具使用与控制循环、记忆和目标相结合,从而能够跨多个步骤采取行动。

参考文献