System Prompt Optimization with Meta-Learning¶
会议: NeurIPS 2025 / arXiv: 2505.09666 / 代码: GitHub / 领域: llm_nlp / 关键词: 系统提示优化, 元学习, 双层优化, 提示工程, 跨任务泛化
一句话总结¶
提出双层系统提示优化问题并设计 MetaSPO 元学习框架,通过外循环优化跨任务泛化的系统提示、内循环优化任务特定的用户提示,使优化后的系统提示在 14 个未见任务上显著超越基线。
研究背景与动机¶
LLM 的输入提示由两部分组成:系统提示(task-agnostic,定义 LLM 的行为框架)和用户提示(task-specific,针对特定查询)。然而现有提示优化研究几乎完全聚焦于用户提示,忽视了系统提示的优化。
系统提示优化的独特价值: - 一次优化,多处使用:一个好的系统提示可泛化到多个任务和域 - 与用户提示协同:优化的系统提示为 LLM 建立鲁棒的行为框架,与用户提示形成协同 - 降低适配成本:好的系统提示使新任务的用户提示优化更快(需更少迭代和数据)
现有工作的不足: - APE (2022)、OPRO (2023)、TextGrad (2023) 等仅优化用户提示 - SPRIG (2024) 虽优化系统提示,但不考虑与用户提示的交互,也缺乏元学习框架 - 缺少对系统提示跨任务泛化能力的系统研究
方法详解¶
整体框架¶
将系统提示优化形式化为双层优化问题:
外层目标(系统提示):\(\mathbf{s}^* = \arg\max_{\mathbf{s}} \mathbb{E}_{T_i \sim \mathcal{T}}[\mathbb{E}_{(\mathbf{q},\mathbf{a}) \sim T_i}[f(\text{LLM}(\mathbf{s}, \mathbf{u}_i^*, \mathbf{q}), \mathbf{a})]]\)
内层目标(用户提示):\(\mathbf{u}_i^* = \arg\max_{\mathbf{u}} \mathbb{E}_{(\mathbf{q},\mathbf{a}) \sim T_i}[f(\text{LLM}(\mathbf{s}, \mathbf{u}, \mathbf{q}), \mathbf{a})]\)
关键设计:MetaSPO(Meta-level System Prompt Optimizer)¶
内循环(用户提示优化): 1. 用当前用户提示在目标任务上评估,识别错误预测样本 2. 将当前用户提示与错误样本一起送入 LLM 进行失败分析 3. 基于分析生成多个候选用户提示 4. 评估所有候选提示,选择 top-\(k\) 个最优提示
外循环(系统提示优化): 1. 用当前系统提示在所有源任务上评估,汇总各任务的错误样本 2. 对系统提示进行跨任务的失败分析 3. 生成多个候选系统提示 4. 在所有任务上(配合各自的优化用户提示)评估候选系统提示 5. 选择跨任务表现最优的 top-\(k\) 个系统提示
两个循环交替迭代 3 次。
实现细节¶
- 基座模型:Llama 3.2 (3B) 用于生成回答
- 优化器模型:GPT-4o mini 用于生成候选提示
- 内循环:每轮生成 3 个候选用户提示,保留 3 个;使用 3 个错误样本做分析
- 外循环:每轮生成 9 个候选系统提示,保留 1 个;使用每任务 2 个错误样本
- 温度设置:基座模型 0(确保一致性),优化器模型 1(鼓励多样性)
损失函数 / 训练策略¶
纯推理时优化(gradient-free),不修改模型参数。依赖任务度量函数 \(f\)(accuracy、F1 等)作为评估信号。优化过程完全通过 LLM 的文本生成能力实现——提示分析和候选生成都通过精心设计的元提示完成。
实验关键数据¶
主实验:未见任务泛化¶
在 5 个域(医疗、评论分析、推理、安全、事实核查)共 14 个未见目标任务上的平均得分:
| 方法 | Medical | Review | Reasoning | Safety | Grounding | Avg |
|---|---|---|---|---|---|---|
| Default ("You are a helpful...") | 33.3 | 37.4 | 42.8 | 25.0 | 13.4 | 32.2 |
| CoT ("Let's think step by step") | — | — | — | — | — | 33.2 |
| Service (商业系统提示) | — | — | — | — | — | 34.2 |
| SPRIG (遗传算法) | 37.0 | 56.8 | 38.7 | 28.1 | 14.1 | 35.0 |
| MetaSPO (Domain) | 48.9 | 62.7 | 52.2 | 36.5 | 16.4 | 44.5 |
MetaSPO 比默认系统提示平均提升 12.3 分,比最强基线 SPRIG 提升 7-9 分。
测试时适配实验¶
固定系统提示,额外优化用户提示:
| 方法 | Medical | Review | Reasoning | Safety | Grounding | Avg |
|---|---|---|---|---|---|---|
| Default | 45.1 | 68.9 | 64.0 | 59.9 | 17.5 | 51.1 |
| SPRIG | 45.4 | 69.3 | 65.3 | 64.7 | 17.7 | 52.5 |
| MetaSPO | 45.6 | 71.4 | 67.3 | 67.2 | 19.9 | 54.3 |
消融实验¶
| 实验 | 关键发现 |
|---|---|
| 仅外循环(无内循环) | 性能 38.2 vs. MetaSPO 42.2,说明用户提示协同优化至关重要 |
| MetaSPO w/ APE | 38.9,不同提示优化策略均可插入框架 |
| MetaSPO w/ EVO | 40.2,进化算法变体也有效 |
| 源任务数量 | 1→6 个源任务:Review 域提升 17.1%,Reasoning 域提升 8.26% |
| 跨模型迁移 | Llama 3.2 优化的系统提示在 Llama 3.1, Qwen 2.5, GPT-4o mini 上也有效 |
| 分离 vs. 统一输入 | 将系统/用户提示分别放入对应角色(分离输入)优于合并放入用户角色 |
效率分析¶
- MetaSPO 达到 Default 的最终性能所需:80% 更少的优化迭代和 75% 更少的数据
- 85% 的用户提示在 MetaSPO 系统提示下表现提升
关键发现¶
- 系统提示优化是一个被严重低估的方向——简单的 MetaSPO 就能带来显著提升
- 元学习框架的内外循环协同是成功的关键——仅做外循环效果大打折扣
- 优化后的系统提示具有跨模型迁移能力——这说明好的系统提示编码了通用的任务解决知识
- LLM 的注意力分数验证:MetaSPO 的系统提示确实获得了更多注意力
亮点与洞察¶
- 新问题定义:双层系统提示优化是一个自然但此前未被提出的问题,具有很强的实际价值
- 元学习的自然适配:系统提示 = 跨任务共享知识,用户提示 = 任务特定适配——完美匹配元学习范式
- 即插即用设计:MetaSPO 框架不依赖特定的提示优化方法,可灵活更换内外循环的优化策略
- 跨模型泛化:为一个模型优化的系统提示在其他模型上也有效,暗示好的系统提示是通用的
- 实际直觉:优化后的系统提示通常赋予 LLM 更具体的角色描述和行为指南
局限性 / 可改进方向¶
- 优化器模型依赖:效果受限于优化器 LLM 的能力(这里用 GPT-4o mini),弱模型可能不够
- 评估任务有限:14 个目标任务覆盖不够广泛,缺少代码生成、数学推理等任务
- 基座模型较小:主要在 Llama 3.2 (3B) 上实验,更大模型的效果未系统验证
- 计算开销:需要多轮 LLM 调用来生成和评估候选提示,成本不可忽略
- 安全风险:优化后的系统提示可能被滥用来引导 LLM 产生有害输出
- 缺少与 fine-tuning 的对比:系统提示优化是否能替代部分微调工作?
相关工作与启发¶
- 与 SPRIG (Wen et al., 2024) 的区别:SPRIG 用遗传算法优化系统提示但不考虑用户提示交互,无元学习
- 与 MAML (Finn et al., 2017) 的关系:借鉴了元学习"学习如何学习"的思想,但在文本空间操作
- 与 TextGrad (Pryzant et al., 2023) 的关系:内循环使用类似的文本梯度思想
- 启发:双层优化框架可能适用于其他 LLM 配置优化(如 RAG 检索策略、工具使用规则等)
评分¶
- 新颖性: ⭐⭐⭐⭐ — 问题定义新颖,双层框架合理,但底层优化技术较标准
- 理论深度: ⭐⭐ — 主要是工程和实验贡献,缺乏理论分析
- 实验充分度: ⭐⭐⭐⭐⭐ — 5 域 14 任务、多模型、多消融、注意力分析,非常全面
- 写作质量: ⭐⭐⭐⭐⭐ — 图文并茂,实验设计精心,分析深入
- 实用价值: ⭐⭐⭐⭐⭐ — 直接可用于改善 LLM 应用,代码已开源
- 综合: ⭐⭐⭐⭐ (8/10) — 实用价值极高的工作,填补了系统提示优化的空白