← 返回资料站  /  Continuous Learning
论文 经验积累

ExpeL: LLM Agents Are Experiential Learners

ExpeL:让 LLM Agent 从自身经验中提炼自然语言规则
一句话清华 LeapLab 的 AAAI 2024 Oral:agent 在训练任务上用 Reflexion 反复试错攒轨迹,再让 GPT-4 从成败对比中提炼一组自然语言 insights,推理时把 insights + 检索到的相似成功轨迹塞进 prompt,不更新任何权重。ALFWorld 上单次尝试 59% vs ReAct 40%,但 2024 年底 ALFWorld 环境改动后第三方普遍复现不出来。

这是什么

2023 年中的背景:想让 GPT-4/Claude 这类 API 模型的 agent 变强,finetune 走不通(权重拿不到,且伤泛化);Reflexion 能靠同一任务反复重试涨分,但经验不会跨任务迁移——换一道题就得从头再错一遍。ExpeL 提的问题是:能不能像学生刷题一样,把练习阶段的成败轨迹沉淀成一份跨任务通用的'笔记',考试时一次作答就用上?

ExpeL(Experiential Learning agent)分三个阶段:训练阶段用 ReAct+Reflexion 在训练任务上试错,所有轨迹(成功和失败)存进 experience pool;学习阶段让一个更强的 LLM 对比同一任务的成败轨迹、归纳多个成功轨迹的共性,迭代维护一组自然语言 insights;评估阶段面对新任务,prompt 里拼上全部 insights,再按任务相似度从 pool 里检索 top-k 条成功轨迹当 few-shot 示例。全程不动模型参数,'学到的东西'就是一段文本加一个向量库。

在 HotpotQA、ALFWorld、WebShop 三个基准上均超过 ReAct/Act 基线,并做了 HotpotQA→FEVER 的知识迁移实验。作为'把经验写成自然语言记忆'路线的早期代表,被引 843 次,后续大量 agent memory 工作(如各类 insight/rule memory)都以它为对照。

ExpeL 框架总览。左:训练阶段(灰)收集经验入 experience pool,评估阶段(紫)靠 insight guidance + experience recall 做单次推理。右上(A)经验收集:任务失败则 self-reflect 后重试,轨迹全部入库;右下(B)insight 提炼:LLM 对规则集执行 ADD/EDIT/UPVOTE/DOWNVOTE 四种操作,迭代出最终 insights。
ExpeL 框架总览。左:训练阶段(灰)收集经验入 experience pool,评估阶段(紫)靠 insight guidance + experience recall 做单次推理。右上(A)经验收集:任务失败则 self-reflect 后重试,轨迹全部入库;右下(B)insight 提炼:LLM 对规则集执行 ADD/EDIT/UPVOTE/DOWNVOTE 四种操作,迭代出最终 insights。

机制与做法

经验收集:用 Reflexion 制造多样化的成败对

训练任务集里每道任务最多重试 Z 次:先用 ReAct 直接做,失败就让 LLM self-reflect 生成一段反思文本,带着累积的反思重试。无论成败,每条轨迹都进 experience pool。这样做的关键副产品是同一任务的 success/fail 轨迹对——比单独看成功轨迹信息量大得多,后面提炼 insights 全靠它。消融也证实这点:只用 ReAct(无重试)收集经验,或干脆只从人写的 few-shot 里提 insights,效果都明显掉。

三个基准的主结果(actor 均为 gpt-3.5-turbo-0613)。紫色 ExpeL 全面高于 Act/ReAct;浅蓝(只用 insights)与浅黄(只用轨迹检索)在 HotpotQA 和 ALFWorld 上强弱互换,说明两种记忆互补。虚线为 Reflexion 1-3 轮重试的成绩:ALFWorld 上 ExpeL 单次尝试即超 R3,WebShop 上则不及 R1。
三个基准的主结果(actor 均为 gpt-3.5-turbo-0613)。紫色 ExpeL 全面高于 Act/ReAct;浅蓝(只用 insights)与浅黄(只用轨迹检索)在 HotpotQA 和 ALFWorld 上强弱互换,说明两种记忆互补。虚线为 Reflexion 1-3 轮重试的成绩:ALFWorld 上 ExpeL 单次尝试即超 R3,WebShop 上则不及 R1。

Insight 提炼:带投票机制的规则库维护

让 LLM_insights(默认 gpt-4-0613)迭代处理两类输入:同任务的成败对,和跨任务的 L 条成功轨迹批次。它对现有规则集只能执行四种操作:ADD 新规则、EDIT 改写、UPVOTE 加权、DOWNVOTE 减权;新规则初始 importance=2,减到 0 就删除。这个投票机制是为了防止个别次优的成功轨迹污染规则库。最终 ALFWorld/HotpotQA 提 10 条、WebShop 提 8 条左右的自然语言规则。

作者明确说 gpt-3.5 干这活不行——既不听指令又爱幻觉;消融里换 gpt-3.5 提 insights,HotpotQA 从 39% 掉到 32%,和人手写规则一个水平。也就是说这条'自主学习'管线实际依赖一个更强的闭源模型当提炼器。

推理:insights 全量拼接 + 相似轨迹检索

