# 基本概念

import {Screenshot} from 'components/screenshot'
import INTRO1 from '../../img/introduction/sky.png'

## 给LLM提示

你可以通过简单的提示词（Prompts）获得大量结果，但结果的质量与你提供的信息数量和完善度有关。一个提示词可以包含你传递到模型的*指令*或*问题*等信息，也可以包含其他详细信息，如*上下文*、*输入*或*示例*等。你可以通过这些元素来更好地指导模型，并因此获得更好的结果。

看下面一个简单的示例：

*提示词：*

```
The sky is
```

*输出：*

```
blue.
```

如果你正在使用OpenAI Playground或其他任何LLM Playground，你可以按照以下屏幕截图中的方式提示模型：

<Screenshot src={INTRO1} alt="INTRO1" />

需要注意的是，当使用 OpenAI 的 `gpt-4` 或者 `gpt-3.5-turbo` 等聊天模型时，你可以使用三个不同的角色来构建 prompt： `system`、`user` 和 `assistant`。其中 `system` 不是必需的，但有助于设定 `assistant` 的整体行为，帮助模型了解用户的需求，并根据这些需求提供相应的响应。上面的示例仅包含一条 `user` 消息，你可以使用 `user` 消息直接作为 prompt。为简单起见，本指南所有示例（除非明确提及）将仅使用 `user` 消息来作为 `gpt-3.5-turbo` 模型的 prompt。上面示例中 `assistant` 的消息是模型的响应。你还可以定义 `assistant` 消息来传递模型所需行为的示例。你可以在[此处](https://www.promptingguide.ai/models/chatgpt)了解有关使用聊天模型的更多信息。

从上面的提示示例中可以看出，语言模型能够基于我们给出的上下文内容 `"The sky is"` 完成续写。输出可能是出乎意料的，或者与你想要完成的任务相去甚远。实际上，这个基本示例突出了提供更多上下文或明确指示你想要实现什么的必要性。这正是提示工程的核心所在。

让我们试着改进一下：

*提示词：*

```
Complete the sentence: 

The sky is
```

*输出：*

```
blue during the day and dark at night.
```

结果是不是要好一些了？本例中，我们告知模型去完善句子，因此输出结果看起来要好得多，因为它完全按照你告诉它要做的（“完善句子”）去做。在本指南中，这种设计有效的提示词以指导模型执行期望任务的方法被称为**提示工程**。

以上示例基本说明了现阶段的大语言模型能够发挥的功能作用。它们可以用于执行各种高级任务，如文本概括、数学推理、代码生成等。

## 提示词格式

前文中我们还是采取的比较简单的提示词。 标准提示词应该遵循以下格式：

```
<问题>?
```

或 

```
<指令>
```

你可以将其格式化为问答（QA）格式，这在许多问答数据集中是标准格式，如下所示：

```
Q: <问题>?
A: 
```

当像上面那样提示时，这也被称为**零样本提示**，即你直接提示模型给出一个回答，而没有提供任何关于你希望它完成的任务的示例或示范。一些大型语言模型具备进行零样本提示的能力，但这取决于手头任务的复杂性和知识，以及模型被训练以在其上表现良好的任务。


具体的零样本提示示例如下：

*提示：*

```
Q: What is prompt engineering?
```

对于一些较新的模型，你可以省略“Q:”部分，因为模型会根据序列（译注：输入的提示词）的构成将其理解为问答任务。换句话说，提示可以简化如下：

*提示词*

```
What is prompt engineering?
```

基于以上标准格式（format），一种流行且有效的提示技术被称为**少样本提示**，其中你提供示例（即示范）。你可以按照以下格式组织少样本提示：

```
<问题>?
<答案>

<问题>?
<答案>

<问题>?
<答案>

<问题>?

```

问答格式的版本看起来像这样：

```
Q: <问题>?
A: <答案>

Q: <问题>?
A: <答案>

Q: <问题>?
A: <答案>

Q: <问题>?
A:
```

请记住，使用问答格式并非必须。提示格式取决于手头的任务。例如，你可以执行一个简单的分类任务，并给出如下所示的示例来给任务示范：

*提示词：*

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

*输出：*

```
Negative
```

语言模型可以基于一些说明了解和学习某些任务，而小样本提示正好可以赋能上下文学习能力。我们将在接下来的章节中更广泛的讨论如何使用零样本提示和小样本提示。
