简介

本文是为几乎没有提示工程或人工智能经验的人编写的。本文的目标受众是每个人,从非技术背景的商科学生,到非技术背景的成年人。我们将介绍人工智能的基本知识,以及为什么你应该关注提示工程。

如果你已经有提示工程或人工智能的基础知识,可以跳到下一篇文章。

什么是人工智能?

从编写目的的角度出发,人工智能(AI)是人们创造的一些“聪明的”的算法,使得机器能够像人类一样“思考”。这些算法可以写论文、解决数学问题,并创造艺术。该领域的最新进展已经十分先进,以至于人工智能可以写出令人信服的销售邮件新闻报道,甚至可以赢得艺术比赛

目前,人工智能正在颠覆许多行业,包括软件行业、新闻行业医疗卫生行业教育行业。你可能很快看到人工智能在你工作或教学中出现,即使现在还没有。但是,尽管人工智能非常有用,但它们需要人类来指导它们做什么。通常情况下,人工智能就像非常聪明的五岁小孩。它们可以做很多事情,但它们需要仔细的指导才能做得好。

能够正确指导人工智能是一项非常强大的技能。那么该如何跟它们沟通呢?本课程讨论的人工智能能够理解中文(和其他语言)。所以我们通常只需描述我们想要完成的任务。例如,我们可以告诉人工智能写一篇关于人工智能的优点的文章,它的如下回答。

我需要关心人工智能吗?

人工智能可以用来自动完成你现在正花费无数时间做的任务。我们在上面提到了几个例子,但你也可以考虑任何稍微重复的任务。这些任务包括写电子邮件,写报告,甚至是写代码。如果你向人工智能描述这项任务,它就有可能为你做这件事,或者至少给你一个开头。

我该如何开始?

本课程将教你如何与人工智能交流。阅读本章的其余部分,然后查看你感兴趣的其他章节。如果你特别想了解专业人士如何使用人工智能来实现自动化,那么应用提示部分是你所感兴趣的。看看专业人士是如何使用人工智能来实现其工作自动化的。你可以用一些人工智能网站,例如Open AI、其他人工智能工具等。

提示过程

在上一章中,我们讨论了人工智能以及人类如何指导 AI 执行任务。指导人工智能执行任务的过程称为提示过程。我们向 AI 提供一组指令(提示),然后它执行任务。提示可以简单到一个问题,也可以复杂到多个段落。

以下是两个提示的示例:

1) 文章摘要

假设您正在阅读一篇关于马斯克成立AI公司的的文章。您想快速了解文章的主要内容,因此您向 AI 展示您正在阅读的内容,并要求进行摘要,我们来看看AI是怎么回答的:

2) 数学问题求解

如果您有一个数学方程,想让语言模型来解决,您可以通过提问 "数学方程等于几" 来输入提示。

对于一个给定的问题,您的完整提示可能是这样的:

提示工程

如果我们

不是问865 * 594 等于几?,再次询问确保答案是正确的的?结果如下:

为什么会这样呢?第一次AI表示怀疑自己算错了,但第二次完全肯定没错,为什么要两次告诉 AI 对于正确答案有帮助?我们如何能在我们的任务中产生最佳结果的提示?尤其是最后一个问题,是提示工程领域以及本课程的重点。 请继续阅读,了解如何设计好的提示!

给出指令

最简单的提示方法之一就是直接给出指令,我们上一个部分中就已经看到了一个简单的指令(865 * 594 等于几? )。然而,现代人工智能可以遵循更复杂的指令。

以下是一个与ChatGPT交互式嵌入示例,如果您已经开始使用ChatGPT,请确保在您的浏览器中打开了,由于这是

一个交互式演示,您可以编辑文本并重新运行人工智能。

看到模型如何从指令中推断出结果真的很酷,例如,它知道将天启替换为[公司名],将数字替换为[电话号码],即使我们没有明确告诉它这样做。

角色提示

另一种提示技术是给 AI 分配一个角色,例如,您的提示可以以"你是一名医生"或"你是一名律师"开始,然后要求 AI 回答一些医学或法律问题。举个例子:

这是一个正确的答案,我们发现ChatGPT还按照先后顺序进行了计算。通过为 AI 分配一个角色,我们给它提供了一些上下文,这个上下文有助于 AI 更好地理解问题。通过更好地理解问题,AI 往往可以给出更好的答案。

多范例提示

另一个提示策略是多范例提示, 这种策略将为模型展示一些例子,从而更形象地描述你的需求。

