跳到主要内容

Reflexion:无需重新训练即可从错误中学习的语言智能体

· 阅读需 6 分钟
Mike Thrift
Mike Thrift
Marketing Manager

我一直在思考如何构建一个能够随着时间推移而不断进步的 Beancount 账本智能体,而无需在每次出错时都进行重新训练。Shinn 等人的论文《Reflexion: Language Agents with Verbal Reinforcement Learning》(NeurIPS 2023) 直接回答了这个问题,其答案既充满希望,又比标题数据所暗示的更具局限性。

论文解读

2026-04-25-reflexion-language-agents-verbal-reinforcement-learning

Reflexion (Shinn, Cassano, Berman, Gopinath, Narasimhan, Yao; NeurIPS 2023) 提出,与其通过昂贵的强化学习来调整模型权重,不如让智能体用自然语言编写自己的失败分析。在每次尝试后,自我反思 (Self-Reflection) 模型会读取执行轨迹和奖励信号,生成一份语言事后分析,并将其追加到情节记忆缓冲区。在下一次尝试时,执行者 (Actor) 在行动前会读取累积的反思。不计算梯度,不微调模型,“学习”完全发生在上下文窗口中。

三组件架构——执行者 (Actor)、评估器 (Evaluator)、自我反思 (Self-Reflection)——具有足够的模块化,可以适应不同的任务类型。评估器可以是一个二进制的单元测试结果、一个大语言模型评审员,或者是一个特定任务的启发式算法。这种灵活性使得该论文在代码基准测试之外也具有研究价值。

核心观点

  • 在 HumanEval Python pass@1 测试中,Reflexion + GPT-4 达到了 91%,高于 GPT-4 基线水平的 80%,这是一个真实且显著的差距。在 Leetcode Hard 上,其性能从 7.5% 跃升至 15%,这虽有进步,但也提醒了我们这些问题的难度。
  • 在 AlfWorld(基于文本的家庭规划)中,经过 12 次尝试后,Reflexion 解决了 130/134 个任务,而 ReAct 基线仅为 108/134,这是论文中最引人注目的决策任务结果。
  • 在 HotpotQA 多步问答中,CoT + Reflexion 在 100 个采样问题上的精确匹配率从 61% 提高到 75%。
  • 在 MBPP(另一个 Python 基准测试)中,Reflexion 略微降低了性能:80.1% → 77.1%。论文对此并未详细展开。
  • 在 WebShop 上,Reflexion 未能提供帮助。作者将其归因于该任务需要“显著的多样性和探索性”——智能体写出的反思没有帮助,且无法推广到不同的产品搜索中。
  • 记忆限制为 1–3 条存储经验。考虑到上下文长度,这具有实际意义,但也意味着智能体无法在长期部署中累积学习成果。

哪些结论成立,哪些不成立

核心主张是成立的:语言反思在具有清晰、可验证反馈的任务中能提高性能。如果你知道代码是否通过了单元测试,反思模块就有具体的内容可以推理。AlfWorld 和 HumanEval 的结果是真实且有意义的。

但 WebShop 的失败具有启发意义,而论文在某种程度上淡化了这一点。反思在评估器能够产生清晰、可操作信号时才有效。当失败模式是“智能体在庞大的搜索空间中探索了错误的部分”时,告诉它“下次尝试不同的搜索词”并不会使其收敛。这是一个结构性限制:语言强化并非探索策略的替代品。

代码实验也存在作者在博客中承认的循环性:智能体生成自己的单元测试来评估自己的代码。有缺陷的测试套件会产生假阳性。HumanEval 的 91% 数据之所以有效,是因为 HumanEval 提供了真实测试,但在没有外部权威评估器的新问题上,智能体的自我评估循环不太可靠。

可重复性是一个现实担忧。所有主要结果均使用 GPT-4,而 starchat-beta 实验显示相对于基线没有改进,这意味着该技术受限于模型能力。运行较小模型或开源权重的团队不应指望获得同样的提升。

为什么这对金融 AI 很重要

Beancount 的使用场景恰好具备使 Reflexion 表现良好的特性:清晰的评估器。如果智能体错误地分类了一笔交易,账本余额检查或对账步骤可以产生一个二进制信号——账目要么平衡,要么不平衡。这比 WebShop 模棱两可的产品搜索奖励要好得多。

具体来说,我可以想象一个 Beancount 回写智能体,在一次失败的入账尝试(账户无效、货币错误、断言失败)后,生成一段语言反思:“我使用了 Expenses:Meals,但该账户需要子类别。下次我在入账前会先检查账户层级。” 这种反思被存储并在下次类似的交易中被检索。智能体实际上从自身的错误中累积了一个特定于会话的策略。

记忆上限是主要的架构挑战。1–3 条经验的缓冲区对于单个会话来说足够了,但部署的会计智能体需要跨越数千笔交易和数周的运行进行学习。将 Reflexion 扩展到长程记忆——或许通过总结或索引反思——是一个开放性问题。这篇论文并没有解决它。

推荐阅读

  • Language Agent Tree Search (LATS) (Zhou 等, arXiv:2310.04406; ICML 2024) —— 通过在反思-重试循环中包裹蒙特卡洛树搜索来扩展 Reflexion,让智能体能够探索多个推理分支,而不是仅致力于一条路径。使用 GPT-4 在 HumanEval 上达到了 92.7%。
  • Retroformer (Yao 等, arXiv:2308.02151; ICLR 2024) —— 相比于依赖同一个大语言模型进行自我反思,Retroformer 通过策略梯度训练一个单独的轻量级回顾模型,使得反思过程在任务间具有可学习性。更具原则性,但需要微调。
  • Self-Reflection in LLM Agents: Effects on Problem-Solving Performance (arXiv:2405.06682, 2024) —— 一项专门探测反思何时以及为何有帮助的实证研究,针对任务类型进行了消融实验。有助于衡量何时应用 Reflexion 以及何时应用其他校正策略。