跳转至

P3: Prompts Promote Prompting

会议: ACL 2025 (Findings)
arXiv: 2507.15675
代码: 无
领域: LLM / NLP
关键词: 提示优化、自改进框架、系统提示、用户提示、自动化提示工程

一句话总结

本文提出 P3 框架,首次同时优化系统提示(system prompt)和用户提示(user prompt),通过离线迭代优化生成高质量的提示模板,再用这些模板进行在线 query-dependent 提示优化,在 Arena-Hard、AlpacaEval、GSM8K、GPQA 等通用和推理任务上均超过仅优化单侧提示的方法。

研究背景与动机

领域现状:当前 LLM 应用通常使用多组件提示——包括系统提示(定义模型角色和行为规范)和用户提示(具体的任务指令和查询)。自动提示优化已经成为提升 LLM 性能的重要方向,代表性工作如 APE(自动提示工程)、OPRO(用 LLM 优化提示)等。

现有痛点:现有的自动提示优化方法几乎都是"单侧"的——要么只优化系统提示,要么只优化用户提示。然而,系统提示和用户提示是相互依赖的——系统提示的风格会影响用户提示的最佳表述方式,反之亦然。单独优化一侧而忽略另一侧,就像只调半个方程的参数,注定无法达到全局最优。

核心矛盾:系统提示和用户提示的联合优化空间巨大,直接在整个空间中搜索计算成本极高。需要一种策略将联合优化分解为可管理的步骤,同时保证优化结果的全局一致性。

本文目标:设计一个同时优化系统提示和用户提示的自改进框架,并进一步将离线优化的结果用于在线的 query-dependent 提示优化。

切入角度:作者观察到系统提示和用户提示之间存在"互相促进"关系——好的系统提示能帮助 LLM 更好地理解用户提示,反过来,更清晰的用户提示也能让系统提示中的指令更有效。基于此,P3 采用迭代交替优化策略。

核心 idea:通过迭代过程交替优化系统和用户提示,让两者互相促进(Prompts Promote Prompting),离线获得高质量提示模板后,进一步在线做 query-dependent 的提示自适应。

方法详解

整体框架

P3 分为两个阶段:(1) 离线优化阶段——在训练集上迭代交替优化系统提示和用户提示,每轮先固定用户提示优化系统提示,再固定系统提示优化用户提示,直到收敛;(2) 在线优化阶段——对于新的用户查询,使用离线阶段学到的优化模式和高质量模板,进行 query-dependent 的实时提示调整。

关键设计

  1. 交替迭代优化策略(离线阶段):

    • 功能:在系统提示和用户提示的联合空间中高效搜索最优组合
    • 核心思路:初始化一个基础系统提示和用户提示模板。在每次迭代中:(a) 固定用户提示,让 LLM 根据当前表现反馈生成多个候选系统提示,选出最佳;(b) 固定优化后的系统提示,同样让 LLM 生成多个候选用户提示变体,选出最佳。重复迭代直到性能不再提升。选出过程通过在验证集上评测来决定。整个过程类似坐标下降法——每次只优化一个维度
    • 设计动机:联合优化空间太大难以直接搜索。交替优化将高维问题分解为多个低维问题,每步固定一侧时另一侧的优化变得更加集中和有效。而且迭代过程让两侧能相互适应
  2. 基于反馈的提示生成机制:

    • 功能:利用失败案例的信息指导提示改进方向
    • 核心思路:在每次优化迭代中,收集当前提示下的错误案例和错误模式。将这些失败样本连同当前提示一起输入给 LLM,要求它分析问题并生成改进版本的提示。例如,如果模型在数学推理中频繁漏掉单位换算,LLM 会在新系统提示中加入"注意单位换算"的指令。生成多个候选后在验证集上选择最好的
    • 设计动机:盲目生成候选提示效率低。用错误反馈引导生成,类似人类调试 prompt 的过程——看哪里错了,针对性地改
  3. 在线 Query-Dependent 提示优化:

    • 功能:将离线获得的通用提示模板针对具体查询进行自适应调整
    • 核心思路:离线阶段获得多组高质量的(系统提示, 用户提示)模板。在线接收新查询时,先将查询与已有模板做语义匹配找到最相关的模板,然后让 LLM 基于该模板和具体查询做微调——可能是在用户提示中添加针对性的推理引导,或在系统提示中强调与查询相关的能力要求。这一步的额外推理开销较小因为只是微调而非从头优化
    • 设计动机:不同查询可能需要不同风格的提示。离线优化给出的是"平均最优"的模板,在线阶段做 query-specific 的自适应可以进一步提升性能

