【AI核心概念讲解】一口气搞懂 Function Calling:AI Agent 智能体的核心支撑技术
Function Calling:让大语言模型具备调用外部工具的能力 核心要点: Function Calling是大语言模型将自然语言转化为结构化请求以调用外部函数/API的能力 完整交互流程涉及用户、工具、应用服务器、API层和大模型五个角色 一个具备Function Calling能力的模型需要能:解析工具列表、正确选择工具并生成参数、解析工具执行结果 Function Calling与MC
前言
在之前的文章里,我们了解大语言模型(LLM)。但如果你真的用它来解决现实问题,很快就会发现一个致命的短板:它的知识是 “过时” 的,即使连接了 RAG 外部知识库,它也只能获取到定格的信息。
比如你问它 “今天有哪些新闻?”,它会告诉你它的训练数据截止到某个时间,没办法给你最新的结果;你想让它帮你查一明天天气如何,它也做不到。

那怎么解决这个问题?怎么让 LLM 能拿到最新的数据,能操作外部的系统?这就是我们今天要聊的核心:Function Calling(函数调用),它就像是给 LLM 装上了 “手脚”,让它能和外部的工具交互,真正从 “只会聊天” 变成 “能办实事”。
一、什么是 Function Calling?
要搞懂 Function Calling,我们首先要理清两个核心概念:Tool(工具) 和 Function Calling,以及它们之间的关系。
1.1 什么是 Tool(工具)?
那什么是 Tool(工具)?简单来说,Tool 就是那些外部的、能被调用的具体功能。
比如:
-
查天气的函数,输入城市和日期,就能返回对应的天气数据;
-
发邮件的函数,输入收件人、标题、内容,就能帮你把邮件发出去;
-
查快递的函数,输入快递单号,就能返回快递的物流信息。
这些工具都是开发者提前写好的,它们是真正的 “执行单位”—— 你调用它,它就能帮你完成具体的事,拿到你想要的结果。
1.2 什么是 Function Calling ?
Function Calling 是大语言模型(LLM)将自然语言输入转化为可执行的结构化请求,以调用外部函数或API的能力
简单来说:Function Calling 就是 LLM 调用 Tool 函数的能力。

因为我们知道 LLM 其实只是一个 token 预测输出机,所以其实它并没有直接与工具交互的能力,那么我们就需要一个中间件来负责这件事,于是整个流程大概就变成了这样:

1.3 Function Calling 和 Tool 是什么关系?
看到这里你应该就能分清它们了:
-
Tool 是 “被调用的工具”:它是开发者提供给模型的,是实实在在能做事的功能,它是 “被动” 的,等着被调用;
-
Function Calling 是 “调用工具的能力”:它是模型拥有的,是模型能判断什么时候需要用工具、用哪个工具、给什么参数的能力,它是 “主动” 的,是模型的核心能力。
二、Function Calling 的完整交互流程:五个角色,八步交互
搞懂了基础概念,你可能会好奇:当你用了 Function Calling 的 AI 应用,你发了一个请求,背后到底发生了什么?
很多人以为是模型自己直接调用了工具,但其实不是,整个流程里有五个角色,八个步骤,环环相扣,才能完成一次完整的工具调用。
让我们从这五个角色开始,一步步带你走完整个流程。
2.1 五个关键角色
或许有人会问,刚才的流程图中不是只有用户、模型、中间件、工具这四个角色吗?为什么现在变成了五个角色了呢?
答:是因为在真实过程中,AI 应用服务器会先将请求发送到 API 层,再由此层内部 HTTP 接口将请求发送到其底层的大模型。
所以在整个 Function Calling 的流程里,一共有五个关键的角色,每个角色都有自己的分工,缺一不可:
-
用户:是整个流程的发起者和结果的接收者。
-
工具(Tool):就是我们刚才说的外部功能,它其实就是一个函数来负责执行任务。它是真正执行任务、返回结果的角色。
-
应用服务器:就是 AI 应用的后台,它是整个流程的 “中转站”,负责转发所有的请求。
-
API 层:因为不同的底层大模型,它们的输入输出格式不同,所以服务器并不是直接将请求转发给了背后的大模型,而是统一转发到一个统一的、标准的 HTTP 接口,再由内部调用大模型。这样就可以做到不管底层是什么模型,只需要调用这个 API。
-
大模型:这才是底层的那个大语言模型,是负责我们之解析讲过的循环预测下一个token的部分。

注:我们一般将 API 层和底层大模型联合简化叫做模型层,因为它们之间只是多了层调用关系。所以我们平时说的 Function Calling,大多数时候对概念进行了细微的变化,只是指 API 层的能力,因为它是用户直接接触的。
2.2 八步交互全流程
搞懂了角色,我们接下来用一个具体的例子来一步步走完整个流程,你就能完全明白背后发生了什么。为了让你更直观地理解,我们先看一下整个完整的流程示意图:

根据上文的注释,我们可以将 API 层和 LLM 结合起来简化为模型层,因此我们就有了下面八步的简化交互图:

