这章讲的是 反思(Reflection)。它是在前面三种模式之后继续升级:
| |
这一章的核心问题是:
Agent 第一次生成的结果不一定好,所以需要一个“检查—反馈—修改”的机制,让结果越来越好。
1. 反思到底是什么?
反思(Reflection) 指的是: 智能体生成一个结果之后,不是直接交付,而是再评估这个结果有没有问题,然后根据评估结果进行修改。
典型流程是:
| |
比如让模型写代码:
| |
所以反思模式的本质是:
给 Agent 增加一个自我纠错机制。
它不是单纯“多问一次模型”,而是有明确角色分工:第一次负责生成,第二次负责审查,第三次负责修改。
2. 为什么需要反思?
因为 LLM 的第一次输出经常有问题。
比如你让它写一个函数:
| |
模型第一次可能会写出:
| |
这个代码能处理普通正整数,但可能漏掉:
| |
如果直接交付,质量不稳定。
反思模式会多加一个审查步骤:
| |
审查者可能指出:
| |
然后生成者再根据这些意见修改代码。
3. 生产者—批评者模型
PDF 里重点讲了一个结构:
| |
也可以叫:
| |
它们的分工是:
| 中文 | English | 作用 |
|---|---|---|
| 生产者 | Producer | 负责生成初始结果 |
| 批评者 | Critic | 负责检查结果、指出问题 |
| 审阅者 | Reviewer | 和 Critic 类似,偏向审查与反馈 |
| 生成者 | Generator | 和 Producer 类似,偏向内容生成 |
流程是:
| |
这个结构比“让同一个模型自己看看自己写得好不好”更可靠一些。因为批评者可以用不同的系统提示,专门站在审查角度看问题。PDF 也提到,独立批评者可以减少自我评审时的偏差,让反馈更结构化。
4. 反思适合哪些场景?
反思不是所有任务都要用。它适合那些 质量比速度更重要 的任务。
场景一:写作与内容生成
比如写博客、文案、报告:
| |
适合要求高质量输出的场景。
场景二:代码生成与调试
这是反思模式非常典型的应用。
| |
Coding Agent 里经常会用这种模式。
比如:
| |
这就是反思思想。
场景三:复杂问题求解
比如逻辑题、数学推理、规划问题。
模型可以先提出一个方案,然后检查:
| |
如果发现问题,就回退或修改。
场景四:摘要与信息整合
比如总结长文档:
| |
这对 RAG 也很重要。因为 RAG 的最终回答可能存在:
| |
所以可以增加一个反思步骤来检查答案是否忠于材料。
场景五:规划与策略制定
比如让 Agent 制定学习计划、项目计划、执行方案:
| |
这类任务往往不是一次生成就能很稳,所以适合反思。
5. LangChain 代码在讲什么?
PDF 里的 LangChain 示例是让模型写一个 Python 阶乘函数,然后反复审查和修改。
任务要求是:
| |
代码整体流程是:
| |
关键变量有几个:
| |
它们分别表示:
| |
最关键的是这个批评者提示:
| |
这里有一个很重要的工程点:
批评者必须有明确的判断标准和停止信号。
比如:
| |
这个停止信号让程序知道什么时候可以退出循环。
否则模型可能一直修改下去,成本和时间都会变高。
6. ADK 代码在讲什么?
PDF 里的 Google ADK(Agent Development Kit,智能体开发工具包) 示例更简单。
它定义了两个 Agent:
| |
流程是:
| |
其中 review_output 是结构化结果:
| |
这体现了一个关键点:
反思最好输出结构化反馈。
比如不要让审查者随便说:
| |
而是要求它输出:
| |
这样后续系统才能判断:
| |
7. 第 8 页图怎么理解?
第 8 页的图展示的是 自我反思流程(Self-reflection Flow)。
它的结构大概是:
| |
意思是:
Agent 生成输出后,会进入 Reflection 环节;反思结果再反馈给 Agent,让它修改输出。
这是一种闭环结构,不是单向流程。
前几章的模式大多是:
| |
而反思变成:
| |
所以第 8 页图的重点是那个回路。
8. 第 9 页图怎么理解?
第 9 页图展示的是 生产者—批评者 Agent 模式。
大概结构是:
| |
也就是说,生成和审查不是同一个角色完成的,而是分成两个 Agent:
| |
这个结构在代码生成、事实核查、长文写作里很常见。
比如:
| |
这比让一个 Agent 从头到尾自己说自己好不好,更像真实工程里的“生成—评审—修改”流程。
9. 反思模式的代价
反思不是免费的。PDF 明确提到它会带来几个成本:
第一,延迟增加
每反思一次,就多一次或多次 LLM 调用。
比如:
| |
所以响应会更慢。
第二,成本增加
LLM 调用次数越多,token 消耗越多,费用越高。
如果是复杂代码或长文档,每轮反思都会带上上下文,成本会进一步增加。
第三,上下文窗口压力增加
反思循环里会保存:
| |
内容越来越多,可能接近模型的 上下文窗口(Context Window) 限制。
第四,可能陷入无意义修改
有时模型会为了修改而修改,结果不是更好,而是变得更啰嗦、更偏离目标。
所以实际工程里通常要设置:
| |
10. 反思和前几章怎么组合?
真实 Agent 工作流通常会把这些模式混在一起。
比如一个研究报告 Agent:
| |
也就是说:
| |
反思在这里像是最后的质量检查环节,也可以插在中间步骤中。
11. 师生对话版理解
学生:老师,反思是不是就是让模型“再检查一遍”?
是,但不是随便检查一遍。 它需要明确标准,比如事实准确性、代码是否通过测试、格式是否符合要求、有没有遗漏约束。
没有标准的反思很容易变成空泛评价。
学生:那是不是每次都应该用反思?
不是。
简单问题没必要,比如:
| |
直接解释就行。
反思适合:
| |
也就是最终质量比速度更重要的任务。
学生:反思是不是一定能让结果变好?
不一定。 如果批评标准不清楚,或者批评者本身判断错了,可能会把结果改坏。
所以反思最好结合:
| |
比如代码任务里,最可靠的 Critic 往往不是另一个 LLM,而是:
| |
LLM 可以解释错误并修复,但测试结果更客观。
学生:反思和记忆有什么关系?,有记忆时反思效果会更好。
没有记忆时,每次反思都是独立的:
| |
有记忆时,Agent 可以记住过去犯过的问题:
| |
所以反思 + 记忆,可以让 Agent 不只是当前一轮改得更好,而是长期表现更稳定。
12. 关键词整理
| 中文 | English | 含义 |
|---|---|---|
| 反思 | Reflection | 对自身输出进行评估并改进 |
| 自我纠错 | Self-correction | 发现并修正自己的错误 |
| 自我改进 | Self-improvement | 根据反馈提升结果质量 |
| 反馈循环 | Feedback Loop | 生成、评估、修改的循环结构 |
| 生产者 | Producer | 负责生成初始结果的角色 |
| 批评者 | Critic | 负责审查结果、提出问题的角色 |
| 生成者 | Generator | 负责生成内容或方案 |
| 审阅者 | Reviewer | 负责检查和评价输出 |
| 停止条件 | Stopping Condition | 判断是否结束迭代的条件 |
| 最大迭代次数 | Max Iterations | 防止无限循环的轮数上限 |
| 结构化反馈 | Structured Feedback | 用固定格式输出批判结果 |
| 上下文窗口 | Context Window | 模型一次能处理的上下文长度 |
13. 直观总结
这一章你可以这样记:
反思(Reflection)就是让 Agent 在输出后进行检查、批判和修改,从而提高结果质量。
和前三章合起来:
| |
最重要的工程判断是:
| |
所以这章的本质不是让 Agent 更快,而是让 Agent 更稳、更准、更会改。

推荐阅读
上一篇:
下一篇: