
Function Calling
Function Calling 是 LLM 调用外部工具和 API 的标准方式——它让模型从"只能说话"变成了"能实际操作"。

① 一句话定义
Function Calling(函数调用)是大语言模型的一种能力:模型不会直接生成文本回答,而是输出一个结构化的函数调用请求(函数名 + JSON 参数),由外部程序执行后将结果返回给模型。它是 LLM 与外部世界交互的核心机制,也是 Agent 的"手和脚"。
② 为什么重要
Function Calling 让 LLM 从"信息孤岛"变成"数字世界的中枢":
- 突破固有局限:LLM 不知道今天的天气,但可以通过 Function Calling 调用天气 API。它不会算复杂数学,但可以调用计算器。
- 连接一切:数据库查询、发送邮件、操作 CRM、控制智能家居——只要能写成 API,LLM 就能"学会"使用。
- Agent 的基石:没有 Function Calling,Agent 只是空谈。有了它,Agent 才能真正"做事"。
③ 核心机制
Function Calling 的工作流程:
1. 工具定义:开发者以 JSON Schema 格式定义每个函数的名称、描述、参数类型和必填字段。例如搜索函数:{name: "search", parameters: {query: string, max_results: integer}}。
2. 模型判断:接收到用户请求后,模型判断"我是否需要调用工具?需要调用哪个?参数是什么?"——如果不需要则不调用,直接回复。
3. 输出结构化调用:与生成自然语言不同,模型输出一个 JSON 对象 {name: "search", arguments: {query: "2026 年 AI 趋势", max_results: 5}}。
4. 外部执行 + 结果注入:程序执行这个函数调用,将结果以"Tool Result"消息的形式注入对话上下文。
5. 整合回答:模型基于工具返回的结果,生成最终的自然语言回答。
④ 典型应用场景
联网搜索:ChatGPT 的 Browse with Bing,基于 Function Calling 调用搜索 API。
数据查询:用户用自然语言问"上个月销售额 Top 10 的产品",Agent 调用 SQL 查询。
操作执行:用户说"把这个文件发邮件给张三",Agent 调用邮件 API 执行发送。
多工具编排:先搜索信息 → 再计算分析 → 最后生成图表,多个 Function 串联完成复杂任务。
⑤ 常见误区
误区:Function Calling = 模型在"执行"函数
✅ 实际上:模型只负责"决定调用什么、传什么参数",真正的执行由外部程序完成。模型不运行代码。
误区:所有模型都支持 Function Calling
✅ 实际上:Function Calling 需要模型经过专门的训练(Tool-use fine-tuning)。早期的开源模型不具备这个能力。现在主流的 GPT-4、Claude 等都已内置支持。
「Function Calling 是 LLM 的"手"——没有它,模型只能"说",有了它,模型能"做"。
」