LLM综述-prompts

A Survey of Large Language Models

https://arxiv.org/abs/2303.18223

来自这篇综述,总结了表现不错的prompt类型和书写方法。总的原则,遵循:清晰地表达任务目标、将任务分解为易于处理的细分任务、提供少量演示以及利用模型友好的格式。

Task Description

任务描述

T1. 请尽可能详细地描述您的提示,例如:

“将文章总结为一个短段落,字数不超过50个单词。应包括主要情节和结论,可以省略不重要的细节。”

"Summarize the article into a short paragraph within 50 words. The major storyline and conclusion should be included, and the unimportant details can be omitted."

T2. 使用预设提示,例如“你是计算机科学领域的专家”,可以帮助 LLM 知道它是一个专家。

 ''You are a sophisticated expert in the domain of compute science."

T3. 告诉模型应该做什么,而不是不应该做什么。

T4. 为了避免 LLM 生成过长的输出,您可以只使用提示:“问题:简短回答:”。此外,您还可以使用以下后缀:“用一两个单词”、“用一到两个句子”。

"Question: Short Answer: ''. 

"in a or a few words''

"in one of two sentences''.

Input Data

输入数据

I1. 对于需要基础知识的问题,首先通过搜索引擎检索相关文档,然后将它们连接成提示作为参考是很有用的。

I2. 为了突出提示中的一些重要部分,请使用特殊标记,例如引号(“”)和换行符(\n)。您也可以同时使用它们进行强调。

Contextual Information

上下文信息

C1. 对于复杂的任务,您可以清晰地描述完成它所需的中间步骤,例如:“请逐步回答问题,步骤如下:步骤1-将问题分解成几个子问题,...”

 "Please answer the question step by step as: Step 1 - Decompose the question into several sub-questions, …''

C2. 如果您希望 LLMs 为一段文本提供分数,那么有必要提供一个详细的评分标准说明,并提供例子作为参考。

C3. 当 LLMs 根据某些上下文(例如根据购买历史进行推荐)生成文本时,向它们提供有关生成结果的说明,以条件化上下文,有助于提高生成文本的质量。

Demonstration

演示

D1. 格式良好的上下文示例对于指导 LLMs 特别是生成具有复杂格式的输出非常有用。

D2. 对于少量样本的思维链式提示,您也可以使用提示语“让我们逐步思考”,而少量样本示例应该用“\n”而不是句号分隔。

 "Let's think step-by-step'', 

D3. 您还可以检索上下文中的类似示例,以提供LLMs有用的任务特定知识。为了检索更多相关的示例,首先获取问题的答案,然后将其与问题连接起来进行检索是有用的。

D4. 在提示中,上下文示例的多样性也是有用的。如果难以获得多样化的问题,也可以寻求保持问题解决方案的多样性。

D5. 当使用基于聊天的语言模型时,您可以将上下文示例分解为多轮消息,以更好地匹配人类聊天机器人对话格式。同样,您还可以将示例的推理过程分解为多轮对话。

D6. 复杂而丰富的上下文示例可以帮助语言模型回答复杂的问题。

D7. 由于符号序列通常可以分为多个片段(例如,i1,i2,i3 → i1,i2和i2,i3),因此可以使用前面的片段作为上下文示例来指导语言模型预测后续的片段,同时提供历史信息。

D8. 对于上下文示例和提示组件,顺序很重要。对于非常长的输入数据,问题的位置(首位或末位)也可能影响性能。

D9. 如果您无法从现有数据集中获取上下文示例,则另一种选择是使用LLM本身生成的零样本示例。

Other Designs

其他设计

O1. 在得出结论之前,让LLM检查其生成的结果,例如,“检查上述解决方案是否正确。”

"Check whether the above solution is correct or not.''

O2. 如果LLM无法很好地解决任务,您可以通过提示LLM操纵外部工具来寻求帮助。这样,应该将工具封装为可调用的API,并详细描述其功能,以更好地指导LLM利用工具。

O3. 提示应该是自包含的,并且最好不包括上下文中的代词信息(例如,它和它们)。

O4. 当使用LLM比较两个或多个示例时,顺序对性能影响很大。

O5. 在提示之前,为LLM分配一个角色有助于它更好地完成以下任务指令,例如,“我希望你扮演律师的角色”。

"I want you to act as a lawyer''.

O6. OpenAI模型在英语中的任务表现比其他语言更好。因此,首先将输入翻译成英语,然后再将其提供给LLM会很有用。

O7. 对于多项选择题,限制LLM的输出空间很有用。您可以使用更详细的解释或只对logits施加约束。

O8. 对于基于排序的任务(例如,推荐),与其直接输出排序后每个项目的完整文本,不如为未排序的项目分配指示器(例如,ABCD),并指示LLM直接输出已排序的指示器。

原文:

https://github.com/RUCAIBox/LLMSurvey/blob/main/Prompts/README.md

2dfcf836b1e11c86784bfd646741afa9.jpeg

欢迎加入社群

交流提示工程

猜你喜欢

转载自blog.csdn.net/shadowcz007/article/details/131692945