[算法学习] GEPA提示词优化提升模型性能
[算法学习] GEPA提示词优化提升模型性能
[算法学习] GEPA提示词优化提升模型性能 [算法学习] GEPA提示词优化提升模型性能 Modified November 3, 2025 427 476 将新生成的提示词替换原先的提示词,得到一个新的候选AI系统配置 Φ ′ 。接下来,用一小批测试任务来评估 Φ ′ 的表现(一次小规模rollout),并与它的“父”候选(原提示系统)比较。如果新提示确实在局部测试中表现更好(例如准确率提高),则将 Φ ′ 加入候选池。此时,候选池里就同时有旧提示和新提示两个方案。为了决定下一轮优化对象,GEPA会运用前面说到的帕累托候选选择策略:在候选池中筛选出各有所优势的候选(例如A方案在任务1上最好,B方案在任务2上最好),剔除被完全压制的候选,然后随机选取一个“优胜”候选进入下一轮改进。这个策略保证我们既持续利用了当前最有效的提示策略,又不会错过探索其它潜在优秀方案的机会,避免停在局部最优解不前。 循环迭代 将上面的反思→变异→选择过程不断迭代。在每一轮中,都由模型自身的反馈来指导提示改进,并产生新候选加入竞争。随着迭代进行,提示词质量逐步提升,AI系统在评估集上的成绩也水涨船高。GEPA的迭代会一直持续,直到用完预设的评估预算(例如允许的最大rollout次数)或者达到满意的性能为止。 输出最佳提示 最后,GEPA从候选池中选出在验证集上总体表现最好的提示配置作为优化结果。通常就是帕累托前沿中的某个候选,它在综合指标上优于其他方案。得到这个最终优化的提示后,我们就可以用它来部署最终的AI系统,从而在实际应用中获得更高的性能。 实例带入:多目标问答优化 场景描述 假设我们有一个两阶段的问答系统: 模块 职责 初始prompt Module 1:检索/推理 职责:阅读用户问题→生成候选要点 “请分步分析问题,找出需要的证据……” Module 2:写作 将 Module 1 的要点整合为最终回答 “阅读要点并写出要点。” 这里我们假设需要优化三个目标: 正确性:必须回答对所有关键事实。 隐私:不能泄露任何个人身份信息(PII)。 简洁性:回答须 ≤ 50 字。 三者往往互相拉扯—— • 追求完整容易超字数; • 严格隐私过滤可能删掉关键信息导致答非所问; • 过度压缩又会漏掉细节。 评估维度示例(每条数据都打 3 分): 总分 = 正确性+ 简洁性 + 隐私(满分 3) GEPA 希望在若干训练问题上把平均总分推到最高。 GEPA优化过程: 帕累托选择: • 问题 A 已拿 3 分的提示 P₂ 保留; • 问题 B 可能 P₂ 只有 2 分,而 P₃ 在 B 上 3 分 → 两者都进帕累托前沿,GEPA 轮流改进它们,直到迭代预算耗尽。 另外我基于Openrouter的API,Vibe了一个GEPA的测试环境,有兴趣的同学可以实际体验一下。简单的beta版本就不传Git了,解压以后配置下Key就可以,或者替换成自己的model API GEPA.rar 57.51KB 系统初始提示词 这里可以自定义问题,也可以用示例问题做优化,选择需要优化的轮数,点击“开始优化”就可以。这个时间会稍微有点长。 迭代后在进化树标签会显示迭代的过程。回到问答测试,选择“使用优化后的提示词”,就会自动切换到最新迭代的提示词版本了。 将新生成的提示词替换原先的提示词,得到一个新的候选AI系统配置 Φ ′ 。接下来,用一小批测试任务来评估 Φ ′ 的表现(一次小规模rollout),并与它的“父”候选(原提示系统)比较。如果新提示确实在局部测试中表现更好(例如准确率提高),则将 Φ ′ 加入候选池。此时,候选池里就同时有旧提示和新提示两个方案。为了决定下一轮优化对象,GEPA会运用前面说到的帕累托候选选择策略:在候选池中筛选出各有所优势的候选(例如A方案在任务1上最好,B方案在任务2上最好),剔除被完全压制的候选,然后随机选取一个“优胜”候选进入下一轮改进。这个策略保证我们既持续利用了当前最有效的提示策略,又不会错过探索其它潜在优秀方案的机会,避免停在局部最优解不前。 循环迭代 将上面的反思→变异→选择过程不断迭代。在每一轮中,都由模型自身的反馈来指导提示改进,并产生新候选加入竞争。随着迭代进行,提示词质量逐步提升,AI系统在评估集上的成绩也水涨船高。GEPA的迭代会一直持续,直到用完预设的评估预算(例如允许的最大rollout次数)或者达到满意的性能为止。 输出最佳提示 最后,GEPA从候选池中选出在验证集上总体表现最好的提示配置作为优化结果。通常就是帕累托前沿中的某个候选,它在综合指标上优于其他方案。得到这个最终优化的提示后,我们就可以用它来部署最终的AI系统,从而在实际应用中获得更高的性能。 实例带入:多目标问答优化 场景描述 假设我们有一个两阶段的问答系统: 模块 职责 初始prompt Module 1:检索/推理 职责:阅读用户问题→生成候选要点 “请分步分析问题,找出需要的证据……” Module 2:写作 将 Module 1 的要点整合为最终回答 “阅读要点并写出要点。” 模块 模块 职责 职责 初始prompt 初始prompt Module 1:检索/推理 Module 1:检索/推理 职责:阅读用户问题→生成候选要点 职责:阅读用户问题→生成候选要点 “请分步分析问题,找出需要的证据……” “请分步分析问题,找出需要的证据……” Module 2:写作 Module 2:写作 将 Module 1 的要点整合为最终回答 将 Module 1 的要点整合为最终回答 “阅读要点并写出要点。” “阅读要点并写出要点。” 这里我们假设需要优化三个目标: 正确性:必须回答对所有关键事实。 隐私:不能泄露任何个人身份信息(PII)。 简洁性:回答须 ≤ 50 字。 三者往往互相拉扯—— • 追求完整容易超字数; • 严格隐私过滤可能删掉关键信息导致答非所问; • 过度压缩又会漏掉细节。 评估维度示例(每条数据都打 3 分): 总分 = 正确性+ 简洁性 + 隐私(满分 3) GEPA 希望在若干训练问题上把平均总分推到最高。 GEPA优化过程: 帕累托选择: • 问题 A 已拿 3 分的提示 P₂ 保留; • 问题 B 可能 P₂ 只有 2 分,而 P₃ 在 B 上 3 分 → 两者都进帕累托前沿,GEPA 轮流改进它们,直到迭代预算耗尽。 帕累托选择: • 问题 A 已拿 3 分的提示 P₂ 保留; • 问题 B 可能 P₂ 只有 2 分,而 P₃ 在 B 上 3 分 → 两者都进帕累托前沿,GEPA 轮流改进它们,直到迭代预算耗尽。 另外我基于Openrouter的API,Vibe了一个GEPA的测试环境,有兴趣的同学可以实际体验一下。简单的beta版本就不传Git了,解压以后配置下Key就可以,或者替换成自己的model API GEPA.rar 57.51KB GEPA.rar 57.51KB 系统初始提示词 这里可以自定义问题,也可以用示例问题做优化,选择需要优化的轮数,点击“开始优化”就可以。这个时间会稍微有点长。 迭代后在进化树标签会显示迭代的过程。回到问答测试,选择“使用优化后的提示词”,就会自动切换到最新迭代的提示词版本了。 论文背景 🔬 LLM 可以通过多次“rollout”(在环境中执行任务产生的完整轨迹)进行强化学习调优。目前比较常见的方法 GRPO [算法学习] Deepseek的算法创新:GRPO(Group Relative Policy Optimization) 等策略采用权重微调、梯度下降等方法,这要求对模型进行大量 rollouts 才能学会一项新任务。在日常的工作中,一项任务通常需要数万甚至几十万次 rollouts 才能训练好模型,这不仅计算成本高,而且限制了在受资源约束的场景中应用。 Qwen3‑8B 模型进行 GRPO 训练,需要约 24,000 次 rollouts,且每一步的训练还涉及LoRA 等复杂参数调整。 而在这个过程中,模型的行为和执行轨迹都是可以用自然语言表示,也就是说在执行任务过程中产生的每一步推理、工具调用或反馈信息,都是可读的文本。这种可解释性比传统强化学习的“标量奖励”更丰富,如果能利用这些自然语言反馈来调整Prompt,可以在不改动模型权重的情况下提升系统性能。基于这个观点,论文提出了 GEPA 算法:一种新的提示优化方法,利用反思性语言反馈和多目标演化搜索来提升复合型 AI 的性能。 论文地址:https://arxiv.org/abs/2507.19457 [[算法学习] Deepseek的算法创新:GRPO(Group Relative Policy Optimization)](https://waytoagi.feishu.cn/wiki/CIAbwJgMdirwYJk1I35clgPPnFc) LLM 可以通过多次“rollout”(在环境中执行任务产生的完整轨迹)进行强化学习调优。目前比较常见的方法 GRPO [算法学习] Deepseek的算法创新:GRPO(Group Relative Policy Optimization) 等策略采用权重微调、梯度下降等方法,这要求对模型进行大量 rollouts 才能学会一项新任务。在日常的工作中,一项任务通常需要数万甚至几十万次 rollouts 才能训练好模型,这不仅计算成本高,而且限制了在受资源约束的场景中应用。 [[算法学习] Deepseek的算法创新:GRPO(Group Relative Policy Optimization)](https://waytoagi.feishu.cn/wiki/CIAbwJgMdirwYJk1I35clgPPnFc) Qwen3‑8B 模型进行 GRPO 训练,需要约 24,000 次 rollouts,且每一步的训练还涉及LoRA 等复杂参数调整。 Qwen3‑8B 模型进行 GRPO 训练,需要约 24,000 次 rollouts,且每一步的训练还涉及LoRA 等复杂参数调整。 而在这个过程中,模型的行为和执行轨迹都是可以用自然语言表示,也就是说在执行任务过程中产生的每一步推理、工具调用或反馈信息,都是可读的文本。这种可解释性比传统强化学习的“标量奖励”更丰富,如果能利用这些自然语言反馈来调整Prompt,可以在不改动模型权重的情况下提升系统性能。基于这个观点,论文提出了 GEPA 算法:一种新的提示优化方法,利用反思性语言反馈和多目标演化搜索来提升复合型 AI 的性能。 论文地址:https://arxiv.org/abs/2507.19457 什么是GEPA GEPA的全称是“Genetic Pareto”,字面意思结合遗传算法和帕累托最优思想的优化方法,定位为一种提示词优化器,用于提升复合AI系统中提示词的质量,以更少的样本尝试(高样本效率)取得更好性能。 遗传算法(Genetic Algorithm, GA)的核心流程: • 初始化:随机生成一群 (种群)。 • 评估:用适应度函数打分。 • 选择:高分者更可能当“父母”。 • 交叉 & 变异:产生新一代。 • 替换:组成下一代种群。 • 终止:达到代数上限或适应度收敛。 (是不是有点像灵笼里的灯塔法则...) 而帕累托最优(Pareto Optimality)在多目标场景(比如工程、经济学、机器学习调参)里,我们同时想优化 ≥2 个互相矛盾的指标,例如 成本 ↓ vs 性能 ↑。 支配(dominate):方案 A 支配 方案 B ⇔ A 的每个目标都 ≥ B,且至少有一个目标 B。 帕累托最优解:找不到任何其他方案能在所有目标上与它一样好且至少一个目标更好。 帕累托前沿 / 集(Pareto Frontier / Set):所有帕累托最优解组成的集合,画在二维平面上常是一条“前沿曲线”。 下面这张图就展示了一条二维双目标问题的 Pareto 前沿——每一个红点都是“谁也不吃亏”的最优权衡解。决策变量:标量 x∈[0,2] 两个要最小化的目标 f 1 (x)=x 2 f 2 (x)=(x−2) 2 GEPA结合了遗传算法和帕累托最优,一方面通过遗传迭代生成新的提示词候选,从初始提示触发,不断复制和微调提示词产生更优的“后代”,另一方面为了避免陷入”局部最优“,利用帕累托优化策略来选择候选方案。这样可以保留一系列在至少一个评价维度或测试任务上表现最优的提示候选,将明显劣化的候选(基因)剔除。 这样相当于维护一组多样化的“优胜”提示词,构成帕累托前沿。然后从这组候选中按表现覆盖度随机选取,用于下一轮的改进。这确保了算法不会只盯着当前看似最好的单一路径,而是保留多条优秀但不同的思路,在探索与利用之间取得相对平衡。 GEPA把进化算法的全局搜索与LLM自我反思的精细指导相结合,再用帕累托筛选保留多种有前途的方案。这种方法充分利用了语言的可解释性优势——相比强化学习只能给出“对/错”的奖励信号,GEPA让模型读懂自己的“思维日志”,直接指出改进方向。在强可解释性的条件下,哪怕只经过少量几次尝试,GEPA往往也能带来显著的质量提升。 GEPA的工作原理:反思 变异 选择的循环 具体步骤如下: 初始化候选池: 首先,我们有一个带待优化提示词的AI系统(可以把系统看作一个或多个模块的组合,每个模块有相应的提示)。将当前的提示配置作为初始候选加入候选池P。例如,如果我们优化一个问答机器人的提示,初始候选就是开发者原先写好的“INITIAL PROMPT”。 采样执行轨迹 让AI系统在一些训练任务上运行,收集其执行轨迹(以自然语言的格式记录,而不是机器语言)和结果。轨迹包括模型的中间推理步骤、调用工具的过程以及最终输出等。同时,用预先定义的评估指标 μ 来衡量输出质量。如果有反馈函数 μ f ,还能给出细粒度的反馈(例如对每一步执行的评价)。这一阶段,相当于我们得到模型在当前提示下怎么想、做了什么、表现如何的完整记录。 反思与诊断 下一步,GEPA让LLM充当“审阅者”来分析刚才的轨迹和结果。利用一个经过充分设计的元提示(meta prompt),引导模型用自然语言反思:哪里出了问题?哪一步推理有漏洞?有没有哪些信息遗漏或策略可以改进?模型通过阅读自己的思维过程,将成功或失败归因为特定决策或提示中的措辞。这种反思其实在做隐式的credit assignment(归因分析),比如发现“步骤3计算错误,因为提示没有要求逐步验算”。有了这样的诊断,模型就更容易找出需要改进的具体方面。 提示词突变(生成新提示) 基于反思得到的结论,GEPA会生成一个改良版的提示词。这一步就像遗传算法中的“突变”:模型会在原提示基础上,针对性地修改部分文本。例如,针对上一步发现的问题,模型可能在提示中加入“请逐步验算每一步结果”。值得一提的是,GEPA不仅支持单点突变,有时还会进行“系统感知合并”:如果候选池中有两个不同模块各自优化出的优秀提示,也可以尝试将它们结合,形成新的候选 (粗暴点理解就是去晨曦大厅繁育了 )。这样两种优秀的策略结合,就会基于帕累托前沿生成更优的解决方案。 候选评估与选择