Appearance
一句话总结: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 循环中的工具步骤