在上图的例子中,我们尝试对用户反馈进行正面或反面的分类,我们向模型展示了 几 个例子,然后我们输入一个不在例子里面的反馈,模型发现头三个例子都被分类到 正面或者反面,进而通过这些信息将我们最后输入的反馈分类到了反面。

结构化的延伸

多范例提示的一个关键场景是当我们需要以特定的结构输出结果,但是又很难向模型进行描述的时候。为了理解这一点,让我们看这样一个例子:假设您需要通过分析当地的报纸文章来汇编附近城镇公民的姓名和职业。您希望模型读取每篇文章并以(姓名 [职业])格式输出姓名和职业列表。为了让模型做到这一点,您可以向它展示一些示例:

通过向模型展示正确的输出格式示例,它就能够为新的文章生成正确的输出结果。

不同类型的范例提示

单词提示在该场景下与提供例子(范例) 一致,除了多范例提示之外,还有另外两种不同的类型,它们之间唯一的区别就是你向模型展示了多少范例。

类型:

  • 无范例提示(0个例子): 不展示示例
  • 单范例提示(1个例子): 只展示 1 条示例
  • 多范例提示(多个例子): 展示 2 条及以上的示例

无范例提示

无范例提示是最基本的提示形式,它仅仅是向模型展示提示信息,没有提供任何示例,并要求其生成答案,因此,你到目前为止看到的所有指令和角色提示都属于无范例提示,无范例提示的另一个例子是:

2+2:

这是无范例提示,因为我们没有向模型展示任何完整的示例。

单范例提示

单范例提示是向模型展示一个示例。例如:

3+3: 6

2+2:

我们仅向模型展示了一个完整的示例(“3+3: 6”),因此这是一个单范例提示。

多范例提示

多范例提示是向模型展示2个或更多示例。例如:

3+3: 6

5+5: 10

2+2:

这是我们向模型展示了至少2个完整的示例(“3+3: 6”和“5+5: 10”)。通常,展示给模型的示例越多,输出结果就越好,因此在大多数情况下,多范例提示比另外两种提示更受欢迎。

结论

多范例提示是让模型生成准确且格式正确的输出的强大技术!

组合提示

正如我们在前面的教程中所看到的,面向模型的提示具有不同的格式和其复杂性。它们可以包括上下文、指令式的提示词和多个输入-输出的示例。然而,到目前为止,我们只研究了独立的提示类别,将这些不同的技巧组合起来可以产生更强大的提示。

以下是一个包含上下文、指令以及多示例提示的例子:

Twitter是一个社交媒体平台,用户可以发布称为“推文”的短消息。推文可以是积极的或消极的,我们希望能够将推文分类为积极或消极。以下是一些积极和消极推文的例子。请确保正确分类最后一个推文。

通过添加额外的上下文和示例,我们通常可以提高人工智能在不同任务上的表现。

规范化提示

我们现在已经涵盖了多种类型的提示,以及如何组合它们的方法。本篇教程将为您提供术语来解释不同类型的提示。虽然已经有方法来形式化提示工程中的术语1,但这个领域正在不断变化,因此我们将为您提供更充足的信息以便开始。

提示的组成部分

以下是在一个提示中将时常看到的一些组成部分:

  • 角色
  • 指令/任务
  • 问题
  • 上下文
  • 示例

在之前的教程中,我们已经涵盖了角色、指令和示例。问题则是简单的单一问题!(例如,“四川的省会是什么?”)。上下文则是与你想要模型作出的回应有关的任何信息,并不是每个提示都包含所有这些组成部分,并且当某些部分出现时,它们之间也没有标准的顺序。例如,以下两个提示,每个提示包含一个角色、一个说明和一个上下文,虽然描述顺序有差异,但是我们期望他们做的事情是一样的:

从结果来看,两个提示差不多,然而,第二个提示其实更好一点,原因是指令是提示的最后一部分,这时候语言模型将更倾向于按指令执行而不是进一步输出上下文相关的信息。

一份 “标准的” 提示

到目前为止,我们已经了解了几种不同格式的提示,现在,我们将定义一个“标准的”提示是什么样子的,我们将仅由问题组成的提示称为“标准”提示,同时,仅由问题组成且以 QA 格式存在的提示也是“标准”提示。

我们来看两个标准提示的例子:

标准提示

QA 格式的标准提示

多示例的标准提示

多示例的标准提示只是在标准提示的基础上附带多个需要解决的任务的范例。

两个多示例标准提示的例子:

多示例标准提示

QA 格式的多示例标准提示

多示例提示有助于上下文学习,这意味着模型无需更新参数就能够进行学习输出。