使用ChatGPT和GPT-3进行提示工程的实践指南

440 阅读12分钟

介绍ChatGPT和GPT-3

除非你在过去几周一直生活在岩石下,否则你有可能听说过ChatGPT:来自OpenAI的人工智能聊天机器人,它能够对你扔给它的几乎任何问题做出类似人类的自然反应。它可以写电子邮件,解决编码问题,写诗,甚至讲笑话。

ChatGPT建立在OpenAI大型语言模型的GPT-3.5系列之上,并被微调为以对话的方式进行互动。它甚至可以回答后续问题,承认自己的错误并加以纠正,挑战带有错误前提的提示,并拒绝不适当的请求。

OpenAI还提供了一系列的GPT-3模型,可以理解并生成自然语言和各种任务的代码。这些模型中最强大的是text-davinci-003 ,它在响应的质量方面优于其他模型。然而,这个模型是最慢和最昂贵的一个。

你可以在OpenAI Playground或ChatGPT上免费摆弄GPT-3模型(在有限时间内)。

GPT-3模型有一些可以调整的参数来控制反应,然而,它缺乏像ChatGPT那样对问题进行跟进的能力。这两个工具可以根据不同的任务用于不同的目的,在本指南中,我们将使用这两个工具来学习 "提示工程"。

什么是提示工程?

如果你玩过ChatGPT(或GPT-3模型),你可能已经注意到,回答的质量取决于你如何提问。通常情况下,带有准确指示的详细提示会带来更好的结果,但完美的提示工程也有一定的 "艺术"。如果你刚开始使用ChatGPT和GPT-3模型,不知道我在说什么,这里有一个例子。

注意:我将在这个例子中使用text-davinci-003 ,因为它的*温度,*即结果的一致性如何,是可以改变的。我把温度设置为0,这最适合于问答问题。我将在文章的后面解释这一点。你可以用ChatGPT来做这个,但结果可能会有所不同。

让我们首先向text-davinci-003 一个简单的问题。(提示以粗体字显示,其余为完成部分)

8x9是什么?
72

很明显,它给出了正确的答案。现在,让我们问它一个更难的问题。

696x87是什么?
59952

哎呀,它弄错了。答案应该是60552。通过一些小小的 "提示工程",我们可以提取出正确的答案。

什么是696x87?让我们一步一步地思考。
第一步:696 x 80 = 55,680
第二步:696 x 7 = 4,872
第三步:55,680 + 4,872 = 60,552

答案是:696 x 87 = 60,552

我们看到,鼓励模型解释它的推理,可以得到更准确的结果。这种方法并不是每次都能得到100%准确的答案。比如说:

542x98的结果是什么?让我们一步一步地思考。

第一步:百位数相乘:5 x 9 = 45
第二步:十位数相乘:4 x 8 = 32
第三步:一位数相乘:2 x 8 = 16
第四步:将结果相加:45 + 32 + 16 = 93

542 x 98的结果是53,236。

哇,完全乱套了。让我们举一些例子来帮助它进行推理步骤。

问:696x87是什么?让我们一步一步地思考。
答:
第一步:696 x 80 = 55,680
第二步:696 x 7 = 4,872
第三步:55,680 + 4,872 = 60,552
696 x 87 = 60,552

问:542x98是什么?让我们一步一步地想。

第一步:542 x 90 = 48,780
第二步:542 x 8 = 4,336
第三步:48,780 + 4,336 = 53,116
542 x 98 = 53,116

啊哈!它以正确的推理得出了答案。这仍然不是百分之百的准确,但我们通过改变提问方式,大大地提高了它的准确性。

我们刚才所做的被称为提示工程:创建提示的过程,将为我们的任务产生最佳结果。

现在,让我们深入了解提示工程的一些有用技术。

创作完美提示并获得准确结果的技术

让我们来探讨一些具体的提示格式和经验法则,这些格式和经验法则效果特别好,而且与手头的任务更加一致,还有一些在制作提示时要记住的一般准则。

1.选择正确的模式

虽然你可以将ChatGPT用于几乎所有的自然语言任务,但OpenAI提供的GPT-3模型对所产生的输出完成度有更多的灵活性和控制。我们不会在这里一一介绍,但这里有几个模型可供比较。

  1. text-davinci-003:GPT-3系列中能力最强的模型。给予更高质量的结果,更长的完成时间,并且在指令遵循方面更好。然而,这个模型需要更多的计算资源,所以它的每个请求的成本会更高,而且会比其他的慢。
  2. text-curie-001:能力很强,速度极快,成本比text-davinci-003 。 在语言翻译、总结和复杂分类任务上表现良好。
  3. text-ada-001:最快的和模型。不像其他模型那么复杂,但可以用一小部分的成本执行简单的任务。适合解析文本、寻找关键词和简单分类。
  4. code-davinci-002:适用于将自然语言翻译成代码。

2.调整温度设置

有几个设置你可以改变,以控制反应的行为。最重要的设置是温度。你可以在除ChatGPT之外的所有模型中调整这一设置。

您可能已经注意到,如果您多次提交完全相同的提示,那么每次请求的完成情况都会有所不同。这就是温度设置所控制的,这基本上是模型在进行预测时的自信程度。较低的温度将给出更准确和确定的输出,而较高的温度将提供更多样的反应。

对于输出明确的任务,如数据提取和问答,温度应该设置为0。我们上面讨论的数学问题的结果是明确的,得出答案的步骤也没有什么变化。所以我们将温度设置为0

另一方面,对于答案是开放式的或主观的任务,更高的温度可能更合适。

温度可以被认为是控制模型输出的随机性或多样性的一种方式。

3.具体性是关键

