[可选] 自动化提示词调优

(Optional) Automated prompt tuning

大语言模型带来了广泛能力,但获得最佳结果通常需要认真设计提示词,包括指令、示例等输入。人工设计耗时,微小措辞变化也可能显著影响效果。自动化提示词调优利用数据和算法,系统优化提示词及相关输入。这一领域仍在发展,许多组织尚未普遍采用。

为什么需要自动化提示词调优?

RAG 将 LLM 与向量数据库或搜索引擎结合,检索查询所需的上下文并加入提示词。要取得良好效果,需要合理组织检索文本周围的指令、引用格式和依据提示,并处理检索失败。一套文档上表现准确的提示词,换一套文档可能失效。逐个边界情况人工修改耗时,也难以持续。自动调优可以帮助系统调整提示词,更有效地利用检索上下文。

RAG 之外,几乎所有 LLM 应用都可能受益:

  • 文本生成:摘要、创意写作等任务的风格、清晰程度和正确性,都受到描述方式影响。自动调优器通过测试变体和测量质量,寻找更好的措辞或格式,例如更简洁的摘要、更少代码错误。
  • 分类与提取:询问“这条评论是正面还是负面?”并要求返回标签,便可进行分类。提示词措辞与 few-shot 示例显著影响准确率,可以通过数据驱动搜索寻找表达方式。
  • 智能体与工具使用:提示词通常说明如何调用工具或 API,措辞影响模型能否正确使用。自动调优可分析智能体失败位置,并逐步完善指令,形成运行、观察错误、更新提示词的反馈循环,减少每轮人工干预。

多步骤推理链、工具智能体、长对话机器人使提示词成为动态而复杂的系统组成部分。任务、数据和基础模型变化时,需要自动化方法优化并维护提示词,使其持续产生预期行为。

闭源与开源模型的自动调优

调优方式取决于使用仅通过 API 访问的闭源模型,还是可以自行运行和微调的开源模型。

闭源模型:无法修改内部权重或直接计算梯度,只能通过提示词与 temperature、top-k 等可用设置影响行为。因此依赖外部优化,把模型视为可查询的固定对象:生成候选提示词,在评估任务上测试,保留表现好的候选。可以采用进化搜索、坐标下降或启发式试验,也可以让模型批评并改进提示词,辅助搜索。

开源模型:除了黑箱搜索,还可以利用可访问的权重进行梯度优化。例如 soft prompt tuning 在输入前加入可学习的提示 token 或 embedding,再基于训练集,通过梯度下降调整这些向量,学习连续向量形式的提示词;有时还能将其转换成可读文本。另一个方法是用提示词—输出对微调模型,这更接近传统模型训练。DSPy 等框架可以把指令和 few-shot 示例视为可调参数,也可以根据可用数据进行轻量权重微调。开源场景还可以采用 Direct Preference Optimization(DPO),用比完整强化学习更简单的目标,使模型符合人类选择。

闭源模型主要通过外部搜索或模型自身的改写能力调优;开源模型还可反向传播更新提示向量,或微调权重。

自动优化提示词的技术

以下方法中,许多同时适用于闭源和开源模型。

评估循环与强化学习:提出提示词,在输入样本上测试,根据标准答案或启发式评分测量效果,再调整并重复。它类似训练,但更新的是文本。简单的网格搜索或随机搜索在提示词较长、较复杂时可能难以扩展。可以将提示词视为待优化策略,采用强化学习或 bandit 算法提高搜索效率。也可以让 LLM 分析错误,例如要求:“根据这些失败示例,提出能够纠正问题的提示词。”对建议进行评估后接受或拒绝,形成模型帮助改进自身指令的闭环。结合学习或历史试验记忆,有机会收敛到表现较好的提示词。

遗传算法与进化搜索:维护一组候选提示词,每一代根据任务指标评估,选择表现较好的候选,再通过以下操作生成新候选:

  • 变异:随机调整某些部分,例如改写句子、替换同义词、增加或删除示例,引入新变化。
  • 交叉:组合两个优秀提示词的部分内容,例如采用 A 的指令措辞与 B 的示例格式。

新一代替换旧一代,重复多轮。进化搜索可以探索较广空间,包括不直观的表达;交叉操作结合不同候选的优点,也有助于减少停留在局部最优的机会。

自一致性与提示词集成:有时改进来自使用方式。自一致性多次采样答案,再选取样本中最一致的结果。对于复杂问题,可以比较多条推理路径的最终答案,假设多数路径一致的答案更可能正确。用于提示词优化时,它通过减少输出波动,提高使用可靠性。也可以集成不同提示词,例如用优化器找到的前 5 个提示词分别回答,再多数投票。多个提示词或路径能够补偿单次错误,但会增加调用次数。延迟和预算允许时,它们可提供单纯修改提示词之外的保障。

基于人类选择的优化:缺少明确自动指标时,可以使用人类选择或任务奖励。可以借鉴 RLHF,将待更新对象设为提示词。DPO 通常用于模型微调;类似思路也可以用于提示词:比较两个提示词生成的结果,依据人类选择向更好的方向调整。自动指标难以定义时,human-in-the-loop 评估是可行方法。

以检索结果和上下文为条件的调优:RAG 或多步骤系统中的提示词可能需要随上下文变化。可以保存一组模板,由检索模型为查询选择最合适的模板。例如,为不同主题保存有效 few-shot 示例,新查询到来时取得最接近其领域的示例。自动调优可以优化动态选择和插入上下文的过程,使不同输入使用不同示例。目标是让检索与提示词构建的整体表现更好;可调参数包括示例数量 k、示例过滤条件,甚至用于检索的 embedding 模型。系统由此学习根据查询,以合适方式提供合适的辅助信息。

A/B 测试与错误驱动修改:生产环境中,可以将多个提示词 A、B 等分配给真实流量并测量结果。获得具有统计意义的数据后,自动增加优秀提示词的流量,停止使用较差版本。还可结合错误分析程序:系统产生已知错误或用户纠正回答时,分析失败并调整提示词。可以对失败案例聚类,寻找有针对性的修改。循环包括识别错误模式、提出调整、在样例上验证、部署新变体并继续测试。随着时间推移,提示词从多种错误中得到改进,类似以更多数据训练模型,只是这里更新的是指令。它与结合错误分析的评估驱动开发相近,并可形成自动持续循环。

将提示词设计视为数据驱动过程

自动化提示词调优连接了提示词工程、优化算法与软件工程。通过搜索、进化等技术,可以更加可靠、高效地调整 LLM 行为。对于 ML 工程师和开发者,重要的是像对待模型训练一样,把提示词设计视为持续迭代、依靠数据验证的过程。

搜索课程

正在加载课程目录…