论文: GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning
arXiv: 2507.19457
会议: ICLR 2026 (Oral)
作者: Lakshya A Agrawal, Shangyin Tan, Dilara Soylu, Noah Ziems, Rishi Khare, Krista Opsahl-Ong, Arnav Singhvi, Herumb Shandilya, Michael J Ryan, Meng Jiang, Christopher Potts, Koushik Sen, Alexandros G. Dimakis, Ion Stoica, Dan Klein, Matei Zaharia, Omar Khattab
代码: https://github.com/gepa-ai/gepa
相关工具:optimize_anything()API (2026-02-18 发布)
一、一个反直觉的结论:说话比打分更高效
强化学习(RL)训练 LLM 的基本逻辑是:
让模型试很多次 → 用标量 reward(0/1,或 0~1 之间的一个数)告诉它"这次好还是不好" → 通过 policy gradient 调整参数。
GEPA 提出了一个让人不安的问题:
如果 LLM 能从自然语言中理解"为什么这次不好",为什么我们要把它降级成一个只能从数字反馈中学习的动物?
GRPO(DeepSeek 用的那套)需要数千次 rollout才能学会一个新任务。GEPA 说:不,用自然语言反思,几次 rollout 就够了。
二、核心架构:遗传算法 + 帕累托前沿 + 自然语言反思
GEPA 的全称是 Genetic-Pareto,三个词拆开看:
2.1 Genetic(遗传算法)
GEPA 把 prompt 优化看作一个进化过程:
Generation 0: 初始 Prompt
↓
采样 rollout → 收集推理轨迹、工具调用、输出
↓
自然语言反思 → "诊断问题:模型在第3步过早下结论,忽略了条件X"
↓
提出 Prompt 更新 → "在最终回答前,先验证所有前提条件"
↓
Generation 1: 进化后的 Prompt
↓
重复...
每一代不是随机变异,而是有方向的、基于反思的改进。
2.2 Pareto(帕累托前沿)
进化过程中会产生很多候选 prompt。GEPA 不是只保留"当前最好的一个",而是维护一个帕累托前沿——在多个目标(准确率、推理成本、prompt 长度等)上都"不被其他候选全面超越"的 prompt 集合。
这避免了两个常见问题:
- 局部最优:如果只保留一个"当前最好",可能错过那些在某个维度上特别强的候选
- 过度特化:一个 prompt 可能在某个任务上完美,但换个输入就崩塌。帕累托前沿保留多样性
2.3 Reflective(自然语言反思)
这是 GEPA 的灵魂。它不只是一个"打分+筛选"的过程,而是让 LLM 用自然语言写诊断报告。
Rollout 1 失败 → 反思:"模型在第二步就假设了用户意图,
但用户实际问的是反向问题"
↓
Rollout 2 失败 → 反思:"工具调用顺序错误,
应该先查数据库再生成回答"
↓
Rollout 3 成功 → 反思:"这次正确是因为先验证了假设"
↓
Prompt 更新:"在生成回答前,先明确用户意图,
再按顺序执行工具调用,最后验证输出"
关键洞察:这些反思不是给人类看的——它们直接成为下一代 prompt 的进化素材。
三、为什么自然语言反思比标量 reward 更强
GRPO 的 learning signal 是什么?是一个数字:0(失败)或 1(成功),或者 0.73(部分成功)。
这个数字告诉你"好还是不好",但不告诉你为什么。
GEPA 的 learning signal 是一段自然语言:"失败是因为在第三步过早下结论,忽略了用户的前提条件。正确的做法是先用反问句确认意图。"
这不是"0.7 vs 0.3"的对比,这是结构性知识的直接传递。
| GRPO (强化学习) | GEPA (提示词进化) | |
|---|---|---|
| 反馈信号 | 标量 reward (0/1 或 0~1) | 自然语言反思 (段落级诊断) |
| 信息密度 | 1 个数字 | 几十到几百个 token 的结构性分析 |
| 为什么失败 | 不知道,只能试错更多次 | 直接知道原因,有方向地修正 |
| rollout 效率 | 需要数千次 | 几次到几十次 |
| 可解释性 | 黑箱(参数更新不可读) | 白箱(反思报告直接可读) |
| 跨任务迁移 | 需要重新训练 | 反思规则可直接迁移 |
四、实验结果:碾压 GRPO 和 MIPROv2
4.1 vs GRPO(强化学习基线)
| 指标 | GEPA | GRPO |
|---|---|---|
| 平均提升 | +6% | 基线 |
| 最大提升 | +20% | 基线 |
| rollout 数量 | 少 35 倍 | 数千次 |
GEPA 用 1/35 的 rollout,平均比 GRPO 好 6%,最高好 20%。
这不是"花更多算力做得更好"——这是"用更聪明的方式,花更少算力,做得更好"。
4.2 vs MIPROv2(领先 prompt optimizer)
| 任务 | GEPA | MIPROv2 | 提升 |
|---|---|---|---|
| AIME-2025 (数学推理) | — | — | +12% |
| 多个任务平均 | — | — | +10%+ |
MIPROv2 是之前最先进的 prompt optimizer(联合优化 instructions 和 few-shot examples)。GEPA 比它还好 10%+。
而且 GEPA 生成的 prompt 通常比 MIPROv2 更短。更短意味着:更低的推理成本、更少的上下文窗口占用、对小模型更友好。
4.3 Code Optimization(推理时搜索)
GEPA 还被验证作为 inference-time search strategy 用于代码优化——即在推理阶段(不是训练阶段)用 GEPA 的进化逻辑来搜索最优 prompt。这说明它的方法不仅适用于离线训练,也可以在线使用。
五、GEPA 的工作流拆解
输入:任意 AI 系统(含一个或多个 LLM prompt)
Phase 1: 采样
↓ 运行多个 rollout(推理轨迹 + 工具调用 + 输出)
Phase 2: 反思
↓ LLM 用自然语言写诊断报告:
"为什么这次成功/失败?"
"哪些推理步骤有问题?"
"prompt 的哪个部分导致了错误?"
Phase 3: 改进提议
↓ 基于反思,生成具体的 prompt 更新建议
"在第三步添加验证环节"
"修改语气,让模型更谨慎"
Phase 4: 帕累托选择
↓ 评估所有候选 prompt 的多个维度
维护帕累托前沿(不被全面超越的候选集合)
Phase 5: 遗传重组
↓ 从帕累托前沿中"杂交"互补的改进
组合 A prompt 的优点 + B prompt 的优点
Phase 6: 下一代
↓ 用进化后的 prompt 回到 Phase 1,直到收敛
关键设计:每次迭代不是"替换"当前 best prompt,而是维护一个种群。反思产生的规则可以被多个候选共享,帕累托前沿确保多样性不被过早牺牲。
六、为什么这个方向很重要
6.1 "白箱" vs "黑箱"
RL 训练 LLM 是一个黑箱过程:你输入 reward,模型内部参数怎么变,你不知道。如果训练后模型表现变差,你很难 debug。
GEPA 是白箱的:每一次进化都留下自然语言反思报告。你可以读这些报告,理解模型"学到了什么",发现它误解了什么,手动纠正。
6.2 小模型的友好性
GRPO 需要大量 rollout 和算力,小模型玩不起。GEPA 的反思规则是语言级别的——一个 7B 模型产生的反思,可以直接用来改进另一个 7B 模型的 prompt。不需要大规模 RL 训练。
6.3 跨任务迁移
GRPO 在一个任务上训练的 policy,换任务要重新来。GEPA 的反思规则是抽象的、语言化的——"先验证假设再下结论"这个规则,从数学推理迁移到代码生成,只需微调即可。
6.4 Shopify CEO 的评价
Tobi Lütke(Shopify CEO)说 GEPA 是 "severely under hyped"——被严重低估了。考虑到这篇论文被 ICLR 2026 选为 Oral,这个评价说明学术界和工业界对它的认知还在早期。
七、与相关工作的关系
7.1 vs GRPO / PPO
GRPO 是参数级别的优化:调整模型权重。GEPA 是提示词级别的优化:调整输入给模型的指令。两者不是替代关系,而是互补——GEPA 可以在 GRPO 之前找到一个更好的初始 prompt,让 GRPO 的训练更快收敛。
7.2 vs MIPROv2
MIPROv2 也优化 prompt,但它的搜索空间是 instructions + few-shot examples,用贝叶斯优化。GEPA 的优势在于:
- 用自然语言反思指导搜索方向,而不是盲目尝试
- 用帕累托前沿保持多样性,而不是只追一个最优
- 生成的 prompt 更短
7.3 vs AutoPrompt / DSPy
DSPy 的编译器也在做 prompt 优化,但主要 focus 在 few-shot 示例的选择和排列。GEPA 的反思机制更深入——它不仅选择示例,还诊断模型 reasoning 中的结构性问题。
八、落地启示:普通人怎么借鉴
8.1 在业务 prompt 工程中
即使你没有 GEPA 的全套系统,核心思想可以直接用:
传统方式:
"这个 prompt 效果不好 → 我试着改几个字 → 再测 → 再改..."
GEPA 方式:
"这个 prompt 效果不好 → 让 LLM 写诊断报告:
'失败是因为模型在第二步就假设了用户意图...'
→ 根据诊断有方向地修改
→ 同时保留多个候选,不急着选'最好的'"
8.2 反思 prompt 模板
你可以直接用的反思模板:
"请分析以下推理轨迹,指出:
1. 哪一步出现了错误或不合理假设?
2. 错误的原因是什么?
3. 如果修改 prompt,应该添加什么约束来避免这个错误?
4. 这个错误是否在其他 rollout 中也出现?"
8.3 帕累托思维
不要只测"准确率最高"的 prompt。同时记录:
- 推理成本(token 数)
- 响应时间
- 对边界 case 的鲁棒性
- prompt 长度
一个 prompt 准确率 95% 但成本是另一个 93% 准确率的 3 倍——后者可能更实用。
九、局限与思考
- 反思质量依赖模型能力:如果模型本身对任务理解不深,反思可能是错的("误诊")
- 帕累托前沿的维度爆炸:当优化目标超过 3-4 个,帕累托选择变得困难
- 自然语言的模糊性:反思规则是语言化的,执行时可能有歧义
- 与 RL 的关系:GEPA 不是取代 RL,而是在 RL 之前做一个更好的"初始化"。对于需要大量交互的复杂任务(如 StraTA 的长程 Agent),RL 仍有不可替代的作用
十、一句话总结
GEPA 的核心论证是:LLM 的可解释性不是负担,是优势。当模型能从自然语言中理解"为什么失败",我们不该把它降级成只能看数字的动物。
遗传算法给了它探索的框架,帕累托前沿给了它多样性的保障,自然语言反思给了它学习的方向。三者结合,用 1/35 的 rollout 超越了强化学习。
这不是 prompt engineering 的胜利——这是 "把 LLM 当作能读懂反馈的智能体,而不是只能被数字驯化的动物" 的胜利。
参考论文: Agrawal, L. A., Tan, S., Soylu, D., Ziems, N., Khare, R., Opsahl-Ong, K., Singhvi, A., Shandilya, H., Ryan, M. J., Jiang, M., Potts, C., Sen, K., Dimakis, A. G., Stoica, I., Klein, D., Zaharia, M., & Khattab, O. (2025). GEPA: Reflective prompt evolution can outperform reinforcement learning. arXiv preprint arXiv:2507.19457. https://arxiv.org/abs/2507.19457
#GEPA #ICLR2026 #PromptEngineering #强化学习 #GRPO #遗传算法 #帕累托前沿 #自然语言反思 #PromptEvolution #HeavyGrok
#论文拆解 #GEPA #ICLR2026 #PromptEngineering #强化学习 #GRPO #遗传算法 #帕累托前沿 #自然语言反思 #PromptEvolution #HeavyGrok
讨论回复
1 条回复推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。