Basics of Prompting

提示基础

提示一个LLM

你可以通过简单的提示实现很多功能,但结果的质量取决于你提供的信息量以及提示的精心设计程度。提示可以包含你传递给模型的指令问题等信息,还可以包括其他细节,如上下文输入示例。你可以使用这些元素更有效地指导模型,以提高结果的质量。

让我们从一个简单的提示的基本示例开始:

提示

The sky is

输出:

blue.

如果您正在使用OpenAI Playground或任何其他LLM playground,您可以按照以下截图所示提示模型:

INTRO1

这里是一个关于如何开始使用OpenAI Playground的教程:

Something to note is that when using the OpenAI chat models like gpt-3.5-turbo or gpt-4, you can structure your prompt using three different roles: system, user, and assistant. The system message is not required but helps to set the overall behavior of the assistant. The example above only includes a user message which you can use to directly prompt the model. For simplicity, all of the examples, except when it's explicitly mentioned, will use only the user message to prompt the gpt-3.5-turbo model. The assistant message in the example above corresponds to the model response. You can also define an assistant message to pass examples of the desired behavior you want. You can learn more about working with chat models here (opens in a new tab).

你可以从上面的提示示例中观察到,语言模型根据上下文"The sky is"生成了一系列有意义的标记。输出可能出乎意料或与你想要完成的任务相差甚远。事实上,这个基本示例强调了提供更多上下文或关于你希望系统具体实现什么的指令的必要性。这就是提示工程的全部内容。

让我们尝试改进一下:

提示:

Complete the sentence: 

The sky is

输出:

blue during the day and dark at night.

这样更好吗?好吧,通过上面的提示,你正在指导模型完成句子,因此结果看起来好多了,因为它完全按照你告诉它的去做(“完成句子”)。这种设计有效提示以指导模型执行所需任务的方法在本指南中被称为提示工程

上面的例子是当今LLMs可能性的基本说明。今天的LLMs能够执行各种高级任务,从文本摘要到数学推理再到代码生成。

提示格式化

你上面尝试了一个非常简单的提示。一个标准的提示有以下格式:

<Question>?

<Instruction>

你可以将其格式化为问答(QA)格式,这在许多QA数据集中是标准的,如下所示:

Q: <Question>?
A: 

当像上面这样提示时,它也被称为零样本提示,即你直接提示模型给出响应,而没有任何关于你希望它完成的任务的示例或演示。一些大型语言模型具有执行零样本提示的能力,但这取决于手头任务的复杂性和知识,以及模型被训练以良好执行的任务。

一个具体的提示示例如下:

提示

Q: What is prompt engineering?

对于一些较新的模型,你可以跳过“Q:”部分,因为模型会根据序列的组成方式将其理解为问答任务。换句话说,提示可以简化为如下形式:

提示

What is prompt engineering?

根据上述标准格式,一种流行且有效的提示技术被称为少样本提示,其中你提供示例(即演示)。你可以按照以下方式格式化少样本提示:

<Question>?
<Answer>

<Question>?
<Answer>

<Question>?
<Answer>

<Question>?

QA格式版本将如下所示:

Q: <Question>?
A: <Answer>

Q: <Question>?
A: <Answer>

Q: <Question>?
A: <Answer>

Q: <Question>?
A:

请记住,使用QA格式并不是必须的。提示格式取决于手头的任务。例如,您可以执行一个简单的分类任务,并给出如下所示的任务示例:

提示:

This is awesome! // Positive
This is bad! // Negative
Wow that movie was rad! // Positive
What a horrible show! //

输出:

Negative

少样本提示使得上下文学习成为可能,这是语言模型在给定少量示例的情况下学习任务的能力。我们将在接下来的章节中更广泛地讨论零样本提示和少样本提示。