问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

自动提示工程:对大型语言模型进行自动提示工程的反思、文献综述和实验

创作时间:
作者:
@小白创作中心

自动提示工程:对大型语言模型进行自动提示工程的反思、文献综述和实验

引用
CSDN
1.
https://blog.csdn.net/wjjc1017/article/details/137068017

在构建基于大型语言模型(LLM)的应用程序时,优化提示(prompt)以获得期望的输出是一个关键环节。本文深入探讨了提示工程的本质,将其分为解决型任务和创造型任务两大类,并分别介绍了自动化提示工程的研究进展和实践方法。


作者使用 DALL-E 的帮助生成的图片

在过去几个月里,作者一直在努力构建各种基于大型语言模型的应用程序,发现相当大一部分时间都是专门用来改进提示,以获得期望的语言模型输出。这促使作者思考,是否有一天,写提示的过程可以大部分自动化。

提示工程的本质

尽管互联网上有无数的提示工程指南,但作者仍无法确定提示工程是一门艺术还是科学

  • 艺术视角:当根据输出中观察到的情况迭代学习和编辑提示时,它感觉像一门艺术。随着时间的推移,会发现一些微小细节很重要——例如使用“必须”而不是“应该”,或者将指导方针放在提示的末尾而不是中间。根据任务的不同,有太多表达一组指令和指导方针的方式,有时候感觉像是反复试错。

  • 科学视角:有人可能会认为提示只是超参数。最终,语言模型只是将提示视为嵌入,并且像所有超参数一样,如果有一组已建立的训练和测试数据,可以对其进行调整并客观地衡量其性能。

经过一番思考,作者认为答案介于两者之间。提示工程是一门科学还是一门艺术,实际取决于试图让语言模型做什么。将语言模型所做的任务分为两类:解决创造

第一部分:语言模型作为解决者

在解决方面,语言模型用于解决数学问题、分类情感、生成 SQL 代码、翻译文本等。这些任务可以具有相对明确定义的输入-输出对,因此对于这类具有明确定义训练数据的任务,提示工程更倾向于被描述为一门科学。

自动提示工程的研究进展

  • Zhou 等人的研究:他们改进了著名的 Zero-Shot-COT 论文中的“让我们逐步思考”提示,提出“让我们逐步解决这个问题,以确保我们有正确的答案”。研究发现,为押韵添加上下文示例会损害模型性能,因为所选指令过度拟合了零样本学习场景。

  • Google DeepMind 的 OPRO:提出了包含元提示内的输入/输出对示例、先前提示与解决方案以及训练准确性的方法。每个优化步骤都生成新的提示,旨在基于先前生成的提示的轨迹增加测试准确性。

第二部分:语言模型作为创作者

在创造方面,语言模型的任务更具主观性和模糊性,如写电子邮件、报告、诗歌、摘要等。由于缺乏对期望输出的客观标准,很难将提示框架化为这类创造任务的超参数。

基于反馈的自动提示改进工具

作者开发了一个原型工具,可以根据用户反馈自动改进提示。该工具使用元提示根据用户的动态反馈生成新提示。以下是该工具的工作流程:

  1. 使用 {{}} 中的变量占位符编写输入提示。
  2. 应用程序根据填写的提示生成响应。
  3. 用户对响应提出反馈。
  4. 应用程序生成改进后的提示。
  5. 重复上述过程,直到获得满意的输出。

工具实现细节

元提示的代码如下:

prompt_improvement_prompt = """
# 上下文 # 
您获得了一个原始提示。
原始提示用于生成一些示例响应。对于每个响应,都提供了有关如何改进期望响应的反馈。
您的任务是审查所有反馈,然后返回一个改进后的提示,以解决反馈,使其在提示对 GPT 语言模型进行提示时生成响应更好。
# 指南 # 
- 原始提示将包含双花括号内的占位符。这些是您将在示例中看到的输入值。
- 改进后的提示不应超过 200 个单词
- 只返回改进后的提示,不要在之前和之后添加任何其他内容。记住使用双花括号内的相同占位符。
- 在生成改进提示时,不要将整个提示写成一个段落。相反,您应该使用任务描述、指南(以点形式)、和其他适当的部分来编写提示。
- 指南应以点形式呈现,不应重复任务。指南也应相互区分。
- 改进后的提示应以最容易被语言模型理解的正常英语书写。
- 根据提供的反馈,您必须将响应的期望行为重新表述为 `必须`,而不是 `应该` 的建议性陈述。
- 对提示的改进不应过于特定于单个示例。
# 详细信息 # 
原始提示是:

{original_prompt}

这些是提供的示例和每个示例的反馈:

{examples}

改进后的提示是:

"""


### 工具使用观察

- **冗长问题**:GPT4 有自然倾向于冗长的倾向,这可能导致过度拟合和提示有效性降低。可以通过元提示鼓励泛化性来克服第一个问题,但第二个问题更为棘手。
- **反馈记忆问题**:改进后的提示有时会忘记基于多次迭代给出的反馈而进行的改进。可以通过提供更长的改进历史来克服,但这将使改进提示过于冗长。
- **额外改进**:LLM 可能会提供超出用户反馈的改进指南,例如在第一个改进中添加了“提供关于讨论问题的更广泛视角”。

### 总结

对于解决型任务,APE 和 OPRO 等方法可以找到最佳提示。但对于创造型任务,这些方法可能不适用。目前,指南书可以帮助入门,但真正的试错是无可替代的。因此,如何有效地进行与人类优势(提供反馈)相一致的试验过程是最重要的,让 LLM 做剩下的工作(改进提示)。

**参考文献**

- https://arxiv.org/abs/2104.08691
- https://arxiv.org/pdf/2211.01910.pdf
- https://arxiv.org/pdf/2309.03409.pdf
- https://arxiv.org/pdf/2205.11916.pdf
- https://medium.com/mantisnlp/automatic-prompt-engineering-part-i-main-concepts-73f94846cacb
- https://github.com/keirp/automatic_prompt_engineer
- https://www.promptingguide.ai/techniques/ape
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号