Skip to content

一句话总结:Function Calling 是连接模型与外部能力的协议——模型负责判断"该调什么、参数是什么",应用负责真正执行,结果回填后交还模型组织答案;它通过 tools(JSON Schema)+ tool_calls(模型输出)+ tool_choice(控制策略)三个字段完成闭环。

核心思想

模型不运行你的代码,只输出"调用意图"——真正执行由应用完成。数据库查询、天气接口、订单系统都能用同一套模式接入。

完整流程(面试默写)

1. 定义 tools:函数转 JSON Schema(name/description/parameters)
2. 请求带 tools=[...] 调用 chat.completions.create()
3. 模型判断 → 返回 tool_calls(function name + arguments)
4. 应用执行对应函数,拿到真实结果
5. 结果作为 tool 消息回填给模型
6. 模型基于工具结果组织最终答案

tools Schema 结构

json
{
  "type": "function",
  "function": {
    "name": "get_weather",
    "description": "查询指定城市天气,当用户问天气时使用",
    "parameters": {
      "type": "object",
      "properties": { "city": { "type": "string", "description": "城市名" } },
      "required": ["city"]
    }
  }
}
  • description 写清"什么时候用"能显著提高模型命中率
  • parameters 用 JSON Schema:object 类型 + properties + required

tool_choice:控制调用策略

取值行为
auto(默认)模型自主决定 0 次以上
required至少调用 1 次工具
{"type":"function","name":"X"}强制调用特定函数
none禁止工具调用
  • 强制调用常用于"必须走工具"的流程(如必须查询数据库再回答)

与 MCP 的关系(面试区分)

  • Function Calling:模型 API 层协议——"怎么声明工具、怎么返回调用"
  • MCP:工具标准化协议——"工具怎么被发现、怎么被调用"(见 AI基础概念-MCP协议
  • 两者互补:Function Calling 是调用机制,MCP 是生态标准

面试要点

  • 能默写 6 步调用流程
  • 能写出一个 tools schema 并讲清 description 的作用
  • 能说出 tool_choice 四种取值及强制调用场景
  • 能区分 Function Calling 与 MCP

相关概念

  • [AI-Agent-工具调用](/学习笔记/AI技术/AI Agent/AI-Agent-工具调用) — Agent 侧的工具循环
  • AI基础概念-MCP协议 — 工具标准化协议
  • AI基础概念-流式输出与结构化输出 — 调用参数的进阶形态
  • [AI-Agent-核心设计模式](/学习笔记/AI技术/AI Agent/AI-Agent-核心设计模式) — ReAct 循环中的工具步骤