一句话定义
函数调用(Function Calling)指大语言模型(Large Language Model, LLM)在回答时,不直接执行任何代码,而是输出一段结构化的“调用申请”:要调用哪个函数、参数是什么。真正执行代码的,是外部程序。
它到底在做什么
打个比方:你在餐厅点菜。模型是服务员,不是厨师。你说“来份不辣的番茄炒蛋”,服务员写单子:菜名=番茄炒蛋,辣度=0。单子交给厨房,厨房做菜,再把结果端回来。模型始终没碰锅铲。
技术上也类似。你先把一份函数清单交给模型,里面写着函数名、用途、参数格式(Schema)。模型根据对话判断:该不该调用、调用哪个、参数怎么填,然后通常以 JSON(JavaScript Object Notation)形式输出。你的程序收到后,先校验参数,再真正执行,比如查数据库、发邮件、建日历,最后把返回值追加回对话,模型据此生成最终回答。
所以关键点是:模型负责“理解意图”和“填写调用单”,不负责“执行”。
和相邻概念的区别
| 概念 | 谁执行 | 关键点 |
|---|---|---|
| 函数调用 | 外部程序 | 模型只产出结构化参数 |
| 工具调用(Tool Calling) | 外部程序 | 更宽泛,函数只是工具之一 |
| 检索增强生成(Retrieval-Augmented Generation, RAG) | 检索系统 | 取资料,不产生外部动作 |
| 代码解释器(Code Interpreter) | 平台托管沙箱 | 平台代跑代码,仍不是模型本体执行 |
| 插件(Plugin) | 产品/平台层 | 把外部能力打包给模型用 |
对从业者和普通人的实际意义
对从业者:函数调用是把模型接进业务系统的关键接口。要设计清晰的 Schema,做参数校验、权限最小化、幂等、超时与重试,还要防提示注入诱导模型调用敏感函数。
对普通职场人:它让助手从“会说”变成“会办”。比如查物流、约会议、生成工单、改订单备注。但真正下单、改数据、发邮件的仍是业务系统,风险控制也在系统侧。具体支持格式与限制以官方页面为准。
