简介:本文从原理角度拆解 Prompt、RAG、Agent 等 AI 概念的运行机制与边界。你将理解这些技术如何通过输入约束、外部检索、任务规划与工具调用来弥补大模型缺陷,并掌握它们在真实系统中的协作流程、设计要点与常见误区。
大语言模型的核心能力,是基于训练语料中的语言规律,对输入序列进行概率建模,从而预测下一个最可能的词元。这个过程让模型具备了生成自然语言、归纳信息、执行简单推理的能力。但“会生成文字”并不等于“能可靠完成任务”。真实任务通常需要模型:
Prompt、RAG、Agent 等概念,本质上是针对上述缺口发展出的不同层级解决方案。它们不是彼此替代的关系,而是在同一条“让模型从会说话走向会干活”的路径上,依次叠加的能力机制。
理解这些概念的关键,不是记住它们各自的功能清单,而是看清它们分别解决了大模型哪一类机制性缺陷:Prompt 解决意图表达与约束问题,RAG 解决外部知识与记忆更新问题,Agent 解决任务分解与工具协作问题。MCP、Skill、Harness 等较新概念,则是这些核心机制在工程化过程中的进一步抽象。
在展开各概念之前,需要先明确大模型在实际使用中暴露出的三类核心限制。后续每一项技术机制,几乎都是对其中某一类缺陷的直接回应。
模型默认生成的是“最可能的续写”,而不是“用户期望的回答”。同一个问题换一种问法,输出格式可能完全不同;某些约束描述得不够明确时,模型可能忽略要求;在开放任务中,模型倾向于给出笼统、泛化的答案。
出现这一问题的机制性原因在于:预训练阶段优化的是语言序列的似然,而不是“遵循用户指令”或“满足格式约束”这类任务目标。模型没有天然理由去区分“重要约束”和“背景描述”,除非训练或输入方式显式教会它这种区分。
模型参数在训练完成后基本固定。对训练截止日期之后发生的事件、新发表的论文、新增的网页内容,模型没有可靠访问能力。更隐蔽的问题是,即便某些知识曾出现在训练语料中,模型在推理时也未必能精确召回,特别是在知识稀疏或存在冲突版本的情况下。
当模型无法从参数中调取可靠依据时,它并不总是会“承认不知道”。由于生成机制的根本目标是产出连贯文本,模型可能用统计上合理的词元组合填充空白,从而产生看拟合理但实际没有来源的内容。这类幻觉不是简单的“错误回答”,而是生成机制在缺少证据输入时的自然产物。
一个完整的任务常常包含多个步骤:先搜索信息,再阅读来源,然后提取关键点,接着写初稿,最后对照要求逐项检查。模型单次调用只能完成“从输入到输出”的一段计算,中间没有自然的“停下来验证—决定下一步—再执行”机制。
因此,当用户直接把一个复杂任务抛给模型时,模型倾向于一步生成完整结果。步骤越多、中间状态越复杂,单次生成的失控风险越高。这个限制不是模型“不够聪明”,而是缺少一个外部控制循环来管理任务状态。
Prompt 是模型输入端的一组结构化信息,它至少包含三类内容:
| 组成 | 作用 | 示例 |
|---|---|---|
| 任务指令 | 告诉模型要完成什么 | “用中文解释摘要” |
| 上下文信息 | 提供完成任务所需背景 | 摘要原文、领域术语定义 |
| 格式与约束 | 规定输出结构和边界 | “分别说明研究问题、方法和发现;缺失信息标注为‘未说明’” |
Prompt 之所以能影响输出,是因为大模型的推理过程本质上是条件生成。输入序列中的每一个词元都会参与注意力计算,影响后续词元的概率分布。任务指令改变的是“生成条件”,而不是修改模型参数本身。因此,Prompt 的价值在于将用户模糊意图转化为模型可辨识的强约束条件。
RAG,即检索增强生成,核心思路是把“参数内知识”与“外部可检索知识”分离。系统先根据用户问题去外部知识库中检索相关文档片段,再把这些片段与原始问题一起送入模型,让模型在给定证据的条件下生成回答。
这个设计解决的核心问题不是“模型不知道”,而是“模型无法可靠地知道自己不知道”。通过把证据直接放在输入中,RAG 降低了模型自由发挥的空间,让生成结果受到明确上下文约束。检索环节的作用,是缩小外部知识的候选范围,只把最可能相关的少量片段送入模型,兼顾相关性与推理成本。
Agent 的本质,是在模型外部增加一个控制循环。这个循环持续管理任务状态,决定下一步调用什么工具,将工具返回结果反馈给模型,再根据新状态决定继续执行还是结束任务。
模型在 Agent 架构中充当“决策器”和“信息处理器”:它读取当前状态,输出下一步动作描述;外部执行框架解析这个动作,调用相应工具,把结果追加回上下文。循环反复进行,直到满足终止条件。这个机制让模型从“单次生成器”变成了一个可运行、可中断、可纠偏的任务执行核心。
下面通过一个统一的“论文助手”场景,展示各概念如何分别嵌入完整系统中。
用户输入↓Prompt 构造器(包装任务指令 + 摘要原文 + 输出格式)↓大语言模型↓输出校验(格式检查)↓返回结果
在这个结构中,系统没有外部检索和工具调用环节。所有模型依赖的信息都来自 Prompt。适用场景是:任务范围明确、知识需求稳定、单次生成即可完成。
用户提问↓查询理解与改写↓向量检索 / 关键词检索 → 文档片段候选集↓重排序(可选)↓Prompt 组装(问题 + 检索片段 + 指令)↓大语言模型生成↓引用标注与结果返回
关键机制在于,检索环节产生的“证据片段”在 Prompt 中改变了模型生成的概率环境。当证据充分且相关时,模型倾向于贴合证据输出;当证据缺失时,则可在 Prompt 中要求模型明确说明“根据已有资料无法回答”,从而显式抑制幻觉。
┌────────────────────────────────────┐│ 初始化任务状态 ││ 将目标分解为可执行步骤 │└───────────────┬────────────────────┘↓┌──────────────────┐│ 读取当前状态 ││ 模型输出下一步动作│└─────────┬────────┘↓┌──────────────────┐│ 解析动作指令 ││ 调用对应工具 │└─────────┬────────┘↓┌──────────────────┐│ 工具结果写回 ││ 更新任务状态 │└─────────┬────────┘↓是否满足终止条件?├── 否 → 回到循环开始└── 是 → 输出最终结果
这个循环的每次迭代都包含:状态读取、模型决策、动作解析、工具执行、结果回写五个环节。任务越复杂,中间状态越多,控制循环的价值越明显。
从注意力机制的角度看,输入序列中的每对词元之间都会计算注意力权重。任务指令中“请分别说明研究问题、方法和发现”这样的表述,会与后续生成位置形成注意力连接。生成每一步输出时,模型都会“关注”这些指令词元,使输出分布向满足约束的方向偏移。
这里有一个常被忽略的细节:约束的“强度”与指令在输入中的位置、措辞具体程度、是否提供示例有关。指令越靠后,距离生成位置越近,影响越强;措辞越具体,可执行性越高;给出少样本示例时,模型可以从示范中归纳出输出模式,效果通常优于单纯的抽象描述。
因此,Prompt 工程本质上是对“注意力信号”的工程化设计:哪些信息放在什么位置、以何种方式表达、需要提供多少示范,都直接影响模型输出的概率分布。
RAG 系统有一个关键机制:检索结果的相关性与排序直接决定生成质量。如果检索返回的片段与问题无关,模型在生成时收到的“证据”就是噪声,不仅无助于正确回答,还可能引入额外干扰。
为降低这一风险,常见系统会引入以下机制:
可以看出,RAG 不是“检索 + 生成”的简单拼接。检索模块的质量控制机制,在根本上决定了模型能否在正确的证据环境中工作。
Agent 能处理多步任务,关键在于外部框架对“任务状态”的持续管理。状态至少包含三个维度:
这个状态被序列化后送入模型,模型据此输出下一步动作。执行完动作后,新结果又追加回状态,形成迭代。正是这种“状态累积—模型决策—动作执行—状态更新”的闭环,赋予 Agent 处理复杂任务的能力。
常见的实现机制包括:
工具调用是现代 Agent 能力的关键环节。大模型本身不能直接执行数据库查询、文件写入或网络请求,它只输出文本。外部框架需要完成“文本动作描述”到“实际工具调用”的转换。
通用流程如下:
模型输出动作描述(如:“搜索 2024 年睡眠与记忆相关综述”)↓解析器提取动作类型与参数↓工具调用器执行对应函数↓结果格式化后返回模型上下文
模型的输出格式通常需要被约束为结构化形式,以便解析器可靠地提取动作类型和参数。这个约束通常通过 Prompt 设计实现,例如要求模型在调用工具时输出特定格式的标记,或直接输出可解析的结构化数据。
设用户向论文助手提出:
“查一下最近关于睡眠和记忆关系的最新研究,帮我整理出三项最重要的发现,并注明来源。”
系统将用户请求改写为结构化指令,明确任务边界:
任务:整理睡眠与记忆关系的最新研究要求:1. 检索近三年内的相关文献2. 提取三项最重要的研究发现3. 每项发现附上来源信息4. 如某项信息无法从检索结果获得,标注“未找到”
Agent 的规划器将任务拆解为:
Agent 调用检索工具,将用户查询转化为检索式。检索模块通过向量检索和关键词检索获得候选文献片段,经过重排序后,将最相关的若干段落返回给模型。
模型基于检索到的证据片段生成初步整理结果。系统校验输出是否满足了格式要求和来源标注要求。若模型在某项发现处未标注来源,校验模块触发一次补充生成请求,要求模型补充引用。
所有子任务完成后,Agent 将最终结果写回任务状态,判定满足终止条件,向用户返回整理结果。
这个例子中,Prompt 负责约束每一步的任务格式,RAG 负责获取外部证据,Agent 负责串联多步操作。三者各司其职,又存在明确的数据依赖关系。
优势:轻量、即时生效、无需额外基础设施。通过调整输入即可改变输出行为,迭代速度快。
限制:效果依赖模型本身的理解能力;复杂约束可能被忽略;长对话场景下,早期指令的影响逐渐弱化;Prompt 无法弥补模型本身的知识缺口。
优势:让模型访问更新、更专业的外部知识;在证据充分时显著降低幻觉风险;知识库可独立更新,无需重新训练模型。
限制:检索质量决定生成上限;知识分块和索引方式影响召回效果;跨文档推理仍然困难;当证据冲突时,模型可能难以可靠裁决。
优势:可处理多步骤、有依赖关系的任务;能调用外部工具扩展模型能力边界;中间结果可检查、可纠错;更适合开放目标和不确定执行路径的场景。
限制:循环次数增多时,误差会逐步累积;工具调用失败需要额外的容错设计;规划质量影响整体执行效率;成本通常高于单次模型调用。
RAG 只能把外部证据放在输入中,降低模型脱离证据生成的可能性。但如果检索模块返回了不相关或低质量片段,模型仍可能在噪声基础上生成错误内容。幻觉的抑制依赖“检索质量 + Prompt 约束 + 模型遵循能力”三者共同作用,不是单一机制可以兜底。
Agent 的多步能力来自外部控制循环,不是模型单次生成中“思考得更深入”。模型在每次迭代中只负责根据当前状态输出下一步决策,真正的状态管理和流程控制在外部框架中完成。把 Agent 等同于“模型更聪明”会掩盖其工程实现的重要性。
Prompt 的详细程度应与任务复杂度匹配。过长的 Prompt 可能导致关键约束被信息稀释,增加推理开销,也可能触及模型上下文窗口限制。更有效的做法通常是:用结构化的方式组织指令,把核心约束靠近生成位置,用示例说明关键格式要求,而不是简单堆砌更多描述。
实际上,Prompt、RAG 与 Agent 在技术发展中有大量并行和交叉。RAG 系统内需要 Prompt 设计来规范证据使用方式;Agent 的规划与工具调用环节同样依赖 Prompt 结构;RAG 检索结果也可以作为 Agent 执行链中的一个工具调用。它们更像是不同抽象层级的机制组件,而非互斥的演进阶段。
Prompt、RAG 和 Agent 分别对应大语言模型应用中的三类核心机制:
三者的共性在于:它们都没有改变大模型的核心参数,而是在模型外部构建了不同层级的控制与补偿机制。理解这些概念的真正收益,不是记住名词边界,而是能够根据任务需求,判断当前系统缺的是哪一层机制:是约束不够清晰、知识不够新鲜,还是执行链条不够完整。以这个视角来看,无论是 Prompt 优化、RAG 调优还是 Agent 架构设计,最终都指向同一个目标——让模型在更明确的条件下,完成更可靠的工作。