AgentEvolver:让大模型自己“长本事”的低成本训练框架
核心问题:有没有一种办法,让 LLM 智能体不依赖人工标注、不堆算力,就能在陌生环境里持续变强?
答案:AgentEvolver 用“自提问-自导航-自归因”三件套,把任务生成、经验复用和奖励分配全部交给模型自己,7B 参数在 AppWorld/BFCL 上直接打平 14B 效果,训练Token 成本降低 60% 以上。
1. 背景:为什么传统 RL 训不起智能体?
| 痛点 | 现状 | 后果 |
|---|---|---|
| 任务稀缺 | 新环境没有现成题库,人工写题单步 1-2 美元 | 数据贵到怀疑人生 |
| 探索低效 | 纯随机采样,一条轨迹 30 步,90% 是无效调用 | 采样预算烧完还没学到东西 |
| 奖励稀疏 | 只有最后 0/1 成败信号,中间 29 步谁立功完全不知道 | 梯度方差爆炸,收敛慢 |
一句话:“没有题库、没有老师、没有答案”的三无场景,是 RL 训智能体的地狱模式。
2. AgentEvolver 核心思路:把训练循环交给 LLM 自己开
AgentEvolver 只给模型两件事:
-
一个无奖励的沙盒(Environment Sandbox) -
一个可以写自然语言的“经验本”(ReMe 池)
剩下三步全自循环:
自提问 → 自导航 → 自归因
↓ ↓ ↓
造题目 用经验 分奖励
| 机制 | 作用 | 类比人类学习 |
|---|---|---|
| 自提问(Self-Questioning) | 在沙盒里逛地图,自己出作业 | 学完一章,合上书自己出题 |
| 自导航(Self-Navigating) | 翻经验本,避开上次踩过的坑 | 错题本+便签条 |
| 自归因(Self-Attributing) | 每步打分,知道谁拖了后腿 | 老师对每一步写批注 |
3. 自提问:模型如何“出一份好卷子”?
核心问题:LLM 怎么保证题目既“考得到点上”又“做得出来”?
3.1 环境画像当开卷目录
先让模型用高温采样把沙盒“逛一遍”,把可交互的实体、属性、操作整理成一张环境画像(Entity-Attribute-Operation 表)。
示例(AppWorld 交通地图):
| 实体 | 属性 | 可执行操作 |
|---|---|---|
| traffic_light | status∈{red,green} | wait_and_cross |
| hospital | location, capacity | enter, query_bed |
3.2 两阶段探索策略
-
广度阶段(Nb 步):随机换场景,保证题目多样性 -
深度阶段(Nd 步):在一条轨迹里连续深挖,保证题目可解
作者反思:Nb/Nd 比例其实像摄影师的“广角+长焦”,广角找景,长焦对焦。调不好就会出“无解之题”或“白开水题”。
3.3 题目工厂:从轨迹到卷子
把探索轨迹+用户偏好(难度、风格)喂给 LLM,三步生成:
-
任务描述(自然语言) -
参考解(轨迹里提取的关键动作序列) -
验证脚本(在沙盒里重跑一遍,跑不通直接丢垃圾桶)
示例输出:
任务:帮 Sarah 在 15 分钟内从公司到医院,避开红灯。
参考解:①query_bed(hospital) ②wait_and_cross(traffic_light_3) ③enter(hospital)
4. 自导航:经验本如何“指一条明路”?
核心问题:有了题库,怎么让模型少踩重复坑?
4.1 经验长什么样
一条经验 = “何时用” + “怎么用” 两段式自然语言,方便向量检索。
AppWorld 示例:
When to use: 当 API 文档未确认删除接口时
Content: 先用 apis.api_docs.show_api_doc 确认接口行为,再执行 delete_*
4.2 经验混合 rollout:探索 vs 利用的跷跷板
每次采样 N 条轨迹:
-
Nv 条“裸奔”轨迹(纯模型自己玩) -
Ne 条“带小抄”轨迹(prompt 里插经验,见代码块)
# prompt 片段
{system_prompt}
<EXP>
经验:当 API 文档未确认删除接口时,先用 apis.api_docs.show_api_doc 确认接口行为,再执行 delete_*
</EXP>
{user_query}
作者反思:η=Ne/N=0.5 是“老司机带新人”的黄金比例。再高一点,模型直接抄答案,泛化反而掉点。
4.3 经验剥离 & 选择性放大:防止“抄作业”抄进骨子里
-
经验剥离:训练前把小抄从 prompt 里删掉,让梯度只更新模型自己生成的 token -
选择性放大:对“经验带来正优势”的样本,把 PPO clip 上限从 0.28 提到 0.6,让好经验真正写进权重
5. 自归因:每一步都拿“小分”是什么体验?
核心问题:长轨迹只有 0/1 终端奖励,中间好牌坏牌怎么分?
5.1 LLM 当裁判:一步一 Good/Bad
把整条轨迹+总分一次性喂给 LLM,让它逐步写“评语”:
Step 3 Analysis: 调用 delete_user 前未检查权限 → 引入权限错误
Step 3 Judgment: BAD
5.2 奖励配方:过程 + 结果 双通道
| 通道 | 信号密度 | 数值 | 标准化 |
|---|---|---|---|
| 过程 | 每步 | +1/-1 | 按轨迹平均做 z-score |
| 结果 | 最后一步 | 0/1 | 全局 z-score |
composite reward:
r̂_t = α·r̂_t^attr + 1_{t=T}·r̂^out
作者反思:α=0.1 像“盐”——少了没味,多了齁咸。调大前期飞涨,后期过拟合到裁判的“口味”。
6. 系统架构:模块化、可插拔、一分钟搭起来
AgentEvolver 把“环境-任务-经验-训练”拆成 4 个微服务,用 Ray 做弹性伸缩:
| 服务 | 职责 | 开源组件 |
|---|---|---|
| Environment Service | 沙盒生命周期、并发 Actor | Ray + FastAPI |
| Task Manager | 自提问、题库、过滤器 | 自研,支持插件式 curriculum |
| Experience Manager (ReMe) | 经验池建库、向量检索 | ReMe 开源库 |
| Training Worker | GRPO + 归因奖励 + 经验剥离 | veRL 后端 |
一键启动:
conda activate agentevolver
python launcher.py --conf examples/overall.yaml --with-appworld --with-reme
7. 实验结果:7B 打 14B,训练 Token 省 60%
7.1 主benchmark成绩
| Model | Params | AppWorld avg@8 | BFCL avg@8 | 平均提升 |
|---|---|---|---|---|
| Qwen2.5 | 7B | 1.8 % | 29.8 % | — |
| +AgentEvolver | 7B | 32.4 % | 57.9 % | +29.4 % |
| Qwen2.5 | 14B | 18.0 % | 41.6 % | — |
| +AgentEvolver | 14B | 48.7 % | 66.5 % | +27.8 % |
一句话总结:同样 7B,AgentEvolver 把“学渣”拉成“学霸”;同样效果,参数减半,训练时间从 3 天缩到 1 天。
7.2 消融切片
-
去掉自提问:avg@8 直接掉 20 个点——没题可做,再聪明也白搭 -
去掉自导航:avg@4 掉 8 个点——重复踩坑,采样利用率腰斩 -
去掉自归因:avg@4 掉 5 个点——梯度方差大,收敛慢 30%
8. 真实场景走一遍:30 分钟让模型学会“订机票”
场景:空白沙盒里只有 3 个 API——search_flight, book_ticket, cancel_order
步骤:
-
自提问阶段模型闲逛 20 步,发现“必须先 search 再 book,否则订单号为空” -
自动生成 50 条任务,涵盖“往返+儿童票+取消”组合 -
自导航把“先 search 后 book”写进经验池,后续采样 80% 轨迹一步到位 -
自归因把“忘记传 passenger_id”的步标 BAD,3 个 epoch 后错误率从 35%→7%
作者反思:亲眼看着模型从“机场迷路”到“值机柜台闭眼走”,就像陪朋友练车,第二天就能单手倒车入库——这就是自我进化的爽点。
9. 实用摘要 / 一页速览
| 想快速落地?照着做 |
|---|
1. 装好 conda + CUDA,一行 bash install.sh |
2. 起环境:bash env_service/environments/appworld/setup.sh |
3. 起 ReMe(可选):bash external/reme/install_reme.sh |
4. 改 .env 里的 API_KEY 与 CONDA_PATH |
5. 最小体验:python launcher.py --conf examples/basic.yaml --with-appworld |
6. 全量体验:python launcher.py --conf examples/overall.yaml --with-appworld --with-reme |
| 7. 看板:http://localhost:8265 实时曲线 |
10. 常见 FAQ
-
Q:没有 GPU 能玩吗?
A:7B 模型单卡 A100(80G) 可跑,CPU 模式可启动但 1/10 速度,建议 Colab 嫖 GPU。 -
Q:必须装 ReMe 吗?
A:basic 配置可跳过,overall 建议装,经验池能让采样效率翻倍。 -
Q:自提问会不会出“幻觉题”?
A:有“重跑验证”兜底,跑不通直接丢,实测 hallucination 率 <3%。 -
Q:归因奖励对 Base 模型有要求吗?
A:只要支持 8k+ 上下文即可,7B~14B 均验证通过;模型越大裁判越准。 -
Q:可以接入私有 API 吗?
A:Environment Service 是标准 Gym 接口,任意 Python 函数/REST 封装一下即可注册。 -
Q:训练数据会泄露隐私吗?
A:全程本地沙盒,ReMe 向量库也本地存储,无外部回传。
11. 结论与下一步
AgentEvolver 用“自己出题、自己复习、自己打分”的三板斧,把 RL 训智能体的成本砍到原来的一半以下,且不需要人类写一道题。下一步,团队会把框架搬到多智能体、企业级 API 链、以及 100B+ 大模型上,让“自我进化”成为 LLM 的默认打开方式。
作者最后的反思:三年前我们还在手工写 Reward Function,现在直接让模型自己写“错题本”——技术的飞轮一旦转起来,唯一限制就是想象力。
