Reflexion 如何让 Agent 从失败轨迹中学习而不更新模型参数?
先用自己的话答,再看参考说法
60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。
别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。
参考内容当前已显示;开始口述后会暂时隐藏。
面试时怎么答
Reflexion 要讲清是“参数外学习”,不是模型偷偷更新了权重。失败后根据环境反馈生成一条可复用经验,下次尝试时从记忆中取回。真正的难点是错误归因会被反复放大,所以应说明经验必须绑定证据、任务类型和淘汰条件;被问效果时,看后续尝试是否真的提升,而不是反思写得多长。
可以这样答:
Reflexion 不更新模型参数,而是在一次尝试失败后,根据环境反馈总结失败原因和下一次策略,把这段经验写入可检索记忆,后续生成时再引用。它实现快,但反思并不一定正确;错误归因一旦长期保留,会持续误导后续任务。因此经验应带来源和评分,只在相似任务中使用,并在没有带来改进时降权或淘汰。
核心回答
Reflexion 把一次任务的结果或环境反馈转成自然语言反思,再把反思写入情景记忆,供下一次尝试作为上下文。策略模型的参数没有在这个循环中更新,行为改善来自 In-Context Learning:模型在后续轨迹中同时看到目标、近期失败、反馈和可执行的改进建议,从而避免重复错误。
典型循环包括 Actor 生成轨迹、Evaluator 给出成功信号或分数、Self-Reflection 模块总结失败原因与下一步策略,然后再次尝试。它适合能重复尝试且能获得相对可靠反馈的环境,但不能保证反思一定正确;错误评估会产生错误经验,过长记忆也可能挤占任务上下文。
展开说明
反思不是简单保存完整对话。有效反思应把轨迹压缩成可操作信息,例如“使用了错误 API 参数,应先读取 Schema”或“搜索范围过窄,需要增加同义词”,并保留支持该结论的反馈。若只生成空泛的“下次更谨慎”,对策略帮助有限。
与梯度训练相比,Reflexion 更新快、无需训练基础设施,也容易按任务清除;代价是经验只在被注入上下文时生效,受上下文窗口、模型遵循能力和反思质量限制。它也不是无成本的自我纠错:每轮要增加评估、反思和重新 Rollout 的调用。
反思记忆应有作用域和淘汰规则。某个网站、版本或用户下学到的经验未必能迁移到另一环境;互相冲突的经验需要版本、置信度或新鲜度,而不是永久拼接。
工程实践
只在有客观失败信号或高质量 Judge 证据时生成反思,保存任务类型、环境版本、失败步骤和建议。限制重试次数与反思长度,检测相同动作或相同反思循环。用不含历史经验的对照组评估真实增益,并单独统计“反思正确但未执行”“反思错误导致退化”等情况。涉及高风险工具时,反思不能修改权限策略或绕过人工审批。
常见追问
- Reflexion 会更新模型权重吗? 原始方法的核心循环不更新权重,而是把语言反馈加入后续上下文。
- Evaluator 不可靠会怎样? 错误成功信号或归因会写入错误经验,后续尝试可能系统性变差,因此需要可验证反馈和重试上限。
- 它与普通记忆有什么不同? 记忆描述存储机制;Reflexion 特别强调从任务结果提炼可执行反馈并驱动下一轮尝试。
- 为什么不保存整条失败轨迹? 完整轨迹成本高且噪声多,结构化摘要更容易在有限上下文中复用,但必须保留足够证据防止错误压缩。
一句话复习
Reflexion 把环境反馈压缩成可执行的语言经验,通过后续上下文改变行为,而不是通过反向传播修改参数。
参考资料
评论与补充
评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。
正在连接站内评论服务…
正在加载评论…
还没有评论,你可以先写下自己的理解或追问。