Function Calling 是什么?

Function Calling 是大模型(如 GPT-4)通过结构化方式调用外部工具(functions/tools)来增强自身能力的一种机制。它让模型不仅能理解和生成文本,还能根据用户需求自动选择、组合和调用不同的工具。

function calling

场景一:多问题并行处理

当一个 prompt 同时包含多个问题时,大模型会自动调度多个相关的 function call 并行处理。例如:

用户输入:
“请告诉我北京的天气,并计算 1234322-2134。”

模型会分别调用天气查询和计算器两个工具:

一次调用两个工具

场景二:带有逻辑判断的多步推理

如果 prompt 包含条件判断,大模型会自动拆解为多个 function call,按逻辑顺序依次执行。例如:

用户输入:
“how's the weather in Beijing in ℃? calculate 1234322-2134 if it is higher than 15 ℃”

  1. 首先调用 get weather 获取气温:
    先调用 get weather
  2. 判断气温(如 62.42°F)是否高于 15℃,如果满足条件,再调用 basic calculator 进行计算:
    再调用 basic calculator

Function Calling 的能力边界

通过上述例子可以看出,单一大模型具备以下能力:

  1. 自动拆解问题:理解问题结构,确定数据依赖和优先级,合理安排工具调用顺序。
  2. 自主决策调用:根据上下文判断是否需要调用某个工具。
  3. 参数收集与上下文判断:在具备所有必要参数后,自动完成最终回答。

对于简单场景,Function Calling 已经足够:

  • 问题结构简单,所需上下文较短,模型输出质量高。
  • token 消耗较低,响应速度快。
  • 串行或有限多轮调用即可完成任务。

为什么还需要 Agent?

但在复杂场景下,Function Calling 也有局限:

  • 上下文变长,模型理解和输出质量下降。
  • 多轮嵌套导致 token 消耗激增。
  • 串行处理流程变慢,效率降低。

此时,就需要引入更强的 Agent 框架,进行更复杂的任务编排和流程管理。


总结:Function Calling 让大模型具备了自动调用工具的能力,适合大多数简单和中等复杂度的场景。对于更复杂的多步推理和流程编排,Agent 则是更优的选择。