吴恩达Agentic AI设计准则之Reflection
咖啡店很可能在23点前就关门,因此这个下单请求是无效的,Agent 需要引导用户修改表单信息。这对应认知科学里的 System 2(慢思考)机制 —— 不再是“直接回答”,而是“回答 + 审查 + 改写”。:Reflection 不是“让模型再想一遍”,而是“让模型重新编码信息”,本质是提升信噪比(SNR)的过程。这是一个足够小、但立即能落地的能力,也是未来每一个 AI 产品经理 / 工程师 /

“AI 不是不会犯错,而是没人教它回头看看。”
—— Andrew Ng
在 Andrew Ng 最新发布的《Agentic AI》课程里,Reflection(自我反思) 是第一个被拿出来单讲的设计模式。
它不是最炫的,却可能是最容易被忽视、却也最容易落地的 Agent 超能力。
1. 什么是 Reflection?
一句话:让模型把自己的输出再当作输入,重新审视一遍。
就像你写完代码后,回头读一遍,发现:
- 变量名拼错了
- 逻辑有漏洞
- 边界条件没 cover
人类靠“第二遍”提升质量,AI 也可以。
2. 一个最小可运行的 Reflection 例子
为了让更多非技术读者能理解,我们不用代码演示,而是用一个简单的 Dify Chatflow 演示如何设计 Reflection.

各个节点的作用:

两个 Agent 的 Prompt 有什么区别呢?我们以一个外卖下单场景为例。比如,用户输入:冰咖啡,期望送达时间 23:00。咖啡店很可能在23点前就关门,因此这个下单请求是无效的,Agent 需要引导用户修改表单信息。
Agent1:
角色(Role)
你是一名外卖下单助手,负责根据用户输入识别点单意图,并把信息结构化提取出来。
目标(Goal)
根据用户自然语言提取订单信息,包括商品名称、数量、温度、送达时间、特殊要求等,并根据当前输出判断是否缺失必要字段。
输出要求(Output Schema 简化示例)
{
"status": "0 或 1",
"missing": "当 status=0 时,列出缺失字段",
"order": {
"item": "",
"size": "",
"temperature": "",
"quantity": 1,
"delivery_time": "",
"notes": ""
}
}
规则说明
- status=1 表示字段基本完整,可以进入下一步反思校验
- status=0 表示字段缺失,需要向用户追问(由后续节点处理)
- 不需要判断店铺营业时间、库存、距离等业务规则,这些留给 Agent2
- 若用户只给了模糊描述(如“来一杯咖啡”),你要根据 schema 判断字段缺失并在 missing 字段列出
示例
用户输入:
冰拿铁,送到公司,五点半左右
输出:
{
"status": "1",
"order": {
"item": "Latte",
"temperature": "iced",
"quantity": 1,
"delivery_time": "17:30",
"notes": "送到公司"
}
}
Agent2:
角色(Role)
你是一名订单审核与纠错助手,负责对 Agent1 的草稿结果进行逻辑校验、缺陷补全、并给出改进建议。
目标(Goal)
根据业务规则检查 order 是否可执行,并按以下优先级给出反应:
1. ✅ 如果订单有效 → 返回 status=1 + 修正后结构化订单
2. ⚠️ 如果订单字段完整但业务条件不满足(如关门时间、超出配送范围) → 给出友好修改建议
3. ❌ 如果信息仍不足以判断 → 使用 status=0,并引导用户补充信息
校验规则示例(可扩展)
- 商家营业时间:09:00 ~ 22:00,超过则提示“店铺已关门”
- 数量必须 ≥1
- delivery_time 必须为 HH:MM 或相对时间(如“现在”、“尽快”)
- 温度缺省时可根据默认饮品推断(如“冰美式默认 iced”)
- 若 item 不在商品菜单内,可建议类似选项(如“冷萃 = 冰美式?”)
输出 Schema(推荐)
{
"status": "1 或 0",
"msg": "当无法执行或需引导用户修改时,这里写提示信息",
"order": { ... 修正后字段 ... }
}
示例 1:用户想下无效时间段订单
用户输入 → Agent1 结果(草稿):
{
"status": "1",
"order": {
"item": "Iced Coffee",
"delivery_time": "23:00"
}
}
Agent2 输出:
{
"status": "0",
"msg": "您填写的送达时间 23:00 已超过店铺营业时间(最晚 22:00)。需要我帮您改成 21:30 吗?",
"order": {
"item": "Iced Coffee",
"delivery_time": "23:00"
}
}
示例 2:字段合法 → 通过
{
"status": "1",
"order": {
"item": "Iced Latte",
"quantity": 1,
"delivery_time": "17:30"
}
}
3. 为什么 Reflection 有效?
核心结论:Reflection 不是“让模型再想一遍”,而是“让模型重新编码信息”,本质是提升信噪比(SNR)的过程。
3.1. LLM 的第一反应 = “快思考”
所有大语言模型(GPT / Claude / DeepSeek / Llama ...)在生成输出时,本质上是在做一次概率采样:
下一个 token = 最大概率(或 TopP / 温度采样)选项
这意味着:

这就是为什么 LLM 会一本正经地说错话,但语气依然非常自信。
3.2 Reflection 把“单次采样”变成“迭代采样”
Reflection = 输出 → 反馈 → 再输出。
你相当于给模型增加了一个“二轮推理层”,让它有机会:
- 检查第一版答案有没有逻辑漏洞
- 检查是否违反业务规则 / 数学约束 / 数据格式
- 对照“目标结果结构”补全缺失信息
- 给自己打分、挑错、重写
这对应认知科学里的 System 2(慢思考)机制 —— 不再是“直接回答”,而是“回答 + 审查 + 改写”。
换句话说:Reflection = 把 LLM 当成能“重构自己输出”的模型,而不是一次性问答机。
3.3 信息论解释:为什么它能提高输出质量?
从 Shannon 信息论角度来看,LLM 的输出是一次信息编码,而 Reflection 让编码过程从一次变成两次:
(第一轮输出) → (带反馈的重新编码输出)
结果:上下文信噪比(SNR)显著提高
- 第一次输出 = 高噪声采样
- 第二次输出 = 在“反馈信号”约束下重新编码,噪声被压缩、语义被增强
如果把生成结果看成向量空间中的点:Reflection = 把第一次生成的向量往“正确区域”再推一段距离。
3.4 为什么 2 次就够了?不继续 10 次?
学术实验(包括 GPT-4、Claude 和 DeepSeek 的论文)都显示:
- “第一次 → 第二次” 质量提升最大
- “第二次 → 第三次” 仍提升,但边际效应明显下降
- 超过 3 次后,质量趋于平稳甚至 oscillation(来回绕圈)
4. 结语
如果你读到这里,那么你已经比 90% 的只会写 Prompt 使用者更进一步了。
下一步不是去背更多提示词模板,而是开始问自己:我正在做的 AI 任务,能不能加一层 Reflection?
- 如果你做表单抽取、RPA 自动化、知识库问答、低代码工作流……
- 如果你做 AI 代码生成、业务校验、合规审查、智能客服……
你都可以从“单次回答”升级成“先答→再审→再改”,让 AI 质量瞬间提升一个等级。
这是一个足够小、但立即能落地的能力,也是未来每一个 AI 产品经理 / 工程师 / 创业者都要掌握的能力。
5. 参考
Andrew Ng《Agentic AI》Module 2: Reflection
Link: deeplearning.ai/courses/agentic-ai
更多推荐



所有评论(0)