前言 :在大模型工具调用的实践中,"各家格式不统一"是开发者绕不开的痛点。今天我们就从 Function Call 是什么 讲起,一步步理解 MCP(Model Context Protocol) 是如何解决这个问题的。
目录
-
- [一、什么是 Function Call?](#一、什么是 Function Call?)
- [二、Function Call 的"坑":各家格式乱成一锅粥](#二、Function Call 的“坑”:各家格式乱成一锅粥)
- [三、MCP 来了:工具调用的"USB-C 接口"](#三、MCP 来了:工具调用的“USB-C 接口”)
-
- [MCP 的工作架构](#MCP 的工作架构)
- [MCP 调用流程:以"计算 1+1"为例](#MCP 调用流程:以“计算 1+1”为例)
- [四、MCP vs Function Call:该怎么选?](#四、MCP vs Function Call:该怎么选?)
- 五、总结
一、什么是 Function Call?
在聊 MCP 之前,得先明确 Function Call 的核心作用:
简单来说,Function Call 是大模型(LLM)调用外部工具(比如 API、数据库、计算器)的能力。当 LLM 遇到自己搞不定的问题(比如查实时数据、算复杂公式),会生成结构化指令(比如 JSON 格式),调用对应工具完成任务,再把工具返回的结果整理成自然语言回复。
它的核心特点是 "决策-执行"闭环:
- LLM 是"决策者":决定何时调用 、调用哪个工具;
- 工具是"执行者":完成具体操作(比如查股价、做翻译)。
举个例子:一个翻译工具的 Function 定义会用结构化格式描述工具的名称、功能、入参(比如指定"需要翻译的文本""源语言""目标语言"等)。
二、Function Call 的"坑":各家格式乱成一锅粥
Function Call 很好用,但 不同大模型的工具调用格式完全不统一。
比如查"苹果股价"这个需求,OpenAI、Claude、Gemini、LLaMA 的调用格式各有一套:
- OpenAI :用
tool_calls字段嵌套工具信息; - Claude :用
tool_use类型的内容块定义; - Gemini :直接用
functionCall字段包装; - LLaMA :用
function_call字段承载信息。
这种"碎片化"意味着:如果你想让多个模型共用一套工具,就得给每个模型写一遍适配代码------效率低到离谱。
三、MCP 来了:工具调用的"USB-C 接口"
为了解决格式不统一的问题,MCP(Model Context Protocol) 出现了:它是一套 Function Call 的标准化协议。
可以把 MCP 理解为 AI 应用的"USB-C 接口":
- 就像 USB-C 让手机/电脑能统一连接充电头、耳机,MCP 让不同大模型能统一调用工具;
- 它标准化了"应用如何给 LLM 提供工具上下文",不管是本地数据库、Web API 还是第三方工具,都能通过 MCP 被不同模型调用。
MCP 的工作架构
MCP 用"客户端-服务端"模式实现统一调用:
- MCP 客户端:集成在 LLM/AI 工具里(比如 Claude、IDE);
- MCP 服务端:对接具体的工具/数据源(本地数据库、远程 API 等);
- 协议层:客户端和服务端通过 MCP 协议通信,屏蔽工具和模型的差异。
MCP 调用流程:以"计算 1+1"为例
我们用"计算 1+1"这个简单需求,看 MCP 是怎么工作的:
- 客户端先获取 MCP 服务端提供的工具列表;
- 用户发请求"帮我计算 1+1",客户端把请求+工具信息发给 LLM;
- LLM 决定调用
calculate工具,返回 MCP 标准格式的调用指令; - 客户端解析指令,向 MCP 服务端请求调用
calculate; - 服务端返回结果"2.00";
- 客户端把结果回传给 LLM,LLM 整理成自然语言回复用户。
四、MCP vs Function Call:该怎么选?
MCP 和 Function Call 本质都是"让 LLM 用工具",但适用场景不同:
| 场景 | 选 Function Call 还是 MCP? |
|---|---|
| 仅用单个模型的工具调用 | 直接用 Function Call |
| 跨模型/跨团队共享工具 | 用 MCP 统一标准 |
| 内部自研工具、不需要对接 | 用 Function Call 更轻量 |
| 企业间/多团队协作开发 | 用 MCP 降低对接成本 |
五、总结
- Function Call 是"大模型用工具"的基础能力,但受限于厂商格式,跨模型适配成本高;
- MCP 是 Function Call 的"标准化解决方案",通过统一协议让不同模型、不同工具无缝对接,是跨模型 AI 应用的"基建"。
本质上,不管是 Function Call 还是 MCP,核心都是利用 LLM 的理解能力,让 AI 更高效地联动外部工具------而 MCP 让这个过程变得更"通用"。