大模型的 Function Calling 是什么:让 AI 调用你的外部工具

编程狮(w3cschool.cn) 2026-09-30 11:31:43 浏览数 (29)
反馈

Function Calling 是什么让 AI 调用外部工具

Function Calling(常被称为函数调用或工具调用)让大模型从"只会聊天"升级成"能动手做事":它输出的是"要调用的函数和参数",真正执行的却是你的代码。你让模型"查北京明天天气",它若只能凭记忆编温度就毫无价值;而支持 Function Calling 的应用能真的返回实时天气。靠的不是模型自己知道,而是它学会了用结构化方式表达"我需要调一个查天气的接口",把"干活"这件事交还给你的程序。理解它,是看懂现代 AI 应用怎么接上真实世界的第一步。

Function Calling 从提问到作答的闭环流程图

先看结论

你以为的 AI 实际该做的 AI Function Calling 的作用
模型自己"知道"答案 模型承认不知道,转而调工具 把"动作"从模型里剥离出来
答案靠记忆,易错 答案来自真实接口返回 结果可验证、可实时
纯文本输入输出 结构化输出函数名+参数 你的程序能直接执行

如果你希望 AI 能查实时数据、操作业务系统,而不是只陪聊,Function Calling 是绕不开的基础能力。

它解决了什么问题

大模型本质上是"文本进、文本出"的概率模型。它擅长语言,但不擅长两件事:一是获取训练数据之外的新鲜信息(天气、股价、库存),二是执行动作(调用外部工具、下单、发邮件、改数据库)。硬要让它"直接回答",它只能靠记忆编,也就是幻觉。想看 Function Calling 怎么落地到开发,可参考 AI 编程技能教程。

Function Calling 的解法是:把"执行动作"这件事从模型身上拿掉,改成让模型输出一个结构化指令——"我想调用 get_weather,参数是城市=北京"。至于这个函数怎么查、查哪个接口,全由你的代码实现。模型只负责"在什么情况下该调哪个函数、填什么参数",真正产生真实结果的是你的程序。

核心概念与三个角色

理解 Function Calling,关键是分清三方职责:

  • 函数声明(Schema):你提前告诉模型"有哪些函数可用、每个要什么参数"。这通常是一段 JSON(可看 JSON 教程 了解格式),描述函数名、用途和参数类型,相当于给模型一份"工具清单"。
  • 模型:读用户问题和工具清单,决定调不调、调哪个、填什么参数,并输出结构化结果(而不是最终答案)。
  • 你的执行代码:收到模型给的函数名和参数,真正去调用 API、查库、执行动作,再把结果返回给模型。

注意:Function Calling 里模型从不亲自执行函数,它只是"建议调用"。是否执行、怎么执行,完全在你的代码手里,这也是安全控制的落点。

模型输出指令与代码真实执行的对比卡片

一次调用是怎么发生的

以"查北京天气"为例,完整链路是:

  1. 你先把 get_weather 的函数声明连同用户问题一起发给模型。
  2. 模型判断:要回答这个问题,需要调 get_weather,参数是 city=北京,于是输出结构化调用请求。
  3. 你的程序解析这个请求,真正去请求天气接口,拿到"晴,22℃"。
  4. 你把"晴,22℃"作为新消息回传给模型。
  5. 模型用这个真实结果组织成自然语言回答用户。

整个过程里,模型两次出场:第一次决定"调什么",第二次把"真实结果"翻译成人话。真正发生网络请求的是第 3 步的你方代码。

怎么开始用

对开发者来说,最小可跑的骨架是先声明函数,再解析模型的输出。示意如下:

{
  "name": "get_weather",
  "description": "查询指定城市的当前天气",
  "parameters": {
    "type": "object",
    "properties": {
      "city": { "type": "string", "description": "城市名" }
    },
    "required": ["city"]
  }
}

落地 Function Calling 记住三点:一是函数描述要写清楚用途和参数,模型靠它判断何时调用;二是执行前做权限与参数校验,别让模型传来的内容直接进危险操作;三是把函数返回结果再喂回模型做润色,而不是直接把原始 JSON 丢给用户。

配置好函数声明后,先安装对应 SDK 并运行一次最小示例:检查模型是否输出了预期的函数名和参数;若调用失败或参数缺失,按报错修复后重试验证。(以下示例依据各家大模型官方文档,具体字段以你用的 SDK 版本为准。)

总结

Function Calling 是"让 AI 动手"的基石:它让模型学会用结构化方式表达"我想调某个函数",而真实执行交给你的代码。它既解决了模型知识截止、不会实时数据的问题,又把安全与可控性留在开发者手里。理解了它,也就理解了为什么今天的 AI 能查天气、能下单、能操作你的系统。

常见问题

Q:Function Calling 和 Agent 是一回事吗?

不是。Function Calling 是"模型会请求调函数"这一项能力;Agent(智能体)是更高层的概念,通常指模型反复调用函数、自己规划多步任务。Agent 往往建立在 Function Calling 之上。

Q:模型会乱调函数吗?

可能。所以要在函数声明里写清用途,并在你的代码层做白名单和参数校验,只执行预期内的调用。

Q:所有模型都支持吗?

主流大模型的 Function Calling 大多支持,但具体格式(比如 JSON 结构、是否支持并行调用)各家的 SDK 略有差异,接之前看对应文档。

Q:返回结果很长会怎样?

建议函数只返回模型需要的精简字段,原始大报文留在你方处理,避免把上下文撑爆。

延伸学习

0 人点赞