你有没有遇到过这种情况——问AI”今天深圳天气怎么样”,它说了一堆但就是不给具体温度?
这不怪它。因为传统AI只能”说”,不能”做”。

Function Calling,就是让AI从只会”动嘴”变成还能”动手”的那个开关。
一句话理解
Function Calling = AI调用外部工具的能力,让它从”回答问题”升级到”帮你做事”。
它是怎么工作的
举个例子,你想让AI帮你查天气:
以前(没有Function Calling):
你:今天深圳天气怎么样?
AI:深圳今天多云,气温23-28度,适宜出行。
(它可能是瞎编的,也可能是训练时碰巧看过相关数据)
现在(有了Function Calling):
你:今天深圳天气怎么样?
AI:正在查询天气...
[自动调用天气API] → 返回真实数据 → 告诉你具体温度、湿度、空气质量
整个过程分三步:
| 步骤 | AI在做什么 |
|---|---|
| 1. 识别意图 | 听懂你想查天气,知道需要调用外部工具 |
| 2. 提取参数 | 从你的问题里提取”深圳”这个参数 |
| 3. 调用执行 | 调用天气API,把真实数据整合进回答 |
关键是第三步——AI不是自己编答案,而是真的去查了。
有什么用
• 查实时信息:天气、股价、汇率、航班——不再瞎编
• 执行操作:发邮件、创文件、搜资料——一步到位
• 连接世界:让AI和你的数据库、CRM、OA系统打通
• 自动化工作流:多个Function串联,实现复杂任务自动化
小八卦
Function Calling这个概念最早由OpenAI在2023年6月的API更新中正式提出。但如果你仔细看,会发现Anthropic的Claude更早就在做类似的事情,只是没有冠以这个名称。
有意思的是,中文社区最初把它翻译成”函数调用”,被开发者吐槽了很久——这哪里是调函数,明明是”召唤工具”嘛。
一句话总结
Function Calling让AI从”能说会道”变成”能说会做”——它是AI从聊天机器人进化成智能助手的关键一步。
想更深入了解?这里是给专业读者的进阶内容。
通俗版告诉你Function Calling是什么。如果你对它的技术实现感兴趣——AI是怎么”决定”要调用哪个函数的、JSON Schema是怎么定义工具参数的,以及目前主流的Agent框架是怎么用Function Calling构建复杂工作流的,请继续往下看。
专业版:进阶理解
学术定义
Function Calling(函数调用)是LLM与外部系统交互的一种机制。它允许模型在对话过程中,根据用户意图识别需要调用的外部API或工具,并以结构化格式(通常是JSON)输出函数名称和参数,供外部系统执行后回传结果。
技术细节
核心工作流:
User Query → LLM识别意图 → 输出{FuncName, Args} → 外部执行 → 返回结果 → LLM整合回答
关键技术组件:
- Tool Schema:用JSON Schema定义每个函数的名称、参数类型、描述
- Function Binding:将函数签名注册到模型上下文,让它”知道”有哪些工具可用
- Result Injection:将执行结果注入到下一轮上下文,让LLM基于真实数据回答
调用方式对比:
| 方式 | 代表模型 | 特点 |
|---|---|---|
| Forced Calling | GPT-4 Turbo | 强制先调用函数再回答 |
| Optional Calling | Claude/Gemini | 模型自己判断是否需要调用 |
| Multi-turn Calling | 主流Agent框架 | 支持多轮调用完成复杂任务 |
技术演进
| 时间 | 里程碑 |
|---|---|
| 2023年6月 | OpenAI在GPT-4 API中正式引入Function Calling |
| 2023年7月 | Anthropic发布Claude 2,支持Tool Use |
| 2023年9月 | Google推出Function Calling in Gemini |
| 2024年 | Function Calling成为AI Agent架构标配 |
| 2025年 | 多模态Function Calling,支持调用视觉/语音工具 |
典型代表
- OpenAI GPT-4 Turbo with Functions:Function Calling的”定义者”,最早实现批量调用
- Anthropic Claude Tool Use:工具使用体验最流畅,支持多轮工具调用
- LangChain/LlamaIndex:将Function Calling封装为标准接口,方便构建Agent
- OpenAI Assistants API:内置Function Calling的Agent开发框架
