Function Calling 工程落地及 MCP 协议说明

6 阅读4分钟

Function Calling 已经是 Agent 的标配能力了,但工程落地时怎么兜底、怎么编排多工具依赖、MCP 到底解决了什么——这些才是真正决定线上稳定性的细节。


历史与作痛

Function Calling 依托 ICL 能力发展。早期靠手工 Prompt 诱导模型输出调用格式,稳定性差、格式易错,无法工程落地。2023 年 6 月 OpenAI 推出原生 Function Calling,通过 JSON Schema 约束实现稳定结构化工具调用。2024 年演进为 Tool Calling,支持多工具并行。2024 年 11 月 Anthropic 推出 MCP 协议,统一工具交互标准,解决工具适配难、上下文膨胀问题,2025 年获主流厂商支持,成为 Agent 工具互联的核心协议。

一、普通 Function Calling 工程落地方式

工程落地场景中,标准 Function Calling 依托 JSON Schema 完成规范化定义。本质是哈希表结构:

  • 外层:定义唯一工具名称
  • 内层:嵌套约束工具的入参、出参标准化格式

同时在 Schema 内部预设兜底规则——当模型无法解析用户意图、不满足工具调用前置条件时,按预设固定格式输出兜底内容,规避格式错乱与推理异常。

{
  "tool_name": "查询天气",
  "input": {
    "city": {"type": "string", "description": "城市名称"},
    "date": {"type": "string", "description": "日期"}
  },
  "output": {
    "temperature": {"type": "number"},
    "condition": {"type": "string"}
  },
  "fallback": {
    "when": "意图无法识别或不满足前置条件",
    "output": {"error": "无法处理该请求", "code": "FALLBACK_TRIGGERED"}
  }
}

二、工程优化兜底方案

统一兜底机制

工程层面需要搭建一套统的兜底机制,核心思路是:Observer 感知异常 → 推理模块调整路径

当工具调用出现以下三类异常时:

异常类型处理方式
调用超时Observer 感知,采集异常信息传递给推理模块
执行报错同上,统一兜底规则管控
返回空结果同上,纳入同一异常体系

Observer 识别异常后,同步向后续推理规划模块传递状态信息,由推理模块调整后续思考逻辑与执行路径。这三类场景均纳入同一规则体系,依托观测层统一感知,驱动流程自适应调整。

多工具依赖场景

针对多工具依赖场景:

  1. 依赖关系预注册:工具依赖关系预先录入 JSON Schema
  2. 提示词加约束:由大模型自主判定多工具的执行优先级
  3. 框架层管控:单次仅执行单个工具调用,按照模型规划的顺序逐轮调度执行

容错与重试

若工具调用出现多次超时:

  1. Observer 感知异常状态,交由模型自主复盘决策
  2. 允许模型针对同一问题出现两次工具调用失误
  3. 第三次失误时触发强约束机制,强制模型更换解题思路与调用方案

无论采用自主复盘还是容错重试策略,均设置重试次数上限作为最终兜底:

  • 达到指定次数 → 强制模型输出最终结果
  • 结果合规可用 → 完成业务闭环应答
  • 结果错误或无法满足业务诉求 → 向用户反馈当前问题暂无可行解决方案

三、MCP 协议补充说明

MCP 是什么

MCP(Model Context Protocol)是适配 Function Calling 使用场景的标准化交互协议。接入 MCP 框架后,可将全部工具信息、工具间依赖关系统一注册至协议托管中心。

MCP 解决了什么

在工具调用流程中,MCP 自动处理:

能力说明
工具依赖编排自动解析并处理工具调用顺序
参数传递规范统一上下行输入输出格式
空结果兜底预设无返回数据时的处理规则
权限管理内置完善的工具权限管控能力

本质定位

从本质而言,MCP 是整合以下能力的成熟标准化规范

原生 Function Calling + JSON Schema 约束
  + 工具依赖编排 + 异常兜底 + 权限管控

它不是一个新概念,而是把这些散落在各个项目里的"最佳实践"整合成一个标准协议——谁用谁接,不用重复造轮子。


四、总结

维度要点
基础定义JSON Schema 约束入参出参,预设兜底输出
异常处理Observer 感知 + 推理模块调整,统一兜底
多工具依赖预注册依赖关系,逐轮单调用,框架层管控
容错策略两次失误容忍,第三次强制换思路
MCP 协议标准化整合工具定义、编排、兜底、权限管控

Function Calling 的工程落地核心不在于"怎么调",而在于"调失败了怎么办"。 兜底机制设计的好坏,直接决定了线上系统的稳定性。


如果这篇文章对你有帮助,欢迎点赞收藏 ❤️ 有疑问或不同见解,评论区见。