>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Jupyter

GEPA框架的提示词进化:替代强化学习

系统指令和智能体的调优通常会陷入无休止的手动文本调整。修复一个表述——逻辑改进了,但输出格式却崩了。使用像GRPO这样的强化学习来进行这种调整又太过昂贵:算法需要数万次运行,而所有反馈最终都归结为一个分数。

最近我探索了GEPA(遗传-帕累托)仓库。该项目由加州大学伯克利分校和斯坦福大学的研究人员开发,提供了一种从根本上不同的优化任何文本参数的方法。

GEPA Logo

项目的核心理念

经典优化器将系统视为黑盒:它们在输出端获得一个数值分数,然后尝试猜测下一步该往哪里移动。GEPA的工作方式不同。该框架向神经网络提供完整的执行日志——错误、性能分析器输出、堆栈跟踪和中间推理过程。

模型像开发者在调试时一样分析这些数据。它能看到失败的具体原因,并提出有针对性的修复方案。然后遗传算法开始发挥作用,结合帕累托前沿的考量:系统保留在任务不同子集上表现最佳的文本变体。

框架能做什么

这种方法支持对各种元素的自动调优:

  • DSPy和LangChain中单个模型或链的提示词
  • 智能体架构及其技能组合
  • 任务规划规则和配置文件
  • MCP协议的工具描述

在作者的测试中,GPT-4.1 Mini模型在AIME数学基准上的准确率从46.6%提升到56.6%,仅需一百次迭代。Databricks工程师使用GEPA将智能体运营成本降低了90倍,同时没有损失质量。

优化过程如何运作

框架在五个顺序步骤的循环中运作:

  1. 从帕累托前沿选择候选。系统挑选在特定测试组上表现最佳的变体。
  2. 在小数据集上运行。在此期间,收集所有执行日志和错误。
  3. 反思。反射器模型读取文本形式的失败日志并制定诊断。
  4. 变异。考虑所有祖先的过去错误,创建提示词或代码的新版本。
  5. 决策。如果新候选展示了真正的改进,则将其添加到共享池中。

在作者的术语中,所有诊断被称为可操作侧信息。在文本优化中,它充当传统机器学习中梯度的等价物。

AIME Prompt Example

如何编写代码

你可以从PyPI安装该库:

pip install gepa

该项目有一个名为optimize_anything的简单API。它允许你调优不仅是提示词,还有任何文本产物:

import gepa.optimize_anything as oa
from gepa.optimize_anything import GEPAConfig, EngineConfig, optimize_anything


def evaluate(candidate: str) -> float:
    result = run_my_system(candidate)
    oa.log(f"Output: {result.output}")
    oa.log(f"Error: {result.error}")
    return result.score


result = optimize_anything(
    seed_candidate="Начальный текст инструкции или кода",
    evaluator=evaluate,
    objective="Уменьшить количество ошибок форматирования вывода",
    config=GEPAConfig(engine=EngineConfig(max_metric_calls=100)),
)

通过oa.log()发送的日志正是进入反射器模型进行错误检测的内容。如果你已经在使用DSPy,该工具作为dspy.GEPA开箱即用。

何时通过GEPA调优真正值得

该方法在以下场景中表现最佳:

  • 运行具有许多外部工具的智能体
  • 小型训练数据集,只有5-10个示例
  • 通过API访问的闭源模型
  • 昂贵或缓慢的调用,包括代码编译和模拟

强化学习需要5,000-25,000次运行才能收敛,而该算法通常只需要100-500次评估。

总结

该框架解决了手动文本指令调优的痛点。令人欣喜的是,该工具已经集成到MLflow、Pydantic AI和Google ADK中,所以你不需要在项目中引入一堆额外的代码。从文档中的简短教程开始,或者在几个最有问题的提示词上运行optimize_anything

相关项目