在当前大模型(LLM)应用开发的语境下,Skills(技能) 、MCP(Model Context Protocol,模型上下文协议) 和 Function Calling(函数调用) 是三个核心概念。它们共同解决了同一个问题:如何让"只会聊天"的 AI 变成"能干实事"的智能体(Agent)?
本文将为你深入浅出地拆解这三者的定义、区别以及它们如何协同工作。
1. Function Calling(函数调用):AI 的"动作接口"
定义: Function Calling 是大模型原生支持的一种能力。它允许开发者预先定义一些函数(包括函数名、描述、参数结构),并将其提供给模型。当用户提出需求时,模型会判断是否需要调用这些函数,并输出结构化的调用指令(通常是 JSON 格式),而不是直接回答文字。
- 核心逻辑: 模型输出意图 -> 程序执行代码 -> 程序将结果回传给模型 -> 模型生成最终回复。
- 地位: 它是现代 Agent 的基石。没有它,模型只能做文字游戏,无法与外部系统交互。
2. Skills(技能):Agent 的"能力库"
定义: Skills 是一个更高层次的抽象概念,它通常是 Function Calling 的封装与集合。
如果说 Function Calling 是底层的"API 调用",那么 Skills 就是一个"具备特定功能的工具包"。例如,一个"搜索技能(Search Skill)"可能内部封装了联网搜索、结果过滤、内容总结三个函数。
- 特点:
- 可复用性: 技能可以被不同 Agent 共享。
- 模块化: 开发者可以像积木一样,给 Agent 装备"查询数据库"、"发送邮件"、"操作 Excel"等不同技能。
- 上下文感知: 技能通常包含了完成任务所需的 prompt 和约束条件。
3. MCP(Model Context Protocol):连接的"通用语言"
定义: MCP 是由 Anthropic 推出的一项开源协议。如果说 Function Calling 和 Skills 是 Agent 的"手",那么 MCP 就是连接这些手与各种数据源的"标准接口"。
在 MCP 出现之前,如果你想让 AI 读取 GitHub 的数据,你需要为 GitHub 写一套适配器;想读取 Google Drive,又得写一套。MCP 旨在解决这种碎片化问题:它定义了一种标准,让任何数据源(服务器)都能以统一的方式与任何 AI(客户端)对话。
- 核心优势:
- 标准化: 开发者只需要遵循 MCP 标准,就可以一次开发,处处运行(适用于 Claude、Cursor 等支持 MCP 的平台)。
- 解耦: 模型不再需要关心底层 API 的具体实现,只需要通过 MCP 协议获取数据、资源或执行工具。
三者对比总结
| 维度 | Function Calling | Skills | MCP |
|---|---|---|---|
| 本质 | 模型原生能力 (Feature) | 业务逻辑封装 (Abstraction) | 通信标准/协议 (Protocol) |
| 解决的问题 | 模型如何调用代码 | Agent 如何组织能力 | 如何标准化接入工具与数据 |
| 抽象层级 | 底层 (Low-level) | 中层 (Mid-level) | 顶层 (Infrastructure) |
| 类比 | 电脑的 CPU 指令集 | 电脑安装的软件 | USB 接口标准 |
它们如何协同工作?
想象你要开发一个"自动化财务助手":
- MCP(基础设施层): 你通过 MCP 服务器连接了公司的财务数据库和钉钉 API。因为遵循了 MCP 协议,你的 Agent 可以直接"挂载"这些数据源。
- Skills(逻辑层): 你在 Agent 中配置了"财务报表生成技能"。这个技能内部调用了 MCP 提供的接口,自动提取数据并整理。
- Function Calling(执行层): 当用户说"帮我生成上个月的报表"时,模型通过 Function Calling 识别出需要调用"财务报表生成"这个 Skill,最终完成任务。
总结
- Function Calling 是模型与代码交互的手段;
- Skills 是通过这些手段构建出的业务能力;
- MCP 是让这些技能和工具能够跨平台、跨系统高效连接的标准。