今天,穆罕默德・本・扎耶德人工智能大学 VILA Lab 带来了一项关于如何更好地为不同规模的大模型书写提示词(prompt)的研究,让大模型性能在不需要任何额外训练的前提下轻松提升50% 以上。该工作在 X (Twitter)、Reddit 和 linkedIn 等平台上都引起了广泛的讨论和关注。
论文地址: https://arxiv.org/abs/2312.16171
Github地址: https://github.com/VILA-Lab/ATLAS
论文标题:Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4
在以 ChatGPT 为首的大模型出来之后,为大语言模型设计提示词的研究已经成为一个重要的研究方向,包括 OpenAI 官方也出品了针对 ChatGPT 用户的提示工程指南 [1] ,其包含了六条书写准则:1)写出清晰的指令;2)提供参考文本;3)将复杂的任务拆分为更简单的子任务;4)给模型时间「思考」;5)使用外部工具;6)系统地测试更改。
由此可见,提示词对于如何更好地使用大模型以及得到满意的回答都具有重要的意义。然而可以看到的是,OpenAI 提供的这些准则都是比较宽泛和保守的,并没有涉及到一些具体的操作和技巧。
今天要介绍的这篇文章提供了更多也更加接地气的提示工程指南,足足有26条之多,内容涵盖了:1)回答内容和语言风格的控制;2)提示词结构和清晰度;3)复杂任务和代码提示;4)回答特异性和信息量;5)用户交互和参与等多个方面。
下面让我们来逐条讨论一下这些提示词准则:
1) 如果您更喜欢更简洁的答案,则无需对 LLM 保持礼貌,因此无需添加诸如 「请」、「如果你不介意」、「谢谢」、「我愿意」等,直奔主题即可。
2) 在提示中融入目标受众,例如该领域的专家。具体而言,当你告诉大模型你的目标受众是一个孩子,它的回答会更加通俗易懂,当你告诉它受众是这个领域的专家,它会提供更加专业和深入的解释。
3) 在交互式对话中将复杂的任务分解为一系列更简单的提示。
4) 使用肯定的指令,如「做」,同时避免使用「不要」等否定性语言。
5) 当您需要简单清晰或更深入地了解某个主题、想法或任何信息时,请利用以下提示:
用简单的术语解释 [插入特定主题]。
像我是11岁一样向我解释这个问题。
向我解释,就好像我是 [领域] 的初学者一样。
用简单的英语写 [文章 / 文本 / 段落],就像你在向一个5岁的孩子解释一些事情一样。
6) 添加「我要给 $xxx 小费以获得更好的解决方案!」这种提示词会带来提升的原因可能是:在训练数据中,当涉及到回答是有奖励的,回答的人往往会更加准确细致,小心谨慎地提供答案,大模型从这些网络数据中学到了这些结构和方式。
7) 实现示例驱动的提示(使用少样本提示)。
8) 格式化提示时,以「###Instruction###」开头,然后是「###Example###」 或「###Question###」(如果相关)。随后展示您的内容。使用一个或多个换行符用于分隔指令、示例、问题、上下文和输入数据。
9) 在你的提示词里面加入以下短语:「你的任务是」和「你必须」。
10) 在你的提示词里面加入以下短语:「你会受到惩罚」。
11) 在提示中使用「以自然、类似人类的方式回答问题」这句话。
12) 使用引导性词语,例如写「一步一步地思考」。
13) 在提示中加上以下短语:「确保你的回答是公正的,避免依赖刻板印象」。
14) 让模型通过向你提问来引出你精确的细节和要求,直到他得到足够的信息来提供所需的输出(例如,「从现在开始,我希望你问我......」提问)。
15) 要询问特定主题或想法或任何信息,并且您想测试您的理解,您可以使用 以下短语:「教我任何 [定理 / 主题 / 规则名称],并在末尾包含一个测试,并让我知道是否在我回答后,我的答案是正确的,不要事先提供答案。」
16) 为大型语言模型分配角色。
17) 使用分隔符。
18) 在提示中多次重复特定单词或短语。
19) 将思维链 (CoT) 与 few-Shot 提示相结合。
20) 使用输出引导,包括用所需输出的开头结束提示。利用输出引导,以预期响应的开头结束提示。
21) 如果任务是写一篇文章 / 文本 / 段落或任何类型的文本,同时需要尽可能的详细,可以添加提示词:「写一篇详细的 [论文 / 文本 / 段落],通过添加所有必要的信息从而使我能详细了解 [主题]。」
22) 在不改变其样式的情况下更正 / 更改特定文本:尝试修改用户发送的每个段落。你应该只提高用户的语法和词汇量,并确保它听起来很自然。您应该保留原始写作风格,确保正式段落保持正式。
23) 当您有一个复杂的编程提示时,该提示可能位于不同的文件中:「从现在开始,每当您生成跨越多个文件的代码,生成一个可以自动运行的 [编程语言 ] 脚本,创建指定的文件或对现有文件进行更改以插入生成的代码。[你的问题]」。
24) 当您想使用特定单词、短语或句子开始或继续文本时,请使用以下方法提示:
我为你提供开头 [歌词 / 故事 / 段落 / 散文...]:[插入歌词 / 单词 / 句子]。根据提供的单词完成它。保持内容风格一致。
25) 明确说明模型必须遵循的要求去生成内容, 以关键字、规定、提示或说明的形式。
26) 如果要编写任何文本,例如文章或段落,并且需要与提供的示例相似,请包括下面提示语句:
根据提供的段落使用相同的语言 [/title/text/essay/answer]。
以下是一些具体的提示词例子和对应的 GPT-4输出结果:
1. 当我们询问 GPT-4问题的时候,最后可以加上一句「提供公正的解释,突出科学证据和不同观点。」可以看到加上该提示词之后 GPT-4的回答明显会更加丰富和有深度。
2. 我们可以提供一些示例让模型更好的理解我们的目标和出发点。
3. 我们可以告诉模型用简单的方法来回答问题,就像是在向一个5岁的孩子解释一些事情。可以看到加上和不加这个提示词,模型的回复在理解困难程度上有明显的差别。
4. 我们可以通过给模型小费的方式,让模型更加严谨完善的回答问题。
定量实验结果:
1. 模型回答质量提升比例:该指标表示在使用提示词原则后,问题的回答质量提高的百分比。
可以看到所有提示词原则在人工评测中都取得了或多或少的提升,其中原则14获得了100% 的提升,意味着所有问题通过使用该提示原则都获得了提升。与此同时,原则1得到的提升相对较少。
2. 回复正确性提升:正确性指模型输出或回答的精度,判断标准是回答是否准确、相关且没有错误的。本文同时考虑了不同模型的绝对正确性和相对正确性提升两个指标。
上图结果为加入提示原则后,大模型回复质量的相对正确性提升。「small」表示7B 模型,「medium」表示13B 模型,「large scale」表示70B 和 GPT-3.5/4模型。可以看到大模型在使用提示词原则后,提升幅度相对于小模型和中等模型会更加显著。
3. 单独每个模型准确度提升比例:
上图是每个不同大小的模型相对提升幅度,可以看到类似的现象,模型越大,对于提示词的响应和回复也越加敏锐,准确性提升也相对越大。
4. 下图是不同大小模型对于每条提示词原则准确度提升大小具体结果:
提示词准则数据集:
本文在介绍26条提示词准则的同时,还附带发布了一个基于准则提示词的基准,其中每条准则作者准备了20个不同的问题,每个问题同时包含带有准则和不带准则两种对应的大模型回复。
该数据集可以用在:1)大语言模型对于提示词响应的性能评测;2)偏好驱动的大模型微调。
数据集链接:https://github.com/VILA-Lab/ATLAS。
更多提示词原则使用方法和说明,欢迎阅读原文。
参考文献
[1] Six strategies for getting better results. OpenAI. https://platform.openai.com/docs/guides/prompt-engineering/six-strategies-for-getting-better-results