Tool Use · 面试核心

函数调用与工具使用(Tool Use)

让 LLM 从「只会聊天」变成「能干活」的关键能力。面试常问:Function Calling 和普通补全有什么区别?参数怎么保证合法?和 MCP、Agent 是什么关系?

01是什么:从文本到动作

普通对话模型只输出文本;函数调用(Function Calling / Tool Use)让模型输出结构化的调用指令(调哪个函数、参数是什么),由外部程序真正执行并把结果回填,模型再据此继续生成。这是 LLM 连接真实世界的入口。

关键转变:模型不再「假装知道答案」,而是学会「在不知道时去查 / 去做」,把不确定交给工具。这是 Agent 的能力基石。

02完整流程(循环)

用户问题+ Tool 列表 LLM 决策选工具+填参 执行函数外部/沙箱 结果回填继续生成 循环直到模型不再调用工具、直接回答

这是一个 ReAct 式的「思考—行动—观察」循环:模型输出调用 → 系统执行 → 结果回注上下文 → 模型再决定下一步,直到给出最终答案。

03Tool Schema:怎么描述工具

工具用 JSON Schema 声明:名字、描述、参数类型。模型据此生成符合 schema 的 arguments。

{
  "name": "get_weather",
  "description": "查询某城市天气",
  "parameters": {
    "type": "object",
    "properties": {
      "city": {"type": "string", "description": "城市名"},
      "unit": {"type": "string", "enum": ["celsius","fahrenheit"]}
    },
    "required": ["city"]
  }
}

04并行调用与多轮

并行调用

一次返回多个独立工具调用(如同时查天气+汇率),由运行时并发执行,省往返延迟。

多轮编排

复杂任务拆成多步:先检索再计算再总结,由 Agent 循环控制(见 agent 目录)。

05与 MCP / Agent 的关系

Function Calling

模型「生成调用指令」的能力,是协议层能力。

MCP

工具的「标准化接入协议」——定义工具如何被发现、调用、返回,解耦模型与工具实现(见 mcp 目录)。

Agent

把「调用工具」编排进自主循环,加规划、记忆、反思(见 agent 目录)。

一句话:Function Calling 是「能力」,MCP 是「接口标准」,Agent 是「使用方式」。三者是不同层次,常被一起考。

06常见坑

参数非法

模型可能生成 schema 外的字段/类型,必须做服务端校验再执行。

幻觉调用

不存在的工具/参数被编造,需约束可调用集合。

流式处理

流式下要能增量解析出完整 JSON 再执行,解析失败要重试。

副作用安全

写操作(发邮件/删数据)需权限、确认或沙箱,防提示注入滥用。

07面试速记卡

本质

模型输出结构化调用指令,外部执行并回填,形成循环。

Schema

用 JSON Schema 声明工具,模型生成合法 arguments。

三者关系

能力(FC) / 标准(MCP) / 编排(Agent) 不同层次。

必做

参数校验、防幻觉、副作用管控、流式解析。

关联:ReAct 与 Agent 工具见 agent/agent-tools.html;MCP 协议见 mcp 目录;工具安全见 evaluation/safety-red-teaming。