提示的基础
提示一个大型语言模型
使用简单提示可以实现很多功能,但结果的质量取决于您提供的信息量以及提示的精心设计程度。提示可以包含您传递给模型的指令或问题等信息,并包括其他细节,如上下文、输入或示例。您可以使用这些元素更有效地指导模型,以提高结果的质量。
让我们从一个简单提示的基本示例开始:
提示
天空是
输出:
蓝色。
如果您正在使用 OpenAI Playground 或任何其他 LLM Playground,您可以像以下截图中所示提示模型:
需要注意的是,当使用 OpenAI 聊天模型,如 gpt-3.5-turbo
或 gpt-4
时,您可以使用三种不同的角色来构建提示:system
、user
和 assistant
。系统消息不是必需的,但有助于设置助手的整体行 为。上面的示例仅包含用户消息,您可以直接使用它来提示模型。为简单起见,除非明确提到,所有示例都将仅使用 user
消息来提示 gpt-3.5-turbo
模型。上面示例中的 assistant
消息对应模型的响应。您还可以定义一个助手消息,以传递您想要的行为示例。您可以在这里了解更多关于使用聊天模型的信息 here。
从上面的提示示例中,您可以看到语言模型根据上下文 "天空是"
响应一系列有意义的标记。输出可能出乎意料,或者与您想要完成的任务相去甚远。事实上,这个基本示例突显了提供更多上下文或指示的必要性,以明确指导系统实现特定目标。这就是提示工程的意义所在。
让我们尝试稍作改进:
提示:
完成句子:
天空是
输出:
白天是蓝色的,夜晚是黑色的。
这样好些了吗?通过上面的提示,您指示模型完成句子,因此结果看起来更好,因为它完全按照您告诉它要做的事情("完成句子")进行。这种设计有效提示以指导模型执行所需任务的方法,在本指南中被称为提示工程。
上面的示例是今天大型语言模型所能实现的基本示例。当今的大型语言模型能够执行各种高级任务,从文本摘要到数学推理再到代码生成。
提示格式化
您已经尝试了一个非常简单的提示。标准提示的格式如下:
<问题>?
或
<指令>
您可以将其格式化为问答(QA)格式,这在许多 QA 数据集中很常见,如下所示:
Q: <问题>?
A:
像上面这样提示时,也被称为零-shot提示,即,您直接提示模型进行响应,而没有关于您希望它完成的任务的任何示例或演示。一些大型语言模型有能力执行零-shot提示,但这取决于手头任务的复杂性和知识,以及模型在哪些任务上训练得很好。
一个具体的提示示例如下:
提示
Q: 什么是提示工程?
对于一些较新的模型,您可以跳过 "Q:" 部分,因为模型会根据序列的构成方式理解为一个问答任务。换句话说,提示可以简化如下:
提示
什么是提示工程?
根据上述标准格式,一种流行且有效的提示技术被 称为少-shot提示,其中您提供示例(即演示)。您可以将少-shot提示格式化如下:
<问题>?
<答案>
<问题>?
<答案>
<问题>?
<答案>
<问题>?
问答格式版本如下:
Q: <问题>?
A: <答案>
Q: <问题>?
A: <答案>
Q: <问题>?
A: <答案>
Q: <问题>?
A:
请记住,不一定要使用问答格式。提示格式取决于手头的任务。例如,您可以执行一个简单的分类任务,并提供演示示例,如下所示:
提示:
这太棒了! // 积极
这太糟糕了! // 消极
哇,那部电影太棒了! // 积极
多么可怕的节目! //
输出:
负面
少样本提示使得模型能够进行上下文学习,即语言模型在仅有少量示范的情况下学习任务的能力。我们将在接下来的章节中更详细地讨论零样本提示和少样本提示。