Reflexion 架构详解:让 Agent 学会自我纠错
系列文章第 3 篇 · AI Agent 六大主流架构拆解 本篇拆解 Reflexion,把“执行 → 评估 → 反思 → 记忆”的自我纠错循环装进 Agent,并把它落到油菜杂交组合配置方案的迭代优化这一典型“试错改进”任务上。
什么是 Reflexion
核心思想一句话:在执行循环外面再套一层 —— Actor 产出尝试,Evaluator 给评分与反馈,Self-Reflector 根据反馈生成反思经验存入 Memory;下一轮重试时把累积的经验注入上下文,逐轮逼近目标。
Note:反思经验。
一个最小运行单元:
与 ReAct / Plan-and-Execute 的关键区别:
- ReAct 解决“怎么做”,Plan-and-Execute 解决“怎么规划长任务”,两者都没有纠偏机制,执行错了一步就一路错下去,没有改进的退路。
- Reflexion 补齐退路:把“做完复盘-下次改进”的认知过程工程化,用自然语言反思作为自我反馈信号,跨轮累积经验。
一句话总结:ReAct 是“思考驱动执行”,Plan-and-Execute 是“规划驱动执行”,Reflexion 是“反思驱动改进”。
示例背景:油菜杂交组合配置
油菜杂交组合配置是育种核心决策之一——选两个亲本组成杂交组合,期望后代综合目标性状(抗菌核病、亩产>200kg、含油量>45%、油酸>75%等)。这是一项典型的单次配置往往不理想、需多轮试错改进的任务:
- 一次配置很难同时满足所有目标:油酸高的亲本往往抗病或产量不够,反之亦然,需要权衡与重选。
- 每次失败都有可学习的经验:“上次选的两个亲本油酸都偏低”——这种经验下一轮可避免。
- 经验可跨轮累积:多轮反思形成的经验链(Actor 每次重试都带着前几轮教训),让方案逐步逼近达标。
- 可审计:每轮的尝试、评分、反思都留痕,育种方案可追溯。
相比之下,ReAct 适合“即席查询”、Plan-and-Execute 适合“多阶段长任务”;“单次不达预期、需多轮试错改进”的场景,Reflexion 明显更合适。工具上也跟前两篇不重叠——本篇两个工具是 evaluate_combination(组合评估)/ query_breeding_target(育种目标查询),与种质查询、区试数据零重叠。
架构与运行机制

运行机制四要素:
- Actor 执行器:接收任务与历史经验,产出尝试结果(可调用工具);用一个
create_agent子 Agent,内含工具调用循环。 - Evaluator 评估器:对尝试打分(0–100)并给出具体反馈(哪里没达标、怎么改);用一个
create_agentAgent(不挂工具),prompt 里写清目标与评分标准,返回 JSON 评分。 - Self-Reflector 反思器:用一个
create_agentAgent(不挂工具),据 Evaluator 反馈生成一条简洁的反思经验(“下一轮该怎么调整”),存入 Memory。 - Memory 长期记忆:跨轮累积反思经验,下一轮 Actor 重试时把经验注入上下文;本例用 JSON 文件显式持久化(见下文代码)。
关键设计点:
- Evaluator 必须可靠:它给 Self-Reflector 喂反馈,反馈不准则反思跑偏、整条链都空转。生产中常用“具体可验证的指标”而非纯主观打分。
- 反思经验要简洁可执行:一条经验一句话,聚焦“下一轮该做什么/不做什么”,否则会撑爆上下文。
- Memory 可跨任务复用:同一类任务的反思经验(例如“油菜杂交优先看油酸 + 抗病双达标”)可在多次任务间共享,不只是单次会话的轮内累积。
- 多轮成本是主要代价:每轮都要跑一次 Evaluator + Reflector,token 与延迟线性增长;需设
max_rounds兜底。
基于 LangChain 的代码演示
定义杂交组合配置工具
用 @tool + Pydantic args_schema 定义两个工具:种质资源查询和杂交组合计算得分。
| |
构建 Actor / Evaluator / Reflector 三个 Agent
| |
- actor Agent:根据用户问题,选择两个亲本组成一个杂交组合,能够计算杂交组合的各性状得分。
- evaluator Agent:根据杂交组合的性状得分,给出组合的综合评分(0-100)和改进建议。
- reflector Agent:根据上一轮的尝试和反馈,生成一条简洁的反思经验,聚集于下一轮的调整。
迭代 Agent
| |
- memory 列表:存储每一轮的反思经验,调用 actor Agent 时作为系统提示词传入。
- 根据 evaluator Agent 返回的 finish 字段,判断是否完成任务。
- 若未完成任务,调用 reflector Agent 生成反思经验,添加到 memory 列表中。
执行结果如下:
| |
- 第 1 次反思,给出了反思经验,提示后续筛选高产量且含油量高的亲本。
- 在第 2 轮时,evaluator Agent 认为结果符合,并返回 finish=True。
- 得出的杂交组合是:华油杂62R × 高油酸1号。
优缺点
优点
- 自我纠错:让 Agent 在“试错”中逐步改进,显著提升高准确度任务的成功率。
- 经验复用:Memory 里的反思经验可跨轮、跨任务累积,同一类任务越来越快收敛。
缺点
- 依赖基线 Actor 能力:若 Actor Agent 本身就弱,反思再多次也难救。
- Evaluator 可靠性依赖:依赖 Evaluator Agent 的可靠性,若 E Evaluator 给不出有信息量的反馈,整个调用链条将“走偏”。
- 多轮成本是主要代价:每轮 Actor + Evaluator + Reflector 三次 LLM 调用,token 与延迟线性增长;
max_rounds兜底但不能根治。 - 反思可能误导:Reflector Agent 可能“想错”,把一次偶然失败归因为错误原因,导致后续轮次走偏。需要 Evaluator Agent 反馈“具体可验证”来约束。
小结
Reflexion 解决了“怎么越做越好”,给 ReAct / Plan-and-Execute 补上“反思-改进”的闭环。它让油菜杂交组合配置这种“单次难达标、需多轮试错”的任务有了可承载的架构。