给出具体的指示,如答复的长度、格式、风格、背景、语气等,会产生更好的结果。

不够具体

写污染

✅ 给出详细的指示。

写一篇500字左右的关于污染的文章,重点阐述其对环境和人类健康的负面影响。使用正式的学术语气,应涉及各种形式的污染。以引言、正文和结论的格式组织文章,并在引言中包括一个明确的论文陈述。

你甚至可以要求模型提供如何更具体的提示:

我试图让和人工智能聊天机器人写一篇文章。你能不能重写以下提示,对其回答的长度、格式、风格、背景、语气等给出简短而具体的指示:

写关于污染的文章

4.促使模型解释它的推理

我们用来提高回答的准确性的技巧之一是加入**"让我们一步一步地思考 "这一神奇的字眼。**要求模型在得出最终答案之前作出解释,可以增加其最终答案准确和一致的机会。我给text-davinci-003 一个简单的数学问题来证明这个现象

❌ 没有推理,模型的反应是错误的答案。

一个杂耍者可以杂耍16个球。一半的球是高尔夫球,一半的高尔夫球是蓝色的。有多少个蓝色的高尔夫球?

8个蓝色的高尔夫球。

✅用逐步推理的方法得出正确答案。

一个变戏法的人可以变出16个球。一半的球是高尔夫球,一半的高尔夫球是蓝色的。有多少个蓝色的高尔夫球?让我们一步一步地思考:

  1. 总共有16个球。
  2. 一半的球是高尔夫球,所以有8个高尔夫球。
  3. 8个高尔夫球中的一半是蓝色的,所以有4个蓝色高尔夫球。

现在,让我们从ChatGPT问同样的问题。它可以提供正确的答案,因为它经过微调,可以对问题作出言简意赅的详细解释:

一个杂耍者可以杂耍16个球。一半的球是高尔夫球,一半的高尔夫球是蓝色的。有多少个蓝色的高尔夫球?

有16 / 2 = 8个高尔夫球。
有8 / 2 = 4个蓝色高尔夫球。

5.把指令放在开头,把指令和背景分开。

GPT-3模型有时可能难以将指令与上下文分开,因为它们没有被明确分开。将指令放在提示语的开头,并用""来分隔指令和提示语。

❌ 不太有效

用下面的文字来回答给定的问题。

{这里的文字}

{问题在此}。

比较有效

使用下面的文字来回答给定的问题。

文本:
"""
{这里的文本}
"""

问题:{这里的问题}

6.举例说明最终结果的格式。

提供几个例子说明最终结果的格式,可以得到更好的结果。这里有一个例子,将食谱中的基本成分提取为逗号分隔的列表:

✅提供几个例子。

从下面给出的食谱中提取基本成分。
Recipe:
"" "
1.)将烤箱预热到350°F(180°C)。在一个9英寸的圆形蛋糕盘上涂上油脂和面粉。
{...}
8.)蛋糕可以直接食用,也可以在上面涂上你喜欢的糖霜或釉料。享受吧!
"" "
成分:面粉、糖、泡打粉、小苏打、盐、牛奶、鸡蛋、黄油、香草精。

配方:
""
1.)在一个中号碗中,将面粉、糖、泡打粉和盐搅拌均匀。
{...}
8.)将煎饼温热后食用,可选择加黄油和枫糖浆。
""
材料
:面粉、糖、泡打粉、盐、鸡蛋、牛奶、黄油。

7.提高准确度的一些一般准则

我们已经讨论了一些具体的技术,以便从我们的模型中获得更好的结果。现在,这里有一些你在制作提示语时应该遵循的一般准则。

  • 确保你的提示没有拼写或语法错误,也没有不一致的格式化。
  • 为了提高输出的质量,产生许多完成度,并取其中最好的一个。
  • 如果一个提示没有给出预期的反应,试着转述提示。你甚至可以要求模型重新措辞提示,以便更好地遵循指令。
  • 将复杂的任务分解成更简单的任务,使模型容易理解。
  • 在试图解决一个具体的任务时,避免使用一般性的语句。例如,对于一个数学问题,不要问 "回答以下问题",而是问 "计算以下问题的答案"。

GPT-3在复杂推理任务中的失败

我们讨论的方法可以大大改善回答的质量,然而,它们并不完美。有一些任务对于这些类型的模型来说实在是太复杂了。例如,GPT-3不善于理解和记忆物体的空间关系和位置,这是一种被称为空间推理的技能。下面是一个模型未能正确回答的问题。(使用我们上面讨论的技巧,尝试得到正确答案。如果你成功了,请在下面留下评论)。

在一张桌子的表面上,有四本书相互堆叠在一起。书的标签是A、B、C和D。书A在书D的上面,它们互相接触。书本B接触到了桌子的表面。书本C接触到了两本书。现在发生了以下一系列事件:
1.) 杰克从上面拿了一本书。
2.) 安娜从上面拿了一本书。安娜从上面拿了一本书。
3.)玛丽从上面拿了一本书。
4.)杰克把他的书放在书堆的上面。
5.)安娜把她的书放在这堆书的上面。

现在,在事件发生的顺序之后,给出书的顺序,从下到上。

最后的思考

当涉及到我们如何与GPT-3这样的大型语言模型互动时,提示工程是一个重要方面。虽然我只介绍了提示工程的基本内容,但还有很多技术可以对提示进行微调,以获得最佳结果。

提示工程类似于使用谷歌搜索,因为查询的质量会大大影响我们得到的搜索结果。

虽然这些技术可能有点模糊和不可靠,但有许多努力使制作最佳提示语的过程系统化。

由于像GPT-3这样的大型语言模型将被整合到许多即将推出的产品中,在不久的将来,创建有效提示的能力将成为一项重要的技能。