🤖 AI 跟我学 新手入门

Function Calling 是什么?AI 调外部工具的原理

Function Calling 是什么?这篇用人话讲清楚函数调用的原理、AI 怎么决定调哪个工具、和 MCP 啥关系,零基础也能 5 分钟搞懂

发布 2026/04/19 📎 参考官方文档

一句话说清 Function Calling 是什么

Function Calling(函数调用)是大语言模型「决定要调用哪个外部函数 / 工具、传什么参数」的一种能力。

它由 OpenAI 在 2023 年 6 月推出,从此 AI 不再只能聊天——还能动手查数据、订机票、发邮件。可以说,没有 Function Calling 就没有今天的 AI Agent

它是 MCP 的底层能力,是 AI Agent 的核心引擎。这篇用人话讲清楚它怎么工作的。

用一个生活场景理解

你问朋友:「上海明天天气怎么样?」

如果朋友是个普通人,他可能猜一个「应该会下雨吧」——这就是没有 Function Calling 的 AI:靠脑子里旧记忆瞎猜。

如果朋友是个聪明人,他会说:「等等,我打开天气 App 查一下。」然后掏出手机点开墨迹天气,输入「上海」,把屏幕上的「明天 22-28 度多云转小雨」念给你听。

这就是 Function Calling 的本质——AI 学会了「我自己不知道,但我知道用哪个工具能查到,于是我去调那个工具」这件事

Function Calling 之前 vs 之后

理解它的革命性,看一下没它的时候 AI 多惨:

没有 Function Calling(2023 年 6 月之前)

  • AI 只能基于训练数据回答
  • 数据截止到 2 年前,问最新新闻一定瞎编
  • 不会算数(GPT-3 算 8 位数乘法会错)
  • 不能查实时信息(汇率、股价、天气)
  • 不能操作任何外部系统

有了 Function Calling 之后

  • AI 不知道时主动调搜索工具
  • 算数时调计算器,不再瞎算
  • 实时数据全靠 API 调来
  • 可以操作几乎任何带 API 的外部系统
  • AI 应用从「聊天」彻底升级为「干活」

Function Calling 的 4 步运行原理

理解了用途,看看它在底下是怎么转的。一次完整的 Function Calling 分 4 步。

第 1 步:你告诉 AI「你有这些工具可用」

开发者在调用大模型 API 时,把可用的工具列表传过去。每个工具包含:

  • 名字:比如 get_weather
  • 描述:「查询某个城市的当前天气」
  • 参数定义:city(城市名,必填)、date(日期,可选)

AI 收到这份「工具说明书」就知道:我手边有哪些工具、每个工具叫什么名、怎么用。

第 2 步:AI 看你的问题,决定要不要调工具、调哪个

你问:「上海明天会下雨吗?」

AI 在脑子里走完这几步:

  • 这是个问天气的问题
  • 我手头有 get_weather 这个工具
  • 调它,传 city=“上海”,date=“明天”

然后 AI 不会直接回答你,而是输出一个结构化的「调用请求」:

function_name: get_weather
arguments:
  city: 上海
  date: 2026-05-18

第 3 步:开发者程序真的去调这个函数

AI 自己不会真的访问天气 API——它只是「决定调」。真的去调的是开发者写的程序:程序拿到 AI 的请求,去访问墨迹天气 API,拿到「上海 5 月 18 日 多云转小雨 22-28 度」。

这一步叫「执行 tool call」。

第 4 步:把结果喂回给 AI,让它生成最终回答

程序把 API 返回的天气数据再发给 AI,AI 看完之后用自然语言告诉你:

上海明天多云转小雨,气温 22 到 28 度,建议带把伞。

整个过程对你来说就是「问 → 答」,但底下 AI 偷偷跑了一次工具调用。这就是 Function Calling 的完整闭环。

一个让你直观感受的对比

下面是同样的问题,AI 在「有/没有 Function Calling」时的真实表现差异。

问题没 Function Calling有 Function Calling
上海今天空气质量AI 瞎编一个 AQI 值调环境监测 API 给真实数据
1234567 × 7654321AI 算错(GPT-3 时代)调 Python 解释器算对
我的订单到哪了AI 说「请去 App 查」调订单接口告诉你「卡在杭州 2 天」
帮我订张周五机票AI 列出航班让你自己订调 12306 接口直接下单
把这段中文翻成日语AI 自己翻(可能不准)调 DeepL 接口(更准)

Function Calling 把 AI 从「博学但失业的教授」变成了「能拿活儿干的实习生」

Function Calling 和 MCP 啥关系

新手最容易混的两个概念。一句话总结:

Function Calling 是 AI「能调工具的能力」;MCP 是「大家约定好怎么调」的标准协议。

打个比方:

  • Function Calling = 你的手能拿东西
  • MCP = 全世界商家都用标准化的把手,让你的手不论拿什么都顺手

Function Calling 是大模型层面的能力,每家 AI 厂商都有自己的格式(OpenAI 一套、Anthropic 一套、Google 一套)。MCP 在上面包了一层标准,让工具开发者写一遍能在所有 AI 里用。

