大模型应用开发实战(5)——Prompt、RAG、Agent、MCP到底有什么区别?这篇终于讲明白了
🤵♂️ 个人主页:小李同学_LSH的主页
✍🏻 作者简介:LLM学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+
目录
一、先给结论:四者不是替代关系,而是分层关系
二、Prompt:最基础,但绝不是“只是写一句话”
1. Prompt 解决的核心问题
2. 最简单的形式化表达
3. Prompt 最适合什么场景
4. Prompt 的局限
三、RAG:它不是“喂文档”,而是“先检索,再生成”
1. RAG 解决的核心问题
2. RAG 的最经典公式
3. RAG 的标准流程
4. RAG 最适合什么场景
5. RAG 的局限
四、Agent:重点不是“会聊天”,而是“会决定下一步做什么”
1. Agent 解决的核心问题
2. 一个简化的 Agent 形式化表达
3. Agent 的典型工作流
4. Agent 最适合什么场景
5. Agent 的局限
五、MCP:它不是“一个 Agent 框架”,而是“标准化连接协议”
1. MCP 解决的核心问题
2. MCP 最直观的理解
3. 一个简化的 MCP 视图
4. MCP 最适合什么场景
5. MCP 的局限
六、四者最核心的区别,一张表看懂
七、一个更实用的理解:四者回答的是四个不同问题
Prompt 回答的是:
RAG 回答的是:
Agent 回答的是:
MCP 回答的是:
做大模型应用开发,最容易遇到的一种混乱就是:
大家都在说 Prompt、RAG、Agent、MCP,但很多时候这四个词被混着用,最后就会出现一种很奇怪的现象:
- 明明只是写了个提示词,却说自己做了 Agent
- 明明只是接了知识库,却说自己做了 MCP
- 明明只是调了几个工具,却又分不清到底是 Workflow 还是 Agent
问题不在于这些词难,而在于它们分别解决的问题根本不是同一层。
我更喜欢把它们看成四个不同层级的能力:
- Prompt:告诉模型“你该怎么答”
- RAG:给模型补“它原本不知道的新资料”
- Agent:让模型不只是回答,还能“决定下一步做什么”
- MCP:把外部数据源、工具和系统,用统一协议接给模型应用
OpenAI 官方把 prompting 定义为给模型提供输入和指令,并强调输出质量高度依赖提示方式;Lewis 等人的 RAG 论文把 RAG 定义为“参数记忆 + 显式非参数记忆”的结合;Anthropic 在工程实践中把 agent 和 workflow 区分开,强调 agent 是由模型动态决定过程和工具使用;MCP 官方则把它定义为一种把 AI 应用连接到外部数据源、工具和工作流的开放标准。
这篇文章就把这四个概念一次讲透。
一、先给结论:四者不是替代关系,而是分层关系
最容易记住的一句话是:
Prompt 是输入策略,RAG 是补知识,Agent 是加决策,MCP 是统一外部连接。
它们不是一组平级互斥选项,更像一层一层往上叠:
- 最底层,你总要先有Prompt
- 只靠 Prompt 不够,就加RAG
- 只会查资料还不够,就加Agent
- 工具和数据源越来越多、越来越杂,就用MCP统一接入
Prompt 负责“怎么说”,RAG 负责“补资料”,Agent 负责“决定下一步做什么”,MCP 负责“怎么把外部世界标准化地接进来”。这和 OpenAI、Anthropic、MCP 官方文档对它们的定位是一致的。
二、Prompt:最基础,但绝不是“只是写一句话”
Prompt 最容易被低估。很多人一提 Prompt,就觉得这只是“给模型一句提示词”,好像很初级。
其实不是。
OpenAI 官方文档把 prompting 定义得很明确:它是向模型提供输入的过程,而输出质量很大程度取决于你怎么 prompt;Prompt engineering 则是通过更有效的指令设计,让模型更稳定地生成符合要求的结果。
1. Prompt 解决的核心问题
Prompt 解决的是:
- 任务定义
- 角色设定
- 输出格式约束
- 语气风格控制
- 边界条件说明
也就是说,Prompt 的作用不是“给模型新知识”,而是告诉模型你希望它如何使用已有能力。
2. 最简单的形式化表达
你可以把 Prompt 理解成在求这样一个函数:
Prompt 的本质,就是通过 p 去改变模型输出分布。
3. Prompt 最适合什么场景
Prompt 特别适合:
- 文案改写
- 摘要生成
- 风格控制
- 固定格式输出
- 已有知识范围内的问题回答
也就是说,当问题不需要查新资料,也不需要做多步行动时,Prompt 往往就够了。
因为 Prompt 的核心就是“通过输入设计改变输出”,它并不主动连接外部知识库,也不做复杂执行。OpenAI 的 Prompt 文档强调的也是这层控制能力。
4. Prompt 的局限
Prompt 再强,也绕不过两个根本限制:
- 它不能可靠获得模型训练后出现的新知识
- 它不会天然帮你完成复杂多步外部操作
这也是为什么很多项目在“只写 Prompt”的阶段很快就会撞墙。
三、RAG:它不是“喂文档”,而是“先检索,再生成”
RAG 是四者里最容易被误解的一个。
很多人会把 RAG 简化成一句话:“给模型塞知识库”。这太粗了。
Lewis 等人的原始论文把 RAG 定义为一种结合参数记忆和显式非参数记忆的生成方法:模型不只依赖参数里记住的知识,还能在推理时访问外部文档集合,从而提升知识密集型任务的表现,同时改善可追溯性和知识更新能力。
1. RAG 解决的核心问题
RAG 解决的是:
- 模型知识过时
- 专有知识不在预训练语料里
- 回答需要可追溯来源
- 企业文档无法靠参数记忆覆盖
所以 RAG 的重点不是“生成”,而是先检索到相关资料,再基于资料生成。
2. RAG 的最经典公式
原始 RAG 的思想可以写成:
3. RAG 的标准流程
RAG 一般分成四步:
- 用户提问
- 将问题编码后去知识库检索
- 取回若干文档片段
- 把问题和片段一起交给模型生成答案
4. RAG 最适合什么场景
RAG 特别适合:
- 企业知识库问答
- 法律文档问答
- 产品手册问答
- 内部 Wiki / SOP 查询
- 需要引用依据的回答
你会发现:
RAG 的问题本质是“模型不知道,但外部文档知道”。
5. RAG 的局限
RAG 也有边界:
- 它只解决“查资料”问题,不天然解决“执行任务”问题
- 检索质量不好,生成再强也会歪
- 它通常是“先查一次再答”,多步交互能力弱
也就是说,RAG 很强,但它本质上还是“增强回答”,不是“增强行动”。
四、Agent:重点不是“会聊天”,而是“会决定下一步做什么”
Agent 这几年被说得太泛了,反而更需要回到工程定义。
Anthropic 在《Building Effective AI Agents》里给了一个非常有用的区分:
workflow是通过预定义代码路径编排 LLM 和工具;agent则是由 LLM 动态决定过程和工具使用方式。Anthropic 还特别强调,最成功的实现往往不是最复杂的框架,而是简单、可组合的模式。
1. Agent 解决的核心问题
Agent 解决的是:
- 任务不是一步能完成
- 需要多轮规划
- 需要动态调用工具
- 需要根据中间结果改变策略
- 需要“执行”而不是只“回答”
所以 Agent 的本质不是“回答增强版”,而是任务执行系统。
2. 一个简化的 Agent 形式化表达
你可以把 Agent 写成一个状态更新过程:
而动作通常来自策略:
如果再接上工具执行:
那么一个 Agent 回路就是:
3. Agent 的典型工作流
最常见的单 Agent 循环是:
- 理解目标
- 判断下一步该做什么
- 选择工具或动作
- 执行动作
- 读取结果
- 继续下一轮
4. Agent 最适合什么场景
Agent 适合:
- 多步任务执行
- 调用多个外部工具
- 自动化工作流
- 需要根据结果继续决策的任务
- 比如“查资料 → 比较 → 发邮件 → 记录系统”的任务链
也就是说,Agent 面对的问题是:
不仅要知道答案,还要知道下一步该怎么做。
5. Agent 的局限
Agent 的代价也最明显:
- 延迟更高
- 成本更高
- 失败点更多
- 调试更复杂
- 需要更强的可观测性
所以很多系统并不需要一上来就做 Agent。Anthropic 的建议就是:先从简单、可组合的 workflow 开始,不够再加 agentic 能力。
五、MCP:它不是“一个 Agent 框架”,而是“标准化连接协议”
MCP 是这四者里最容易被完全说偏的概念。
很多人会把 MCP 当成:
- 某个工具库
- 某种 Agent 模式
- 或者某个厂商独有接口
这些都不准确。
MCP 官方把它定义为:一种把 AI 应用连接到外部系统的开放标准;它可以连接数据源、工具和工作流。OpenAI 官方文档也明确写到,MCP tool 可以在 Responses API 中访问远程 MCP 服务器和 connectors。
1. MCP 解决的核心问题
MCP 解决的是:
- 外部工具太多,接法不统一
- 每接一个系统都要手写 schema
- 不同 AI 客户端和不同工具之间缺少标准接口
- 数据访问和工具调用希望有更统一的协议层
它解决的不是“怎么推理”,而是怎么把外部世界规范地接给模型。
2. MCP 最直观的理解
如果说 function calling 是“给模型一个个手写工具说明书”,
那 MCP 更像是:
给模型一个统一的工具/数据总线标准。
MCP 官方甚至把它类比成 AI 应用的 “USB-C port”。
3. 一个简化的 MCP 视图
你可以把 MCP 看成这样一个接口层:
4. MCP 最适合什么场景
MCP 特别适合:
- 需要接很多数据源和工具的系统
- 企业内多系统集成
- 希望工具接入方式标准化
- 希望不同客户端 / 模型应用复用同一套工具暴露层
5. MCP 的局限
MCP 不是:
- Prompt 的替代品
- RAG 的替代品
- Agent 的替代品
它只是把外部连接这件事标准化。
有没有检索、有没有多步规划、要不要反思,这些都还是上层系统设计问题。
六、四者最核心的区别,一张表看懂
| 维度 | Prompt | RAG | Agent | MCP |
|---|---|---|---|---|
| 核心作用 | 定义任务与输出方式 | 给模型补充外部知识 | 让模型做多步决策与执行 | 统一连接外部工具/数据 |
| 是否增加新知识 | 否 | 是 | 可选 | 否,主要是接入层 |
| 是否需要外部系统 | 不一定 | 需要知识库 | 常常需要 | 本身就是外部连接协议 |
| 是否有多步执行 | 通常没有 | 通常没有 | 有 | 不负责执行逻辑 |
| 最适合的问题 | “怎么答” | “不知道答案但文档知道” | “要完成任务,不只是回答” | “如何标准化接工具和数据” |
七、一个更实用的理解:四者回答的是四个不同问题
如果你把它们都放到真实项目里,其实每个概念都在回答一个不同的问题。
Prompt 回答的是:
“我该如何让模型按我的要求输出?”
RAG 回答的是:
“模型不知道的内容,我该怎么补给它?”
Agent 回答的是:
“这个任务不是一步能做完,下一步该由谁决定?”
MCP 回答的是:
“外部工具和数据源越来越多,我怎么用统一方式接给模型?”
这四个问题不是互相替代,而是经常同时存在。
