# 提示的基础知识

## 基本提示

使用简单提示可以实现很多功能，但结果的质量取决于您提供的信息量以及提示的质量。提示可以包含诸如传递给模型的*指令*或*问题*等信息，并包括其他细节，例如*上下文*、*输入*或*示例*。您可以使用这些元素更好地指导模型，从而获得更好的结果。

让我们从一个简单的提示示例开始：

*提示*
```
The sky is
```

*输出：*
```
blue

The sky is blue on a clear day. On a cloudy day, the sky may be gray or white.
```

正如您所看到的，语言模型输出了一系列字符串，这些字符串在给定上下文“`The sky is`”的情况下是有意义的。输出可能出乎意料或与我们想要完成的任务相距甚远。

这个基本示例还突显了提供更多上下文或说明的必要性，以便更明确地说明我们想要实现的特定内容。

让我们尝试稍微改进一下：

*提示：*
```
Complete the sentence: 

The sky is
```

*输出：*

```
so  beautiful today.
```

这样好了吗？我们告诉模型完成句子，因此结果看起来更好，因为它完全遵循了我们告诉它要做的事情（“完成句子”）。这种设计最佳提示以指导模型执行任务的方法被称为**提示工程**。

上面的示例是今天LLM所能实现的基本说明。今天的LLM能够执行各种高级任务，从文本摘要到数学推理到代码生成。

## 提示格式

我们尝试了一个非常简单的提示。标准提示的格式如下：

```
<Question>?
```

或

```
<Instruction>
```

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

```
Q: <Question>?
A: 
```

像上面这样提示时，也称为*零-shot提示*，即您直接提示模型进行响应，而没有关于您想要实现的任务的任何示例或演示。一些大型语言模型确实具有执行零-shot提示的能力，但这取决于手头任务的复杂性和知识。

给定上述标准格式，一种流行且有效的提示技术是所谓的*少样本提示*，其中我们提供示例（即演示）。少样本提示可以格式化如下：

```
<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
```

少样本提示实现了上下文学习，即语言模型在给定少量演示的情况下学习任务的能力。