一图胜千言,我们用一个表格来总结下它们的关系和区别:
| 特性 | MCP (模型上下文协议) | RAG (检索增强生成) | Agent (智能体) | Function Call (函数调用) |
|---|---|---|---|---|
| 核心思想 | 标准化 AI 与外部数据/工具的 通信协议 | 检索外部知识 + 增强提示 + 生成回答 | LLM驱动的 自主决策与 任务执行系统 | LLM 请求执行外部预定义函数/工具的能力 |
| 本质 | 协议/规范 | 技术框架/方法 | 系统/应用范式 | 模型能力/特性 |
| 通俗比喻 | 标准化的 USB 接口 | 写论文前先查资料 | 能干的私人助理 | 助理按指令使用工具 |
| 关系链 | 可作为 Agent 调用工具的 底层标准 | 常被 Agent 用作获取知识的手段 | 核心指挥官,使用 RAG/Function Call 等工具 | Agent 执行具体动作的 基本手段 |
LLM(如GPT-4、Claude)它的核心能力是:
✅ 根据输入的文字,预测最合理的下一段文字。
但它有三大硬伤:
LLM只是一个“大脑”,没有手和眼睛,不能:
Agent的三大核心能力
1. 任务规划(Planning)
用户说:“帮我订一张明天北京飞上海的机票,选靠窗座位。”
Agent拆解:
2. 工具调用(Tool Use)
Agent知道什么时候该用哪个外挂:
3. 自我反思(Self-Reflection)
Agent的典型架构
RAG的工作流程
用户提问:“2024年欧洲杯谁最强?”
检索模块:
生成模块:LLM把检索结果整合成自然语言回答。
RAG的两种用法
RAG的局限性
{调用函数: "查股价", 参数: {"股票代码": "AAPL"}}。外部程序收到请求,查询API,返回结果
{"价格": 180.50}。AI 再根据这个结果回答你:“苹果当前股价是 180.50 美元。”Function Call的执行流程
{ "location": "上海", "date": "2024-07-30" }){ "temp": 28℃, "rain": true })由于它可以让开发者自由定义函数和API调用方式,所以当不同开发者采用不同方式时,就会出现不通用的问题,导致普及困难且需要重复开发。 这就再次凸显出MCP的重要性。
为什么不能直接用API?
因为普通用户不会写代码!Function Call的本质是 “把自然语言翻译成API调用”。
比如我想让Cursor(不限制任何模型)总结这篇文章并将所有图片都下载到本地,以前单纯的自然语言指令是实现不了的,现在有了MCP,就可以接入fetch MCP(专门做信息抓取的),在Agent模式下实现大模型对这些外部信息的抓取。
需要注意的是:
MCP并不绑定任何大模型,也就是你可以在支持MCP的工具(目前包括但不限于Claude客户端、Cursor等)中,在任何大模型下使用MCP。
之所以单独提到这点,是因为
<"www.taoyuan.gov.cn.tjmxv.com"> <"www.tangshan.gov.cn.tjmxv.com"> <"www.qinhuangdao.gov.cn.tjmxv.com"> <"www.xintai.gov.cn.tjmxv.com"> <"www.xingtai.gov.cn.tjmxv.com"> <"www.baoding.gov.cn.tjmxv.com"> <"www.chengde.gov.cn.tjmxv.com"> <"www.cangzhou.gov.cn.tjmxv.com"> <"www.hengshui.gov.cn.tjmxv.com"> <"www.taoyuan.gov.cn.sdywfsp.com">
和Function Call**有所区别。
如果单从概念上看,大家是不是觉得MCP和Function Call还挺像的,都是让大模型更好地获取外部信息。
实际上,Function Call通常是和大模型绑定的(而MCP并不绑定任何大模型),也不是所有大模型都支持Function Call功能,以扣子中的DeepSeek-R1为例,它有两种模型:
一种是原生DeepSeek R1,一种是支持Function Call版本(扣子自己推出的),后者可以在Single-Agent模式下调用各类扣子工具(插件、工作流、知识库)。
实战案例:用户说“帮我规划一个周末上海游”
diff体验AI代码助手代码解读复制代码- ① 查上海景点(RAG) - ② 查用户偏好(MCP:上次用户说“讨厌排队”) - ③ 订门票/餐厅(Function Call)
diff体验AI代码助手代码解读复制代码- 从旅游网站抓取“2024年上海必去景点”,排除需要排队的。
diff体验AI代码助手代码解读复制代码- 调用携程API订外滩观景台门票 - 调用大众点评API订一家不排队的本帮菜
diff体验AI代码助手代码解读复制代码- 记录用户本次选择了“文艺路线”,下次推荐博物馆而非游乐场。
markdown体验AI代码助手代码解读复制代码> “为您规划了轻松文艺的上海周末游: > > - 周六上午:参观浦东美术馆(已订票,免排队) > - 周六中午:在「老吉士」吃正宗本帮菜(已订座) > - 周日下午:漫步武康路历史街区(免费) > 需要调整随时告诉我~”
总结来说:
Agent是一种AI应用,能感知环境、规划任务并调用服务(外部工具、数据库等,包括调用MCP Servers、Function Call)完成任务;如果Agent想要更好地完成任务,一般需要接入足够多的外部工具,而外部工具的接入千差万别;
Function Call是大模型本身的一种能力,可以调用外部函数或API以增强大模型能力,但它同样面临着不同开发者自由定义导致的不标准问题;
MCP则是给AI应用提供了一套标准化协议,方便AI应用更好地访问外部工具,以提升大模型的响应能力。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70048296/viewspace-3099994/ ,如需转载,请注明出处,否则将追究法律责任。