logo
P
Prompt Master

Prompt 大师

掌握和 AI 对话的艺术

Basics

prompting LLMs 的基本概念,以及 zero-shot / few-shot prompting

#Prompting LLMs

你可以通过简单的

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

看下面一个简单的示例:

Prompt:

code
The sky is

Output:

code
blue.

如果你正在使用 OpenAI Playground 或其他任何 LLM Playground,你可以按照以下截图中的方式 prompt 模型:

INTRO1

需要注意的是,当使用 OpenAI 的

code
gpt-4
或者
code
gpt-3.5-turbo
等 chat 模型时,你可以使用三个不同的 role 来构建 prompt:
code
system
code
user
code
assistant
。其中
code
system
不是必需的,但有助于设定
code
assistant
的整体行为,帮助模型了解用户的需求,并根据这些需求提供相应的响应。上面的示例仅包含一条
code
user
message,你可以使用
code
user
message 直接作为 prompt。为简单起见,本章所有示例(除非明确提及)将仅使用
code
user
message 来作为
code
gpt-3.5-turbo
模型的 prompt。上面示例中
code
assistant
的 message 是模型的响应。你还可以定义
code
assistant
message 来传递模型所需行为的示例。你可以在此处了解有关使用 chat 模型的更多信息:https://www.promptingguide.ai/models/chatgpt

从上面的示例中可以看出,语言模型能够基于我们给出的上下文内容

code
"The sky is"
完成续写。输出可能是出乎意料的,或者与你想要完成的任务相去甚远。实际上,这个基本示例突出了提供更多上下文或明确指示你想要实现什么的必要性。这正是 prompt engineering 的核心所在。

让我们试着改进一下:

Prompt:

code
Complete the sentence: The sky is

Output:

code
blue during the day and dark at night.

结果是不是要好一些了?本例中,我们告知模型去完善句子,因此输出结果看起来要好得多,因为它完全按照你告诉它要做的(“完善句子”)去做。

以上示例基本说明了现阶段的大语言模型能够发挥的功能作用。它们可以用于执行各种高级任务,如 text summarization、math reasoning、code generation 等。

#Model settings

如果你发现同一个 prompt 每次输出差异很大,优先检查和调整 model settings(例如

code
temperature
/
code
top_p
)。建议先看下一章:

#Prompt 格式

前文中我们采取的是比较简单的 prompt。标准 prompt 通常遵循以下格式:

code
<question>?

或:

code
<instruction>

你也可以将其格式化为 Q&A 格式(在许多 Q&A dataset 中是标准格式),如下所示:

code
Q: <question>? A:

当像上面那样 prompt 时,这也被称为

code
zero-shot
prompting,即你直接 prompt 模型给出一个回答,而没有提供任何关于你希望它完成的任务的示例或示范。一些大型语言模型具备进行
code
zero-shot
prompting 的能力,但这取决于任务复杂度、知识覆盖,以及模型训练时的对齐方式。

一个

code
zero-shot
prompt 示例:

Prompt:

code
Q: What is prompt engineering?

对于一些较新的模型,你可以省略 “Q:” 部分,因为模型会根据序列的构成将其理解为 Q&A 任务。换句话说,prompt 可以简化如下:

Prompt:

code
What is prompt engineering?

基于以上标准格式,一种流行且有效的提示技术被称为

code
few-shot
prompting,其中你提供示例(即 demonstration)。你可以按照以下格式组织
code
few-shot
prompting:

code
<question>? <answer> <question>? <answer> <question>? <answer> <question>?

Q&A 格式的版本:

code
Q: <question>? A: <answer> Q: <question>? A: <answer> Q: <question>? A: <answer> Q: <question>? A:

请记住,是否使用 Q&A 格式取决于任务类型。例如,你可以执行一个简单的 classification task,并给出如下所示的示例来示范任务:

Prompt:

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

Output:

code
Negative

LLM 可以基于少量说明了解和学习某些任务,而

code
few-shot
prompting 正好可以赋能 in-context learning 能力。我们会在后续章节更广泛地讨论如何使用
code
zero-shot
prompting 和
code
few-shot
prompting。

1v1免费职业咨询