今天,穆罕默德・本・扎耶德人工智能大学 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)用户交互和参与等多个方面。
下面让我们来逐条讨论一下这些提示词准则:
-
如果您更喜欢更简洁的答案,则无需对 LLM 保持礼貌,因此无需添加诸如 「请」、「如果你不介意」、「谢谢」、「我愿意」等,直奔主题即可。
-
在提示中融入目标受众,例如该领域的专家。具体而言,当你告诉大模型你的目标受众是一个孩子,它的回答会更加通俗易懂,当你告诉它受众是这个领域的专家,它会提供更加专业和深入的解释。
-
在交互式对话中将复杂的任务分解为一系列更简单的提示。
-
使用肯定的指令,如「做」,同时避免使用「不要」等否定性语言。
-
当您需要简单清晰或更深入地了解某个主题、想法或任何信息时,请利用以下提示:
- 用简单的术语解释 [插入特定主题]。
- 像我是11岁一样向我解释这个问题。
- 向我解释,就好像我是 [领域] 的初学者一样。
- 用简单的英语写 [文章 / 文本 / 段落],就像你在向一个 5 岁的孩子解释一些事情一样。
-
添加「我要给 $xxx 小费以获得更好的解决方案!」这种提示词会带来提升的原因可能是:在训练数据中,当涉及到回答是有奖励的,回答的人往往会更加准确细致,小心谨慎地提供答案,大模型从这些网络数据中学到了这些结构和方式。
-
实现示例驱动的提示(使用少样本提示)。
-
格式化提示时,以「###Instruction###」开头,然后是「###Example###」 或「###Question###」(如果相关)。随后展示您的内容。使用一个或多个换行符用于分隔指令、示例、问题、上下文和输入数据。
-
在你的提示词里面加入以下短语:「你的任务是」和「你必须」。
-
在你的提示词里面加入以下短语:「你会受到惩罚」。
-
在提示中使用「以自然、类似人类的方式回答问题」这句话。
-
使用引导性词语,例如写「一步一步地思考」。
-
在提示中加上以下短语:「确保你的回答是公正的,避免依赖刻板印象」。
-
让模型通过向你提问来引出你精确的细节和要求,直到他得到足够的信息来提供所需的输出(例如,「从现在开始,我希望你问我…」提问)。
-
要询问特定主题或想法或任何信息,并且您想测试您的理解,您可以使用 以下短语:「教我任何 [定理 / 主题 / 规则名称],并在末尾包含一个测试,并让我知道是否在我回答后,我的答案是正确的,不要事先提供答案。 」
-
为大型语言模型分配角色。
-
使用分隔符。
-
在提示中多次重复特定单词或短语。
-
将思维链 (CoT) 与 few-Shot 提示相结合。
-
使用输出引导,包括用所需输出的开头结束提示。利用输出引导,以预期响应的开头结束提示。
-
如果任务是写一篇文章 / 文本 / 段落或任何类型的文本,同时需要尽可能的详细,可以添加提示词:「写一篇详细的 [论文 / 文本 / 段落],通过添加所有必要的信息从而使我能详细了解 [主题]。 」
-
在不改变其样式的情况下更正 / 更改特定文本:尝试修改用户发送的每个段落。你应该只提高用户的语法和词汇量,并确保它听起来很自然。您应该保留原始写作风格,确保正式段落保持正式。
-
当您有一个复杂的编程提示时,该提示可能位于不同的文件中:「从现在开始,每当您生成跨越多个文件的代码,生成一个可以自动运行的 [编程语言 ] 脚本,创建指定的文件或对现有文件进行更改以插入生成的代码。[你的问题]」。
-
当您想使用特定单词、短语或句子开始或继续文本时,请使用以下方法提示: 我为你提供开头 [歌词 / 故事 / 段落 / 散文…]:[插入歌词 / 单词 / 句子]。根据提供的单词完成它。保持内容风格一致。
-
明确说明模型必须遵循的要求去生成内容, 以关键字、规定、提示或说明的形式。
-
如果要编写任何文本,例如文章或段落,并且需要与提供的示例相似,请包括下面提示语句: 根据提供的段落使用相同的语言 [/title/text/essay/answer]。