损失函数 / 训练策略

P3 不涉及模型参数训练,而是优化提示文本。"损失函数"等价于目标任务的评测指标——在通用任务上用 win-rate(如 Arena-Hard 的 GPT-4 裁判),在推理任务上用准确率(如 GSM8K 的 exact match)。候选提示的筛选在验证集上进行以避免过拟合。

实验关键数据

主实验

方法 Arena-Hard (Win%) AlpacaEval (Win%) GSM8K (Acc%) GPQA (Acc%)
无优化 (基础提示) 32.5 28.4 82.3 34.5
仅优化系统提示 38.2 33.1 85.6 37.8
仅优化用户提示 40.7 35.4 86.9 39.2
P3 离线 (联合优化) 46.3 41.2 89.5 42.6
P3 离线 + 在线 49.8 44.7 91.2 45.1

消融实验

配置 Arena-Hard (Win%) GSM8K (Acc%) 说明
P3 完整 (离线+在线) 49.8 91.2 完整模型
去掉在线阶段 46.3 89.5 在线自适应贡献约 +3%
去掉错误反馈 42.1 87.4 反馈机制贡献约 +4%
只迭代1轮 41.5 86.8 多轮迭代贡献约 +5%
随机生成候选 (无反馈) 39.3 85.2 确认反馈引导的必要性

关键发现

  • 联合优化 >> 单侧优化:P3 的联合优化相比仅优化系统或用户提示,在所有基准上都有显著提升(Arena-Hard +9-17%,GSM8K +4-9%),验证了系统和用户提示的相互依赖性
  • 迭代次数的收益:性能通常在 3-5 轮迭代后趋于收敛,更多轮次带来的边际收益递减。第一轮的提升最大,说明初始提示通常有大量改进空间
  • 在线优化的持续价值:即使离线已经获得了很好的模板,query-dependent 的在线调整仍能额外贡献 2-4% 的提升,尤其对于非典型的查询
  • 通用任务和推理任务都受益:P3 不仅在开放式生成任务(Arena-Hard、AlpacaEval)上有效,在需要精确推理的数学和科学任务(GSM8K、GPQA)上也有显著提升

亮点与洞察

  • "提示互相促进"的核心洞察:系统提示和用户提示之间存在协同效应——好的系统提示能放大好的用户提示的效果,反之亦然。这个观察本身就有价值,它说明了为什么工程实践中分开调这两部分效果有限
  • 类比坐标下降法的优化策略:将联合优化分解为交替的单变量优化,是一个简洁有效的策略。这个思路可以推广到任何需要同时优化多个文本组件的场景,如 RAG 系统中同时优化检索 query 和生成提示
  • 错误驱动的提示进化:用失败案例作为反馈来指导提示生成,是一种"调试式"的自动化提示工程方法,非常贴合实际的 prompt engineering 工作流程

局限与展望

  • 计算成本较高:离线阶段需要多轮迭代,每轮生成多个候选并逐一评测,API 调用成本非小
  • 优化结果可能过拟合验证集:用验证集选择最佳候选有过拟合风险,尤其当验证集较小时
  • 对不同 LLM 的泛化性未充分验证:在一个 LLM 上优化的提示可能不适用于另一个 LLM,跨模型迁移问题未探讨
  • 未来可以研究一次优化的提示能否跨 LLM 迁移,以及如何在控制成本的同时进一步提升优化效率

相关工作与启发

  • vs APE (Zhou et al., 2023): APE 自动生成并选择提示,但只优化用户提示。P3 扩展为同时优化两个维度,且加入了迭代改进
  • vs OPRO (Yang et al., 2024): OPRO 用 LLM 作为优化器来生成提示,但同样是单侧优化。P3 的交替策略在 OPRO 的基础上更进一步
  • 与 DSPy 的关联: DSPy 提出了声明式 LLM 编程框架,P3 的联合优化思想可以作为 DSPy pipeline 中的模块优化策略

评分

  • 新颖性: ⭐⭐⭐⭐ 同时优化系统+用户提示的思路是自然的但此前未被系统研究
  • 实验充分度: ⭐⭐⭐⭐ 通用和推理任务都有覆盖,消融较完整
  • 写作质量: ⭐⭐⭐⭐ 框架清晰,P3 命名巧妙
  • 价值: ⭐⭐⭐⭐ 对自动化提示工程有直接实用价值

相关论文