跳转至

SCULPT: Systematic Tuning of Long Prompts

会议: ACL 2025
arXiv: 2410.20788
代码: 无
领域: LLM NLP
关键词: 提示词优化, 长提示词, 层次化树结构, 批判者-执行者框架, 提示工程

一句话总结

提出 SCULPT 框架,将长提示词优化建模为层次化树结构的迭代修正问题,通过 Critic-Actor 框架对提示词进行结构化的反思和操作级修改,在保持长提示词信息完整性的同时显著提升 LLM 任务性能,并具备对抗扰动的鲁棒性。

研究背景与动机

领域现状:提示词优化(Prompt Optimization)是提高大语言模型在各种下游任务上表现的关键技术。现有方法如 APE(Automatic Prompt Engineer)、EvoPrompt 等主要聚焦于短提示词的优化——通过替换词汇、重排句子、添加/删除指令等方式来改进性能。

现有痛点:然而,真实应用中的提示词往往很长且结构复杂(包含任务描述、格式要求、示例、约束条件等多个部分),现有短提示词优化方法在处理这类长提示词时面临严重问题:(1) 全局性修改容易丢失关键信息;(2) 对微小扰动非常敏感,一个段落的调整可能影响整个提示词的语义;(3) 无法生成新的结构性内容来补充提示词的缺陷。

核心矛盾:长提示词的优化空间是巨大的——每个段落、每句话都可能成为优化对象——但现有方法缺乏有效的结构来管理这种复杂性。直接在平铺的文本上做搜索效率极低,且容易陷入局部最优。

本文目标:设计一个专门用于长提示词的系统化优化框架,能够 (1) 在不丢失信息的前提下进行精准修改;(2) 对噪声和扰动具有鲁棒性;(3) 甚至可以在没有初始人工提示词的情况下从零生成高质量提示词。

切入角度:作者观察到长提示词具有天然的层次结构(标题→段落→句子),可以被建模为树结构。在树上进行的修改天然具有局部性——修改一个叶节点不会影响到远处的内容——这为精确和鲁棒的优化提供了结构保证。

核心 idea:将长提示词表示为层次化树结构,用 Critic 模块产生修改建议,用 Actor 模块在树的特定节点上执行精确操作。

方法详解

整体框架

SCULPT 将长提示词组织为一棵层次化的树,树的不同层次对应提示词的不同粒度(如节→段落→句子)。优化过程是一个迭代循环:每一轮中,Critic 模块评估当前提示词的效果并生成结构化的反思(什么地方有问题、为什么有问题、建议如何修改),然后 Actor 模块根据反思在树的特定节点上执行具体的修改操作(如替换句子、插入新段落、删除冗余内容等)。修改后的提示词在验证集上评估,如果性能提升则接受修改,否则回滚。

关键设计

  1. 层次化树结构表示(Hierarchical Tree Representation):

    • 功能:将长提示词组织为结构化的树,支持不同粒度的精确修改
    • 核心思路:将提示词自顶向下解析为树结构——根节点是完整提示词,中间节点是各个段落或功能模块(如"任务描述"、"格式要求"、"示例"等),叶节点是具体的句子。每个节点携带其功能描述和内容文本。修改操作定义在特定的树节点上,包括:节点内容替换(Swap)、节点插入(Insert)、节点删除(Delete)、节点内容改写(Paraphrase)等。树结构保证了修改的局部性——修改一个子树不会影响其他子树。
    • 设计动机:平铺文本缺乏结构信息,修改一处容易"牵一发而动全身"。树结构将全局优化分解为局部优化,提高搜索效率的同时降低信息丢失风险。
  2. Critic 模块(反思生成):

    • 功能:评估当前提示词的效果并生成结构化的修改建议
    • 核心思路:Critic 以当前提示词和验证集上的表现作为输入,利用 LLM 进行"反思"——分析性能瓶颈出现在提示词的哪个部分、为什么出现问题、建议进行什么类型的修改。Critic 的输出是结构化的,指定了需要修改的树节点位置、问题类型和建议的修改方向。这种反思机制使得修改是有针对性的,而非盲目搜索。
    • 设计动机:盲目的随机修改效率低下。Critic 通过"先诊断再治疗"的模式,将优化过程从随机搜索提升为定向改进。
  3. Actor 模块(操作执行):

    • 功能:根据 Critic 的建议在树结构上执行具体的修改操作
    • 核心思路:Actor 接收 Critic 的修改建议,在指定的树节点上执行对应的操作。支持的操作包括:替换节点内容、在特定位置插入新节点、删除冗余节点、对节点内容进行同义改写等。Actor 的输出是修改后的新树,再转化回提示词文本进行评估。如果修改后在验证集上的性能提升,则保留修改并进入下一轮;否则回滚到上一版本。
    • 设计动机:将修改操作限定在树的局部节点上,避免了全局修改带来的信息丢失。操作类型的多样性(增删改)使得系统可以灵活应对不同的优化需求。