接下来我们一步步拆解:
第一步:用户发送请求到应用服务器
你打开 AI 应用,输入了 “上海明天的天气怎么样?”,点击发送,这个请求首先发到了 AI 应用的后台服务器。
第二步:服务器把请求和工具列表转发给模型层
服务器收到你的请求之后,把你的请求加上所有可用的工具列表,一起发给了模型层。
第三步:模型层思考后决定调用工具,发送调用请求给服务器
模型层收到了你的请求和工具列表,它开始思考:“用户要查明天上海的天气,我自己没有这个数据,我需要调用 get_weather 这个工具,参数是 city = 上海,date = 明天”。然后它把这个调用决定发送给服务器。
第四步:服务器调用对应的工具函数,拿到工具的返回结果
服务器收到模型层的消息之后,它就知道该干嘛了:它找到 get_weather 这个工具函数,把参数传进去,调用它。
第五步:函数查询结果返回服务器
执行 get_weather 工具函数,拿到了相应的结果:“明天上海多云,20-25 度,无降水”,再将结果返回给服务器。
第六步:服务器把工具的结果,返回模型层
服务器拿到工具的结果之后,它把这个结果发给模型层,让模型处理这个结果。
第七步:模型层解析工具执行结果,生成回答返回给服务器
模型层收到了工具的结果,它把这些数据整理成自然语言:“明天上海是多云,气温 20 到 25 度,不会下雨,你不用带伞”。然后将这个回答发给服务器。
第八步:服务器最后将模型生成结果返回给用户
服务器最后再把生成的自然语言发给你,整个流程就完成了。
2.3 什么样的模型,才算拥有了 Function Calling 能力?
那我们怎么判断一个模型,是不是真的拥有 Function Calling 的能力?

其实很简单,从上图中我们可以看出,只需要它满足三个核心能力:
-
能解析工具列表。把所有可用的工具告诉它,它能看懂这些工具是干嘛的,什么时候该用它们。比如你告诉它 “有个 get_weather 的工具,能查天气”,它能理解这个工具的作用,而不是看不懂。
-
能挑选工具并给出正确的参数。当用户的需求需要用到工具的时候,它能判断出该用哪个工具,并且能从用户的话里提取出正确的参数。比如用户说 “帮我查下明天上海的天气”,它能知道要调用 get_weather,而且参数是 city = 上海,date = 明天,而不是搞反了,或者给错了参数。
-
能解析工具的执行结果。当工具把结果返回给它之后,它能看懂这个结果,并且能把它整理成自然语言,回答给用户。比如工具返回了一堆天气的结构化数据,它能把它变成 “明天上海是多云,气温 20 到 25 度,不会下雨” 这样的人话。
只要一个模型同时拥有这三个能力,我们就说它拥有了 Function Calling 的能力。但一般我们无法严格意义上地与模型打交道,更多地只是调用相对应的 API 所以大多数情况下我们都将 Function Calling 的能力认为是 API 具有。
三、Function Calling 和 MCP 的对比
很多人将 Function Calling 和 MCP 混淆,甚至认为它们都是干的调用工具的活,而 MCP 更加标准,所以 MCP 是取代 Function Calling 的关系?
但其实完全不是这样,它们是完全不同层级的技术,不是取代关系,而是互补的最佳搭档。
接下来我会简单地介绍 MCP 是什么,以及它和 Function Calling 的核心区别,还有它们到底是什么关系。
3.1 什么是 MCP?
MCP 的全称是 Model Context Protocol,也就是模型上下文协议,它是 Anthropic 推出的一个开源的、统一的通信协议标准。
有关 MCP 更详细的内容,我会在之后的文章中进行解析。
3.2 Function Calling 和 MCP 的核心区别
搞懂了 MCP 是什么,我们就能很清楚地看到它和 Function Calling 的区别:一个是能力,一个是标准,它们完全是不同层级的东西:
-
Function Calling 是模型的外部工具使用能力。它作用于模型与服务器之间,为模型提供了可以使用工具的能力。同时模型具有 Function Calling 能力需要具备上述的三个能力:
- 能解析工具列表
- 能挑选工具并给出参数
- 能解析工具的执行结果
-
MCP 是函数的发现与调用协议。它作用于函数与服务器之间,规定了服务器如何发现与调用函数。MCP 本身和模型并没有直接关系。

3.3 Function Calling 和 MCP 的互补关系
原本的 Tool 负责单一职责,而 MCP Server 集成了多个 Tool,形成了一种类似于 APP 的多功能系统。

因为 MCP 规定了一套统一的工具发现与调用协议,所以你完全可以选择在 Function Calling 中按照 MCP 的规范来调用 MCP Server。
总结
至此,我们的 AI 不仅会说话、知识渊博、如今还拥有了动手能力。 Function Calling 是 LLM 发展过程中一个非常重要的里程碑,它让 LLM 从只能聊天的机器变成可以动手的助手。
它让模型能突破自己的知识和能力的限制,调用外部的工具,和整个世界交互。而这,也是现在所有 AI Agent 的基础 —— 没有 Function Calling,就没有能帮你自动完成任务的智能助手。
希望这篇文章,能让你彻底搞懂 Function Calling 到底是什么,以及它背后的流程是什么。
感谢你看到这里,如果喜欢的话可以点个关注支持一下吧!欢迎各位关注我的微信公众号:咪的Coding。也欢迎各位在评论区留言!
更多推荐




所有评论(0)