rag系列文章目录


前言

随着大模型能力越来越强,人们觉得提示词工程没有那么重要了,基于一个prompt规则,手动调试调试,即可完成提示词的工作。然后,针对不同的模型,这样手动改写的prompt,并不一定适用,而且如果有些case效果不好,调试特别麻烦。在要求较高的情况下,提示词像模型超参数一样,也是很有必要进行优化并精心设计的。特别是在特定任务场景,使用很好的prompt来穷尽大模型的能力,很有必要且很有价值。这催生了自动提示词工程APE的兴起。


一、APE工作流程

在这里插入图片描述
要开始使用 APE,我们需要准备以下几个要素:

  • 一个带标签的数据集,用来代表我们希望优化提示词的任务;
  • 一个初始提示词;
  • 一个可以作为爬坡优化(hill climbing)目标的评估指标。

图中流程步骤如下:

  1. 准备要素:
    我们先准备好带标签的数据集、初始提示词,以及评估指标。
  2. 从初始提示词开始:
    使用初始提示词和数据集启动 APE 工作流,把它们输入目标大模型(即我们希望在生产环境中使用并进行提示词优化的大模型)。
  3. 生成回复:
    目标大模型会基于数据集和初始提示词生成输出。比如说,我们有 10 条推文,而初始提示词是“判断这条推文的情感”,那么模型会生成 10 个结果,每条推文对应一个情感分类。
  4. 评估回复:
    因为数据集是带标签的,我们有每条推文的真实答案。评估器大模型会将真实标签与目标大模型的输出进行比较,计算出目标大模型的性能并存储结果。
  5. 优化提示词:
    然后,优化器大模型会生成一个新的提示词。具体如何生成,我们稍后会展开说明。但可以先理解为,这类似于超参数优化中选择新的候选值,会有不同的策略来完成。
  6. 重复步骤 3–5:
    生成回复 → 评估回复 → 优化提示词,这个过程会不断迭代。随着迭代的进行,提示词逐步被优化,理想情况下,目标大模型的回复质量也会持续提升。
  7. 选择最佳提示词:
    在达到设定的迭代次数,或性能达到满意水平时,流程就会结束。这时表现最好的提示词(以及所有提示词的评分结果)会返回给用户。

二、调优方法

如何才能通过上面的流程,获取最佳的prompt呢?可以从下面的方法着手:

  • 尝试随机prompt
    与随机搜索HPO类似,随机提示优化采用"暴力"策略。该策略让优化器LLM生成一系列随机提示,这些提示与先前提示及结果完全独立。系统不会尝试从历史结果中学习,而是直接随机探索海量潜在提示的组合。

  • Optimisation by PROmpting (OPRO)
    若将随机提示优化类比为HPO中的随机搜索,那么OPRO则类似于贝叶斯搜索。在OPRO中,我们利用前次迭代的结果,主动针对评估指标进行爬坡优化。该方法持续追踪所有历史提示词的得分,并根据其在优化轨迹中的表现排序提示词历史,形成宝贵的信息源,引导优化器LLM选择更高效的提示词。
    OPRO的核心在于元提示,它用于引导优化器LLM。这种元提示不仅包含常规的任务描述和示例,还包含优化轨迹。借助该提示,优化器LLM能够分析优化轨迹中的模式,识别成功提示的要素并规避失败提示的陷阱。这种学习过程使优化器能够随时间推移生成越来越有效的提示,从而迭代提升目标LLM的性能。
    在这里插入图片描述

  • 引入few shot
    通过范例选择机制,少样本提示可融入APE流程。该机制旨在为特定任务筛选最优少样本示例,从而进一步增强优化提示词的效能。其核心思路在于:通过OPRO找到高性能优化提示词后,可借助少量示例进一步提升目标LLM的性能。此时范例选择机制便发挥作用——它系统性地测试不同示例集并追踪其表现。与提示优化类似,该机制能自动确定特定任务与特定(优化后)提示词的最佳少样本示例。


总结

在金融领域,比如涉及风控资金相关的大模型应用中,对最终的效果要求很高,这就需要有较高稳定的大模型输出,通过自动化提示词工程,能够极大穷尽大模型能力,获取最佳的大模型输出。

参考文档

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