详细对比可以看 MCP 是什么? 里的「MCP vs Function Calling」段落。

普通用户怎么感知 Function Calling?

你可能没意识到,你早就在用了:

  • ChatGPT 的「联网搜索」按钮:底层就是 Function Calling 调搜索工具
  • ChatGPT 的「画图」:调 DALL-E 工具
  • ChatGPT 的「数据分析」:调 Python 解释器
  • Claude 的「Computer Use」:调控制电脑的工具
  • Kimi 的「联网搜索」:调内置搜索引擎
  • GPTs Store 里所有带「Actions」的 GPT:每个 Action 都是 Function Calling

所以哪怕你完全没听过这个词,你日常用的 AI 工具背后都跑着 Function Calling。

开发者用 Function Calling 的 3 个典型场景

如果你是开发者或想搭 AI 应用的产品,下面 3 个场景最常见。

1. 让 AI 接你的业务数据库

公司内部有一个订单数据库。定义一个 query_orders(user_id, date_range) 函数,AI 就能用自然语言查公司订单:「上周哪个客户买得最多?」AI 自己调函数返回结果。

2. 让 AI 跨多个 SaaS 工具协作

定义 3 个函数:read_gmailcreate_jira_ticketsend_slack_message。AI 能跑这个流程:「读最新的客户投诉邮件 → 自动建一个 Jira bug ticket → 在 Slack 群里通知工程师」。

3. 让 AI 在多模态场景中调用专门模型

文字模型 + 图像识别函数 + 语音识别函数。用户传一张图,AI 决定调图像识别工具拿描述,再调文字模型生成回复。这是 OpenAI Cookbook 的 GPT-4 Vision + Function Calling 示例 演示的玩法。

一个让你判断「这个需求要不要用 Function Calling」的 prompt

下面这段你可以扔给任何 AI 帮你设计 Function Calling 接入方案:

📋 Prompt 模板

你是 AI 应用架构顾问。我会描述一个 AI 应用需求,请你帮我判断:

  1. 这个需求是否需要用 Function Calling?为什么?
  2. 如果需要,建议定义哪些 function(每个 function 给名字 + 描述 + 参数)?
  3. 调用这些 function 时有什么风险(数据安全 / 不可逆操作 / 调用费用)?
  4. 推荐用哪个模型实现(GPT-5.1 / Claude Opus 4.7 / 国产模型)?

我的需求是:[这里描述你的需求]

Function Calling 的 3 个常见误区

误区 1:「Function Calling 就是 AI 自己写代码」

错。Function Calling 不是 AI 写代码。AI 只是「决定要调哪个已有函数、传什么参数」——真正的函数代码是开发者提前写好的。

误区 2:「只有 GPT 系列模型才能做 Function Calling」

错。2026 年所有主流大模型都支持:GPT 系列、Claude 系列、Gemini 系列、DeepSeek、Qwen、文心、豆包都有自己的 Function Calling 实现。

误区 3:「定义了 function 后 AI 一定会调」

错。AI 自己判断「需不需要调」。如果它觉得问题用脑子里的知识就能答(比如「1+1 等于几」),它就不会调计算器。所以 prompt 写得好不好直接影响调用率。

在中国能用 Function Calling 吗?

完全能用。所有国产大模型都支持,常见的:

  • DeepSeek:开源、便宜、Function Calling 能力强
  • Qwen 通义千问:阿里出品,电商场景多
  • Kimi:月之暗面,长上下文 + Function Calling
  • 文心一言:百度,国内生态完善
  • 豆包:字节,配合扣子用最顺

如果你完全不想自己写代码,直接用 扣子 Coze 或 Dify 这种平台,它们已经把 Function Calling 包装成可视化拖拽,会写 prompt 就能用。

下一步

常见问题

Q:Function Calling 是不是就是 Tool Use / Tool Calling? A:是。OpenAI 早期叫 Function Calling,现在新版 API 改名叫 Tool Calling 或 Tool Use,Anthropic 一直叫 Tool Use。三个词意思完全一样,2026 年混着用。

Q:调用一次 Function 收费吗? A:调函数本身不收 AI 厂商的钱,但 AI 决定调用的过程会消耗 token(属于正常调用费用)。函数被调用后访问的第三方 API(如调高德地图)按各自规则收费。

Q:我不是开发者,能用上 Function Calling 吗? A:能。你在 ChatGPT 里点「搜索」按钮、用 Kimi 上传文件、用扣子搭工作流——本质上都是触发 Function Calling。你不需要懂技术细节,知道有这个能力就行。

Q:Function Calling 准确率多高? A:2026 年的主流大模型在「决定调哪个工具、传什么参数」上准确率普遍超过 90%。但复杂任务(10+ 步骤连续调用)准确率会下降,所以 Agent 设计时要加重试和兜底。

Q:哪里能找现成的 Function Calling 示例代码? A:OpenAI Cookbook(开发者):How to call functions with chat models 是最经典的入门。Anthropic、Google 各家文档也都有 Tool Use 章节。