协议与标准

函数调用 / 工具调用

也叫: 工具调用 · Tool Calling

函数调用(也叫工具调用)是模型的一种能力:它可以输出一个结构化请求,指定要调用哪个函数、传什么参数,而不是只能生成自然语言文本。

模型工具 / 函数结构化调用 → 结果
模型输出的是结构化调用而不是自然语言文本;应用负责实际执行并返回结果。

一个只会输出文本的模型,最多只能用文字描述自己想做什么,剩下的事得靠别人去解析这段文字再执行——而自然语言天然是模糊的,解析起来并不可靠。函数调用给了模型一份明确定义好的函数列表(名称、说明、期望的参数),模型想用某个函数时,输出的就是一个符合这份定义的结构化调用,而不是一段散文。

真正执行函数的是调用方应用,模型本身不执行任何东西。模型只负责表达意图——调用哪个函数、传什么参数——应用去跑真正的逻辑,再把结果喂回给模型,让它拿着这个新信息继续往下推理。

这是目前绝大多数 Agent 工具使用背后的底层机制。不管一个 Agent 是在搜网页、执行 shell 命令,还是调用某个 MCP 服务端暴露的工具,背后的模式其实都一样:模型输出结构化调用,某个东西去执行它,结果再被带回对话里。

怎么运作

调用方应用会给每个可用的函数定义好名称、自然语言描述,以及参数的 schema,这份定义会被放进模型的上下文里。当模型判断某个函数相关时,输出的是一个结构化对象——函数名加参数值——而不是自然语言文本。应用解析这个结构化输出,用这些参数真正执行对应的函数,再把结果作为一条新消息返回给模型,供它继续推理或生成下一步输出。

举个例子

比如给模型定义了一个 get_weather(location: string) 函数,用户问『东京天气怎么样』时,模型不会凭训练数据里的印象瞎猜答案,而是输出类似 get_weather({"location": "东京"}) 这样的结构化调用;调用方应用去真正查一次天气,把当前情况返回给模型,再由模型汇报给用户。

和相关概念的区别

函数/工具调用是模型调用某一个具体函数时用的底层机制。MCP 在这个机制之上做了一层标准化,让这些函数(以及相关的资源、提示词)能在不同工具和应用之间被统一发现和接入,而不需要为每一个都手写定义。

常见误解

常被以为: 函数调用意味着模型直接执行了代码。
实际上: 模型只是输出一个结构化请求;真正执行函数并返回结果的是调用方应用,不是模型本身。
常被以为: 函数调用和 MCP 是一回事。
实际上: 函数调用是调用单个函数时用的通用机制;MCP 是建立在类似机制之上的一套协议,标准化了工具(以及其他能力)在不同应用之间该怎么被发现和接入。

常见问题

AI 里的函数调用是什么?
这是模型的一种能力:模型可以输出结构化请求,指定调用哪个函数、传什么参数,而不是只输出自然语言文本;调用方应用再去真正执行这个函数。
工具调用和函数调用是一回事吗?
是的,这两个词一般是可以互换的,指的是同一种能力——模型输出符合 schema 定义的结构化调用,而不是普通文本。
模型会自己执行函数吗?
不会——模型只负责生成结构化调用,真正执行函数、返回结果的是承载这个模型的应用。

最近核实: 2026-08-28

相关术语