Loading...
正在加载...
请稍候

GEPA 算法详解

✨步子哥 (steper) 2025年10月07日 05:08

1. 什么是 GEPA 算法?

GEPA 全称为 Genetic-Pareto(遗传-帕累托优化),是一种创新的 AI 提示(prompt)优化框架,由 UC Berkeley 等机构的研究者于 2025 年 7 月提出。它专为优化大型语言模型 (LLM) 系统中的文本组件(如提示、代码片段或规范)而设计,使用任何评估指标来驱动改进。 与传统的强化学习 (RL) 方法(如 GRPO)不同,GEPA 不依赖于稀疏的标量奖励(如准确率分数),而是利用 LLM 的自然语言能力,通过“反思”系统行为来实现高效优化。这种方法能从执行轨迹(如推理步骤、工具调用和输出)中提取丰富反馈,诊断问题并迭代改进提示。

GEPA 的核心理念是:语言的解释性远比数字奖励更适合 LLM 学习。它通过进化搜索和 LLM 驱动的变异,生成高性能提示,通常只需少量 rollout(系统运行实例)即可显著提升效果——在多个任务上,GEPA 比 GRPO 平均提升 10%,最高达 20%,并节省高达 35 倍的 rollout。

2. GEPA 的工作原理

GEPA 结合了 遗传算法(Genetic Algorithm)和 帕累托优化(Pareto Optimization),通过以下步骤迭代优化提示:

  1. 采样系统轨迹
    对于一个包含一个或多个 LLM 提示的 AI 系统,GEPA 先运行系统生成轨迹。例如,在多跳推理任务中,它会采样输入、LLM 的推理链、工具输出等完整过程。

  2. 自然语言反思
    使用另一个 LLM(或同一模型)对轨迹进行反思,生成文本反馈。例如,如果数学问题提示导致错误解,GEPA 会诊断“指令不够清晰,导致步骤验证缺失”,并提出更新建议,如添加“验证每个步骤”。 这步利用语言的丰富性,提取高层次规则,而非简单分数。

  3. 变异与进化
    基于反思,GEPA 使用 LLM 生成提示的“变异”版本(mutation)。它维护一个候选提示池,通过遗传操作(如交叉)组合多个变异体,确保多样性。

  4. 帕累托选择
    采用多目标优化,避免陷入局部最优。GEPA 评估候选在多个维度(如准确率、多样性)的表现,选择“帕累托前沿”(Pareto front)——即在至少一个目标上优于其他候选的集合。这类似于“照明搜索”(illumination search),保持高性能且多样的提示池。

  5. 迭代与收敛
    重复上述过程,直到评估指标满足阈值。整个流程高度样本高效,因为反思提供定向指导,而非随机探索。

伪代码框架(基于论文描述):

初始化: 候选提示池 P
While 未收敛:
    对于每个候选 p in P:
        运行系统,生成轨迹 T
        反思 T → 反馈 F (LLM 生成)
        基于 F 变异 p → 新候选 p'
    更新 P: 使用帕累托选择保留前沿
End
输出: 最优提示

3. GEPA 与传统方法的比较

使用表格对比 GEPA 与强化学习(如 GRPO)和其它提示优化器(如 MIPROv2):

方面 GEPA (Genetic-Pareto) 强化学习 (e.g., GRPO) MIPROv2 (传统提示优化)
学习介质 自然语言反思(轨迹诊断、规则提取) 标量奖励(e.g., 准确率梯度) 数值分数 + 少量变异
样本效率 高(几百 rollout 即可显著提升) 低(需数千 rollout) 中等(依赖随机搜索)
适用场景 复合 AI 系统(多提示、工具调用) 简单策略优化 单提示工程
优势 解释性强、多目标优化、防局部最优 通用性强,但计算密集 简单实现,但易卡住
性能示例 HotpotQA 上提升 20%,35x 更高效 基准,但 rollout 多 类似 GEPA 但反思弱

数据来源于 HotpotQA、多跳 QA 等 4 个任务评估。

4. 应用与实现

  • 集成工具:GEPA 已集成到 DSPy 框架中,便于 Python 使用。示例代码:

    import dspy
    from dspy.teleprompt import GEPA
    
    # 定义模块(e.g., 提示模板)
    class BasicQA(dspy.Signature):
        question: str = dspy.InputField()
        answer: str = dspy.OutputField()
    
    # 使用 GEPA 优化
    teleprompter = GEPA(metric=my_metric, num_candidates=10)
    compiled = teleprompter.compile(program, trainset=trainset)
    

    这会自动运行进化过程。

  • 实际案例:在代码优化中,GEPA 使用编译器错误作为反馈,迭代修复 bug;在提示工程中,它能生成更精确的指令,如为 HotpotQA 添加“逐步验证来源”。

  • 开源资源:GitHub 仓库 gepa-ai/gepa 提供完整实现和示例。 论文详见 arXiv:2507.19457。

5. 为什么 GEPA 重要?

GEPA 标志着 LLM 优化从“黑箱 RL”向“语言驱动反思”的范式转变。它不仅更高效,还更易解释,帮助开发者快速迭代复杂 AI 代理。未来,它可能扩展到代码生成、代理行为优化等领域。

讨论回复

2 条回复
✨步子哥 (steper) #1
2025-11-15 13:44

GEPA的核心思想源于一个深刻的洞察:语言的可解释性为大型语言模型(LLM)提供了一个远比稀疏标量奖励信号更为丰富的学习媒介。

✨步子哥 (steper) #2
2025-11-15 13:45
推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录