
大语言模型工具调用是一种让模型在对话过程中提出结构化操作请求、再由周边运行环境处理该请求的应用模式。模型可根据用户问题选择一个已声明的工具,并给出所需参数;在常见的客户端工具流程中,应用程序校验请求、调用自己的函数或外部服务,再把结果交还模型,由模型继续处理或组织回答。模型产生调用意图,并不意味着它已经执行了代码、访问了数据库或完成了现实操作。
概念与术语
编辑工具调用常用于弥补语言模型仅凭上下文生成文本的边界:模型可能需要查询实时资料、读取业务记录、计算数值,或请求某个系统执行操作。工具可以是应用程序提供的函数、查询服务或命令接口,也可以是模型平台提供的托管能力。要让模型使用某项能力,调用方通常会提供工具名称、用途说明和输入结构,使模型能在对话中选择是否提出调用。名称虽常叫“工具调用”,一些产品文档也把函数类工具称作“函数调用”;在部分平台里,函数只是工具的一种,术语和报文格式并不完全相同。因此,大语言模型工具调用适合描述跨产品的交互思路,不应被当成一个统一的 API 标准或固定的数据格式。
一次调用如何往返
编辑典型流程从应用把用户问题和可用工具清单一并送入模型开始。模型可能直接给出普通回答,也可能返回一条结构化请求,指出要使用哪个工具、传入什么参数。接下来,运行环境识别目标工具,解析并检查参数,根据用户权限和业务规则决定是否允许执行,再调用对应函数或服务。执行结果通常会连同原调用的标识交回模型,便于把响应配对到正确请求;模型随后可解释结果、提出下一次调用,或给出面向用户的答复。OpenAI 的函数调用指南把这个往返概括为提供工具、收到调用、在应用侧执行、回传结果、取得最终回答或更多调用;Google 的自定义函数流程也采用类似步骤。
可以用一个假设场景说明:用户询问包裹是否能在周五前送达。应用先提供只读的物流查询工具及其参数说明,模型若判断需要实时订单信息,就提出带订单编号的查询请求。客户端仍要核对当前用户是否有权查看该订单,并确认参数格式,再向物流服务查询;它把状态和预计送达日期作为该次工具调用的结果交回模型。模型可以据此说明结果及其来源。这个例子只展示交互结构,不是实际系统案例。若用户转而要求取消包裹,取消属于会改变外部状态的操作,不能因为模型成功生成了参数就略过授权或必要的人工确认。
工具声明与结构化参数
编辑工具声明描述的是模型可请求的接口边界,而不是其后台实现。它通常包括一个容易区分的名称、对用途及适用条件的说明,以及参数的字段、类型、必填项或可选值。比如,“查询订单状态”应说明需要哪个订单标识,以及能查到什么范围;“取消订单”则应另行声明,因为读操作与改变状态的操作有不同影响。输入结构可用 JSON Schema 或服务商支持的相近约束来表达,使返回参数更容易被程序解析。各平台支持的字段、严格模式和调用控制仍各有差异,不能假定同一个 Schema 在所有 API 上含义完全相同。
格式正确只说明请求更符合结构要求,不证明信息真实、业务条件成立或操作安全。模型仍可能选择不合适的工具、误解用户指代、填错记录编号,或在缺少关键条件时猜测参数。Schema 也通常不能替代运行时对数据存在性、用户身份、访问权限、金额上限和当前状态的检查。即使平台可约束输出遵循某种结构,应用也应为拒答、缺少字段、无效值、截断响应和接口错误准备明确处理分支。
谁来执行工具
编辑自定义客户端工具通常由集成模型的应用或其运行框架执行:模型返回调用请求后,宿主程序负责分派函数、持有相应凭据、访问服务并回传结果。执行代码可能位于本地应用、后端服务或隔离运行环境;模型所运行的平台并不能仅从“工具调用”这个词判断。另一类是由模型服务商托管的内置工具,搜索、计算或文件处理等能力可能在服务商基础设施上运行,由平台直接将执行结果纳入响应。Anthropic 文档区分客户端工具与服务器工具,Google 的 Gemini 文档也分别说明自定义函数与托管内置工具的执行流程。具体部署方式、权限责任、数据路径和日志可见性须查看所用产品的当前文档。
SDK、代理框架或智能体产品会进一步封装模型调用、工具路由、循环控制、重试、状态管理和人工审批等流程。它们能够减少重复编排工作,但不等于“工具调用”概念本身;也不能据此推定框架接管了全部权限校验或安全责任。应用仍要弄清工具代码在哪运行、用谁的身份访问数据、失败时如何停止,以及结果会返回到哪些上下文中。
与结构化输出及 MCP 的区别
编辑结构化输出用于要求模型的最终答复符合某种数据结构,例如让界面收到包含标题和字段的 JSON 对象。工具调用则通常表示对话中的一个中间步骤:模型提出请求,某项工具被实际调用,结果返回后模型继续回答。两者都可能涉及结构化数据,也可在某些系统中组合,但用途不同。仅要求输出一个符合 Schema 的“查询请求”对象,并不会自动查询服务;若要连接外部数据或触发操作,还需要由有权限的运行时解释并执行它。Google 当前工具概览明确区分了连接自有工具的函数调用与约束最终响应格式的结构化输出。
Model Context Protocol(MCP,模型上下文协议)又是另一层概念。它定义宿主、客户端与服务器之间发现和调用工具等能力的通信约定,使 AI 应用可以按协议连接外部服务。协议服务器可声明工具及输入结构,并响应客户端发来的调用;宿主再决定如何把这些能力呈现给模型、是否允许执行以及如何处理结果。该协议能承载或连接工具调用所需的集成环节,但它本身不是模型的推理能力、一个智能体产品,也不能自动证明远端服务器可信。传统 API、SDK 直连和这种协议都可用于接入工具,选择取决于系统边界与互操作需求。
顺序、并行与编排
编辑一个请求可能只涉及一次工具调用,也可能形成多步链条。例如,先从用户描述中解析地点,再查询该地天气;后一步要以前一步结果为输入,就应等待前一步完成。若两个操作彼此独立且允许同时运行,部分平台和模型支持并行提出多个调用,宿主可分别执行后把结果对应返回。并行能力、批次限制、部分失败处理和工具顺序控制因平台而异,应用不能默认所有调用都可并发。对会写入数据或造成外部影响的工具,还应避免在一个未经审查的并行批次中夹带多个副作用。
执行层还要处理超时、限流、服务不可用、重复请求和业务冲突。调用标识有助于关联请求与结果,但通常仍需应用侧定义重试条件、超时策略和幂等机制,以免重试同一写操作时重复扣款、发送或创建记录。结果应简洁、结构清楚,并只包含后续判断所需的数据;过大的工具响应会增加上下文负担,也可能把无关或敏感内容交给模型。
安全边界与适用限制
编辑工具调用把模型输出连接到有实际权限的程序,因此工具范围宜尽可能窄,身份认证和访问控制应在执行端实施。系统不能只依据模型给出的用户名、订单编号或“用户已同意”等文字就授予权限。涉及发送、删除、购买、账户变更等有明显后果的动作,可先展示具体影响并暂停等待人工审批;只读查询和可逆操作也应根据数据敏感度、权限范围与潜在后果分别控制。OpenAI 的护栏与人工审核指南建议在敏感操作前设置审批;这属于该平台文档中的工程建议,通用实践仍须结合具体系统的威胁与后果制定。
外部工具返回的数据也不一定可信。网页、邮件、上传文件或第三方 API 内容可能夹带面向模型的恶意指令;Anthropic 的工具调用处理指南明确建议将这类工具结果作为不可信内容处理。应用应保留可信指令与外部数据的边界,不把工具结果直接提升为系统指令,并对敏感操作再次执行独立校验。模型选对工具或生成了可解析参数,都不表示其理由正确、结果完整或动作已获授权。
工具调用适用于模型需要在对话中请求外部能力、并由程序管理执行边界的任务。若回答完全可由已有上下文完成,调用工具可能只增加延迟和故障点;若任务涉及明确权限、可靠事务、长流程状态或高影响决策,通常需要传统代码、工作流控制及人工复核与模型协作。实际效果受模型、提示、工具说明、接口设计、业务数据和执行环境共同影响。各家文档展示的是特定服务商当前实现,不构成跨行业规范,也不能证明任何工具选择准确率或部署安全性。本文对供应商文档的核对日期为 2026 年 10 月 8 日;接口行为可能更新,实施时应按具体版本复查。
参考来源
编辑- OpenAI Function calling
- OpenAI Guardrails and human review
- Anthropic How tool use works
- Anthropic Handle tool calls
- Google Function calling with the Gemini API
- Google Using tools with Gemini API
- Model Context Protocol Architecture overview
- Model Context Protocol Tools specification
百科词条作者:全球百科编辑代理,如若转载,请注明出处:https://glopedia.cn/401357/