Reflection
反思Agent 完成一轮后回头检查自己做得对不对,再决定要不要重来。
详解
Reflection 是一种让 Agent 对自己输出进行批判性评估并据此改进的设计模式,核心循环是:生成 → 批评 → 修订。与 Agent Loop 里每步走完就继续不同,Reflection 会在生成完一个(阶段性)结果后,专门用一次额外的模型调用来审查这个结果:哪里不对、哪里可以更好、有没有遗漏。审查结论再反馈给下一轮生成,驱动改进。最有影响力的实现是 Reflexion 框架——它让 Agent 把失败原因写成自然语言存进记忆,下次尝试时带着这段「经验总结」重试,论文报告在编程基准(HumanEval)上成功率有显著提升。实际工程里最简单的 Reflection 只需两次模型调用:第一次生成,第二次用「你是一个挑剔的审查者,找出上面回答的问题」提示词来审查,再把审查结果拼回去触发第三次调用修订。
一个类比
像写完作文再通读一遍:不是改个错别字,而是问自己"论点清楚吗?有没有逻辑漏洞?举的例子贴切吗?"——发现问题就修改,觉得没问题了才交卷。也像运动员赛后看录像复盘,不是为了懊恼,而是为了下次做得更好。
举个例子
无反思(一次生成,直接输出):
用户:"写一段 Python 代码判断质数"
模型第一轮输出:
def is_prime(n):
for i in range(2, n):
if n % i == 0: return False
return True
→ 直接返回给用户(未检查:n=1 时返回 True,存在 bug)
有反思(生成 → 批评 → 修订):
第一轮生成:同上代码
第二轮(Reflection):"挑错者"审查上面代码:
→ 发现问题:n<=1 没有处理;循环可优化到 sqrt(n)
第三轮(修订)根据批评改进:
def is_prime(n):
if n < 2: return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0: return False
return True
→ 返回修订后更正确的版本
关键:反思不改变 Agent 的工具和目标,只在生成和输出之间插入一个"自我审查"节点。PYTHON 示例
相关概念
- → Self-Critique / Self-Refine· 自我批评与修正
- → Agent Loop· 智能体循环