评估时任务说明后面直接 concat 全部 insights;few-shot 示例不再用手写的,而是用 all-mpnet-base-v2 编码任务描述、在 Faiss 里按内积检索 top-k 条最相似的成功轨迹。两种记忆的作用在不同环境上互补:HotpotQA 里 insights-only 36% > retrieve-only 31%(靠通用推理准则),ALFWorld 反过来 50% < 55%(靠模仿具体操作序列),合起来才拿到最好成绩。检索键的消融:按任务相似度 59% > 按推理步相似度 48.5% > 随机采样 42.5%。

迁移实验:把 HotpotQA 学到的 insights 让 GPT-4 结合少量 FEVER few-shot 改写成 FEVER 版规则,FEVER 成功率 70% vs ReAct 63%,说明这种文本形态的经验确实能跨任务分布搬运。

关键结果

实证核查

有水分代码完整开源、管线与论文一一对应,方法本身在当时的模型/环境组合下大概率成立;但主结果绑死在已下线的 gpt-3.5-turbo-0613 上,ALFWorld 环境 2024 年底改了动作语法后第三方开箱即跑普遍复现失败,至今没有人确认过 59% 这个数,官方也未回应。
ALFWorld 上 ExpeL 单次尝试 59%,大幅超过 ReAct 的 40%,甚至超过 Reflexion 三轮重试。
repo issue #8(2025 年 4 月开,至今 open,11 条评论)多名用户按 README 跑 ALFWorld 结果远低于论文。社区自己排查出原因:ALFWorld 2024 年 12 月版把 put in/on 改成 move togo to 反馈也变了(alfworld/alfworld#96、#52),ExpeL 内置的 few-shot 和动作模板全部过时。有用户改回 alfworld==3.5 并修 prompt 后'效果恢复正常',但明确表示未完整复现、不确定能否达到论文精度;作者始终没有在 issue 里回应。
agent '自主'从经验中提炼知识,不需要参数更新。
不动参数属实,但'自主'有折扣:insight 提炼阶段默认必须用 gpt-4-0613(README 三个基准的命令全是 agent.llm=gpt-4),论文消融显示换 gpt-3.5 提炼 HotpotQA 从 39% 掉到 32%,与人手写规则持平。即管线依赖一个比 actor 强一档的模型当'老师',在 2023 年语境下等于依赖最贵的闭源 API。
官方开源完整实现,可复现论文全部实验。
repo(LeapLabTHU/ExpeL,Apache-2.0,237 stars)确实包含论文描述的完整三阶段:train.py(经验收集)、insight_extraction.py、eval.py,超参与论文附录一致,这点扎实。但代码 2024-12 后停止维护,绑定的 gpt-3.5-turbo-0613 / gpt-4-0613 均已被 OpenAI 下线,今天严格意义上的复现已不可能;换新模型(如 issue #8 里用 GPT-4o)行为差异很大。
相对 Reflexion 是全面的进步(cross-task learning 替代重复重试)。
论文自己的数字就打了折:三个环境里只有 ALFWorld 真正超过 Reflexion R3,HotpotQA 打平(39 vs 40),WebShop(41%)连 Reflexion R1(43%)都没到,论文正文也承认这点。增益更准确的说法是'与 Reflexion 互补且可叠加',而非替代。

与我们方向的关系

对 continual-learning 方向,这是'经验即记忆'路线绕不开的起点:它把 agent 的学习拆成 episodic memory(成功轨迹检索)和 semantic memory(自然语言规则)两条通路,并用消融证明两者在不同任务类型上互补——这个二分法被后续几乎所有 agent memory 工作沿用。它的 ADD/EDIT/UPVOTE/DOWNVOTE + importance count 机制,是最早处理'规则库如何增删改、防污染'的具体方案之一,做经验库自动维护的可以直接对照。

两个可借鉴的负结果同样值钱:一是往提炼输入里混入 self-reflection 会因幻觉污染规则(干净的原始轨迹对 > 加工过的反思);二是弱模型提炼的规则和人手写没差别,说明'经验抽象'这一步对模型能力有门槛。另外它的复现困境本身是个教训:方法效果与环境版本、底座模型版本深度耦合,做这类工作要留可复现的环境快照。

阅读笔记

想跑代码的注意:ALFWorld 必须用旧版(社区试出 alfworld==3.5 可用),且 few-shot 里的 put/go to 语法要和环境版本对齐;WebShop 要自己起 server 并把商品数从 1000 改成全量。gpt-3.5-turbo-0613 已下线,换模型后行为差异大(issue #8 里 GPT-4o 会一次吐出整段虚构的多步轨迹)。

材料清单

TeX 源码
已存档:Raw/expel/source/
代码仓库github.com/LeapLabTHU/ExpeL
237★ · 最近推送 2024-12-20
复现讨论github.com/LeapLabTHU/ExpeL/issues/8
ALFWorld 复现失败的集中讨论:环境动作语法变更是主因,alfworld==3.5 + 修 prompt 可部分恢复
项目页andrewzh112.github.io/expel
含完整轨迹 demo(hypothesis formulation、belief update、self-correction 等行为案例)

同类条目