损失函数 / 训练策略

SCULPT 是一个无需训练的推理时框架。优化过程基于验证集上的任务性能指标(如准确率)来评判每次修改的效果。框架使用贪心策略——每轮保留性能提升最大的修改。

实验关键数据

主实验

在多个 NLP 基准任务上进行评估,涵盖分类、问答、生成等任务类型,使用 GPT-3.5/4 等不同 LLM。

方法 BBH (avg) 指令遵循 分类任务 说明
原始长提示词 基线 基线 基线 人工编写
APE 低于SCULPT 低于SCULPT 低于SCULPT 短提示词优化方法
EvoPrompt 低于SCULPT 低于SCULPT 低于SCULPT 进化式搜索
OPRO 低于SCULPT 低于SCULPT 中等 LLM自优化
SCULPT 最高 最高 最高 本文方法
SCULPT (从零生成) 接近或超过人工 竞争力强 良好 无需初始提示词

消融实验

配置 平均性能 说明
Full SCULPT 最高 完整框架
w/o Critic 显著下降 去掉反思后修改变为随机
w/o 树结构(平铺修改) 明显下降 缺乏结构化修改降低效率
w/o 迭代(单轮修改) 中等下降 一次修改不足以充分优化
固定操作类型(仅替换) 下降 单一操作类型不够灵活
不同树深度 中等深度最优 太浅→修改粒度粗;太深→搜索空间大

关键发现

  • Critic 模块贡献最大:去掉 Critic 后性能下降最明显,说明"定向反思"比"随机搜索"效率高得多
  • 树结构对鲁棒性关键:在对抗扰动实验中,SCULPT 的性能波动明显小于平铺方法,因为树结构将扰动隔离在局部
  • 从零生成能力令人惊喜:SCULPT 在没有任何初始提示词的情况下,通过多轮迭代可以生成接近甚至超过人工编写的提示词
  • 迭代轮数的边际效应:通常 3-5 轮迭代后性能趋于稳定,更多迭代提升有限

亮点与洞察

  • 树结构建模提示词是核心创新:将提示词的层次结构显式建模为树,使得修改具有天然的局部性和结构保证。这个想法简洁但有效——长文本的优化本质上就是在层次结构中找最佳配置。
  • Critic-Actor 解耦设计:分离"诊断"和"治疗"两个步骤,让每个步骤更聚焦。这个模式可以迁移到其他迭代优化任务中,如代码优化、文章修改等。
  • 鲁棒性是实际应用的关键:现有提示词优化方法对微小变化过于敏感,在实际使用中不稳定。SCULPT 的结构化方法提供了更可靠的优化结果。

局限与展望

  • 每轮迭代需要在验证集上评估,当 LLM 推理成本高且验证集大时,总优化成本可能很高
  • 树结构的初始解析依赖于提示词有合理的层次结构,对于非结构化的提示词可能不太适用
  • Critic 和 Actor 都依赖 LLM 的能力,如果 LLM 本身无法正确诊断问题,优化方向可能错误
  • 未来可以探索将 SCULPT 与 in-context learning 优化结合,同时优化提示词结构和示例选择
  • 可以引入多目标优化(如性能 + 简洁性 + 成本),避免提示词过度膨胀

相关工作与启发

  • vs APE (Automatic Prompt Engineer):APE 通过搜索和评估来优化短提示词,但对长提示词无能为力。SCULPT 通过树结构解决了长提示词的可管理性问题。
  • vs OPRO:OPRO 让 LLM 自己优化提示词,但是全局性修改,没有结构化保证。SCULPT 的 Critic-Actor 框架更精细。
  • vs DSPy:DSPy 聚焦于提示词的程序化抽象和编译优化,而 SCULPT 更关注自然语言提示词的结构化修正。两者的思路可以结合。

评分

  • 新颖性: ⭐⭐⭐⭐ 树结构建模和 Critic-Actor 框架的组合在提示词优化领域是新的,但各个组件单独并不新颖
  • 实验充分度: ⭐⭐⭐⭐ 覆盖多种任务类型,有鲁棒性实验和消融,但缺少对不同 LLM 的广泛对比
  • 写作质量: ⭐⭐⭐⭐ 动机清晰,框架描述系统化,图表质量好
  • 价值: ⭐⭐⭐⭐ 填补了长提示词优化的空白,对实际提示工程有参考价值

相关论文