从"废话大师"到"行动派"

2023年初,ChatGPT惊艳世界,但它有一个致命的局限:它只能输出文字,不能执行任何实际操作。你问它"上海明天天气怎么样",它只能告诉你"我无法获取实时信息"。

2026年,情况完全不同了。你问ChatGPT同样的问题,它自动调用天气API,返回精确的温度、湿度和降水概率。你让它"帮我订一张下周三去北京的机票",它自动查询航班、比较价格、完成预订。

这个转变的核心技术,就是Function Calling(函数调用)。它让大模型从"只会说话"进化到了"会做事"。

Function Calling的工作原理

Function Calling的本质其实很简单:大模型被训练成能够输出结构化的JSON,而不是自由文本。

具体流程是这样的:

  1. 你定义一组"工具"(函数),每个工具包含名称、描述、参数schema。比如一个天气查询工具,参数包括城市名和日期。

  2. 当你向大模型发送请求时,这些工具定义会一起发送给模型。

  3. 模型分析你的请求,如果判断需要调用某个工具,它会输出一个JSON格式的函数调用——包含工具名称和参数值。

  4. 你的应用程序执行这个函数调用,获取结果(比如天气数据),然后把结果返回给模型。

  5. 模型根据工具返回的结果,生成最终的自然语言回复。

整个过程,模型本身并不执行任何代码——它只是"决定"调用哪个函数以及传什么参数。实际执行是由你的应用程序完成的。

模型是怎么学会函数调用的?

这涉及到两个层面的训练:

指令微调(Instruction Tuning):在模型训练阶段,给模型大量"用户请求-函数调用-结果-回复"的四元组数据。模型学习到:当用户说"查天气"的时候,应该输出一个调用天气工具的JSON;当工具返回结果后,应该把结果整理成自然语言。

格式约束(Format Constraints):在推理时,通过logit bias或grammar约束,强制模型输出符合JSON Schema的文本。这确保了模型输出的函数调用是可以被解析的。

2026年,大多数模型(GPT-4o、Claude 4、Gemini 2.5、Qwen-3、DeepSeek-V3)都原生支持函数调用,不需要额外的微调。

两个关键的技术挑战

幻觉函数调用(Hallucinated Function Calls):模型可能会调用一个不存在的函数,或者给函数传递不存在的参数。这在2023-2024年非常普遍,但在2026年已经有了显著改善——通过更好的训练数据和更严格的格式约束,幻觉率从10-15%降低到了2-3%。

函数调用的时机判断:模型需要判断什么时候应该调用函数,什么时候不应该。一个过度激进的模型可能会在不该调用函数的时候调用函数(比如用户只是在闲聊);一个过度保守的模型可能在需要调用函数的时候不调用。

Function Calling vs 传统编程

Function Calling正在改变我们构建应用的方式。传统编程中,你需要写大量的if-else逻辑来处理各种用户意图。有了Function Calling,你只需要定义好工具,模型会自动判断用户的意图并选择合适的工具。

这本质上是将"意图识别"和"参数提取"这两个任务从规则系统转移到了大模型身上。对于复杂、多变的用户需求,这比传统方法灵活得多。

2026年的进化方向

Function Calling正在向几个方向进化:从单次调用到多轮链式调用(模型可以连续调用多个工具完成复杂任务);从文本参数到多模态参数(直接传入图片、音频);从预定义工具到动态工具发现(模型可以自己查找和选择合适的API)。

Function Calling不是终点,而是通往真正AI Agent的第一步。掌握它,你就掌握了让AI"做事"的能力。