GPT3 探索指南(一)

时间:2024-05-02 07:09:44

原文:zh.annas-archive.org/md5/e19ec4b9c1d08c12abd2983dace7ff20

译者:飞龙

协议:CC BY-NC-SA 4.0

序言

如果这本书是由人工智能写的呢?你会阅读吗?我希望会,因为其中的部分确实是由人工智能写的。是的,GPT-3 被用来创建这本书的部分内容。我知道这有点元,一本关于 GPT-3 的书被 GPT-3 写的。但创造内容是 GPT-3 的许多伟大用途之一。那又何妨呢?此外,对我来说,内容生成是最引起我的兴趣的用例之一。我想知道是否可以在我正在开发的产品中使用 GPT-3 自动化生成技术学习材料。

你可能也有自己对 GPT-3 感兴趣的特定原因。也许是出于求知欲。或者可能是因为你有一个你认为 GPT-3 可以实现的想法。你可能已经在网上看过 GPT-3 生成内容、编写代码、写诗或其他东西的演示,并且想知道 GPT-3 是否可以用于你的想法。如果是这样,那么这本书就是专门为你写的。

我写这本书的目标是为了提供一个实用的资源,帮助你尽快入门 GPT-3,而无需任何必要的技术背景。话虽如此,在我写这些文字的时候,GPT-3 仍然处于私有测试阶段。因此,每个人都在不断学习。但我确切学到的一件事是,GPT-3 的可能应用是广泛的,而且没有办法知道所有可能性,更不用说把它写进一本书中了。所以,我希望这本书使入门变得容易,但我也希望它只是你探索 探索 GPT-3 旅程的开始。

这本书适合谁

这本书适合任何对自然语言处理或学习 GPT-3 感兴趣的人,无论其是否具有技术背景。想要了解自然语言处理、人工智能和 GPT-3 的开发人员、产品经理、企业家和爱好者都会发现这本书很有用。只需基本的计算机技能就能充分利用这本书。虽然有现代编程语言的经验会有所帮助,但并非必需。提供的代码示例适合初学者,即使你是编写代码的新手也很容易理解。

这本书涵盖了哪些内容

第一章介绍 GPT-3 和 OpenAI API,是对 GPT-3 和 OpenAI API 的高级介绍。

第二章GPT-3 的应用和用例,概述了核心 GPT-3 的用例:文本生成、分类和语义搜索。

第三章使用 OpenAI Playground,是对 OpenAI Playground 和开发者门户的半深入介绍。

第四章使用 Postman 调用 OpenAI API,是介绍如何使用 Postman 调用 OpenAI API 的简介。

第五章在代码中调用 OpenAI API,是介绍如何使用 Node.js/JavaScript 和 Python 调用 OpenAI API 的简介。

第六章内容过滤,解释了如何实现内容过滤。

第七章生成和转换文本,包含了用于生成和转换文本的代码和提示示例。

第八章文本分类和分类,更详细地讨论了文本分类和 OpenAI API 分类端点。

第九章构建基于 GPT-3 的问答应用,讲解了如何构建一个功能齐全的基于 GPT-3 的网络知识库。

第十章使用 OpenAI 应用上线,讲解了 OpenAI 应用审查和批准流程,并讨论了为审查做准备的事项。

要充分利用本书

本书中的所有代码示例都是使用来自replit.com的基于 Web 的集成开发环境IDE)编写的。一个免费的 replit.com 账户就足以跟随示例。要使用 replit.com,只需一个现代的 web 浏览器和一个 replit.com 账户即可。该代码还在 macOS 上使用 Visual Studio Code 进行了测试,尽管它应该可以在任何代码编辑器和适当配置的操作系统上正常工作。代码示例提供了 Node.js/JavaScript 和 Python 两种版本。对于 Node.js,使用的是版本 12.16.1,对于 Python,使用的是版本 3.8.2。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本书中的所有代码示例都需要 OpenAI API 密钥和对 OpenAI API 的访问权限。您可以通过访问 https://openai.com/api 来申请对 OpenAI API 的访问权限。

如果您使用本书的数字版,我们建议您自己打字输入代码或通过 GitHub 存储库(链接在下一部分中可用)访问代码。这样做可以帮助您避免与复制和粘贴代码相关的潜在错误

下载彩色图片

我们还提供了一个 PDF 文件,其中包含了本书中使用的屏幕截图/图表的彩色图片。您可以在这里下载:https://static.packt-cdn.com/downloads/9781800563193_ColorImages.pdf。

使用的约定

本书中使用了许多文本约定。

文本中的代码:表示文本中的代码词,数据库表名,文件夹名,文件名,文件扩展名,路径名,虚拟 URL,用户输入和 Twitter 句柄。这里有一个例子:“然而,假设您不希望完成生成对话的人的一面,您希望使用标签AI:而不是Assistant:?”

代码块如下所示:

English: I do not speak Spanish Spanish: 

粗体:表示一个新术语,一个重要词,或屏幕上看到的词。例如,菜单或对话框中的单词在文本中出现如下所示。这里有一个例子:“每次单击 提交 按钮时”。

提示或重要说明

看起来像这样。

联系方式

我们始终欢迎读者的反馈。

customercare@packtpub.com

勘误: 尽管我们已尽一切努力确保内容的准确性,但错误确实会发生。如果您在本书中发现了错误,我们将不胜感激您向我们报告。请访问 www.packtpub.com/support/errata,选择您的书,点击勘误提交表单链接,并输入详细信息。

copyright@packt.com,并附上材料的链接。

如果您有兴趣成为作者:如果您在某个主题上有专业知识,并且对编写或贡献一本书感兴趣,请访问 authors.packtpub.com。

评论

请留下您的评论。一旦您阅读并使用了这本书,为什么不在您购买它的网站上留下一条评论呢?潜在的读者可以看到并使用您的公正意见来做出购买决定,我们在 Packt 可以了解您对我们产品的看法,而我们的作者可以看到您对他们的书的反馈。谢谢!

欲了解更多关于 Packt 的信息,请访问 packt.com。

第一部分:理解 GPT-3 和 OpenAI API

本部分的目标是向您提供关于 GPT-3 和 OpenAI API 的高层介绍,以及展示开始使用起来是多么容易。目标是通过有趣的例子吸引您,这些例子快速而简单地实现。

本部分包括以下章节:

  • 第一章介绍 GPT-3 和 OpenAI API

  • 第二章GPT-3 应用与使用案例

第一章:介绍 GPT-3 和 OpenAI API

关于生成式预训练变换器第 3 版GPT-3)的讨论始于 2020 年 6 月 11 日,由领先的人工智能AI)研究实验室 OpenAI 发布的一篇博客文章。该帖子以以下方式开始:

我们正在发布一个用于访问 OpenAI 开发的新 AI 模型的 API。与大多数专为一个用例设计的 AI 系统不同,该 API 今天提供了一个通用的“文本输入,文本输出”接口,允许用户在几乎任何英语语言任务上尝试它。

早期测试人员的在线演示很快就出现了——有些看起来太好以至于难以置信。GPT-3 正在撰写文章,写诗,回答问题,以栩栩如生的方式进行聊天,将文本从一种语言翻译为另一种语言,总结复杂的文件,甚至编写代码。这些演示令人印象深刻——这是我们以前从未见过的一般用途人工智能系统所做的事情——但同样令人印象深刻的是,许多演示是由在人工智能和机器学习ML)方面具有有限或没有正式背景的人创造的。GPT-3 提高了标准,不仅在技术方面,还在人工智能可访问性方面。

GPT-3 是一个通用的语言处理 AI 模型,几乎任何人都可以在几分钟内理解并开始使用。您不需要计算机科学的哲学博士PhD)——甚至不需要知道如何编写代码。实际上,您开始所需的一切都在这本书中。在本章中,我们将从以下主题开始:

  • GPT-3 简介

  • 使 NLP 大众化

  • 理解提示、完成和标记

  • 介绍达芬奇、巴贝奇、居里和艾达

  • 理解 GPT-3 的风险

技术要求

本章需要您访问OpenAI 应用程序编程接口API)。您可以通过访问openapi.com注册 API 访问权限。

GPT-3 简介

简言之,GPT-3 是一个语言模型:一个计算一系列单词的概率分布的统计模型。换句话说,GPT-3 是一个系统,当输入文本时,猜测接下来的文本是什么。

现在,在我们更深入地了解 GPT-3 是什么之前,让我们对自然语言处理NLP)进行简要介绍(或复习)。

简化自然语言处理(NLP)

NLP 是人工智能的一个分支,它专注于利用自然人类语言进行各种计算应用。NLP 是一个广泛的类别,涵盖了许多不同类型的语言处理任务,包括情感分析、语音识别、机器翻译、文本生成和文本摘要等。

在自然语言处理中,语言模型用于计算一系列单词的概率分布。语言模型的重要性在于人类语言的复杂和微妙的特性。例如,pay in fullpainfultee timeteatime 听起来相似,但意思完全不同。she’s on fire 这样的表达可能是字面的,也可能是比喻的;而 biglarge 这样的词在某些情况下可以互换使用,但在其他情况下不能——例如,用 big 来指代一个年长的兄弟就不会有使用 large 的含义。因此,语言模型用于处理这种复杂性,但这说起来容易做起来难。

尽管人们对词义和适当的使用似乎很容易理解,但自然语言处理任务对机器来说可能是具有挑战性的。这对于更复杂的语言处理任务尤为真实,例如识别讽刺或挖苦——甚至有时连人类本身都会感到困难。

如今,对于特定的自然语言处理任务来说,最好的技术方法取决于任务本身。因此,大多数表现最佳的 最先进SOTA)自然语言处理系统都是针对单一目的或狭窄范围任务进行了细化调整的专门系统。然而,理想情况下,一个单一系统应该能够成功地处理任何自然语言处理任务。这就是 GPT-3 的目标:提供一个通用的自然语言处理系统。因此,尽管今天表现最佳的自然语言处理系统往往是专门的、针对特定任务定制的系统,GPT-3 在多个常见自然语言处理任务中达到了 SOTA 表现,展现了未来通用自然语言处理系统能够为任何自然语言处理任务提供 SOTA 表现的潜力。

GPT-3 到底是什么?

尽管 GPT-3 是一种通用的自然语言处理系统,但它实际上只做了一件事:基于提供的文本预测接下来会出现什么。但事实证明,通过合适的架构和足够的数据,这“一件事”能够处理惊人的一系列语言处理任务。

GPT-3 是来自 OpenAI 的 GPT 语言模型的第三个版本。因此,尽管它在 2020 年夏天开始变得流行,但 GPT 的第一个版本是在 2 年前宣布的,接下来的版本 GPT-2 是在 2019 年 2 月宣布的。但即使 GPT-3 是第三个版本,系统的设计和架构与 GPT-2 没有太大的变化。然而,有一个很大的区别,那就是用于训练的数据集的大小。

GPT-3 是使用从互联网、书籍和其他来源获取的文本组成的海量数据集进行训练的,包含大约 570 亿个单词和 1750 亿个参数。这比 GPT-2 和其他最大规模的语言模型大 10 倍。为了让模型的大小有所了解,一个普通人一生中可能会读、写、说和听到超过 10 亿个单词。因此,GPT-3 在估计处理的单词数量上约是大多数人的 57 倍。

GPT-3 语言模型庞大而庞大,因此它不是你可以在笔记本电脑上下载和摸索的东西。但即使你可以(事实上你不可以因为它无法下载),每次构建模型都需要数百万美元的计算资源。如果你必须依靠自己的计算资源来使用它,这将使 GPT-3 对大多数小公司和几乎所有个人都不可及。幸运的是,你不必这样做。OpenAI 通过一个既经济又易于使用的 API 提供 GPT-3,所以,任何人都可以使用一些有史以来最先进的人工智能!

使自然语言处理*化

任何人都可以通过访问 OpenAI API 使用 GPT-3。API 是一个通用的文本输入,文本输出接口,几乎可以用于任何语言任务。要使用 API,你只需输入文本,然后得到一个文本回复。任务可能是情感分析、写一篇文章、回答一个问题或总结一篇文档。对于 API 来说,这并不重要 —— 它都是以相同的方式完成的,这使得即使对非程序员来说,使用 API 也变得非常容易。

你传入的文本被称为提示,返回的文本称为完成。提示被 GPT-3 用于确定如何最好地完成任务。在最简单的情况下,提示可以提供一些词语作为开始。例如,如果提示是 如果今天是星期一,明天是,GPT-3 可能会回复 星期二,以及一些额外的文本,例如 如果今天是星期二,明天是星期三,依此类推。这意味着你从 GPT-3 中得到的取决于你发送给它的内容。

你可能会猜到,完成的质量在很大程度上取决于提示。GPT-3 使用提示中的所有文本来帮助生成最相关的完成。每个词语以及提示的结构方式都有助于改善语言模型的预测结果。因此,理解如何编写和测试提示是解锁 GPT-3 真正潜力的关键

理解提示、完成和标记

实际上,任何文本都可以用作提示 —— 输入一些文本,得到一些文本返回。然而,尽管看到 GPT-3 如何处理随机字符串可能很有趣,但真正的力量来自于理解如何编写有效的提示。

提示

提示是让 GPT-3 做你想要的事情的方式。这就像编程,但用的是简单的英语。所以,你必须知道自己想要实现什么,但不是编写代码,而是使用单词和纯文本。

当你编写提示时,要记住的主要事情是,GPT-3 正试图弄清楚接下来应该出现的文本,因此包括诸如说明和示例等内容提供了上下文,帮助模型找出最佳完成的方式。此外,质量很重要 —— 例如,拼写、不清晰的文本以及提供的示例数量都会影响完成的质量。

另一个关键考虑因素是提示大小。虽然提示可以是任何文本,但提示和生成的完成必须少于 2048 个令牌。我们将稍后在本章中讨论令牌,但大致相当于 1500 个单词。

因此,提示文本可以是任何文本,没有像编写代码时必须遵循的硬性规则。但是,有一些指导原则可以帮助您在获得最佳结果方面构建提示文本的结构。

不同类型的提示

我们将在本书中深入探讨提示写作,但让我们从不同的提示类型开始。以下是概述:

  • 零次提示

  • 单次提示

  • 少数提示

零次提示

一个Subject::

Write an email to my friend Jay from me Steve thanking him for covering my shift this past Friday. Tell him to let me know if I can ever return the favor.
Subject:

以下屏幕截图来自一个名为Playground的基于 Web 的测试工具。我们将在 Chapter 2, GPT-3 Applications and Use Cases,Chapter 3, Working with the OpenAI Playground 中更多地讨论 Playground,但现在我们将其用作显示由于前面的提示而生成的完成的演示。请注意,原始提示文本为粗体,完成显示为普通文本:

![Figure 1.1 – Zero-shot prompt example

](img / B16854_01_001.jpg)

图 1.1-零次提示示例

因此,零次提示只是一些词或短描述,没有任何示例的任务。有时候,这就是 GPT-3 完成任务所需要的全部。其他时候,您可能需要包括一个或多个示例。提供单个示例的提示称为单次提示。

单次提示

单次提示提供一个示例,GPT-3 可以利用它来学习如何最好地完成任务。以下是一个提供任务描述(第一行)和单个示例(第二行)的单次提示的示例:

A list of actors in the movie Star Wars 
1\. Mark Hamill: Luke Skywalker

仅凭描述和一个示例,GPT-3 就会了解任务是什么以及应该完成任务。在此示例中,任务是创建《星球大战》电影演员的列表。以下屏幕截图显示了此提示生成的完成:

![Figure 1.2 – One-shot prompt example

](img / B16854_01_002.jpg)

图 1.2-单次提示示例

单次提示适用于列表和通常理解的模式。但有时您需要多个例子。在这种情况下,您将使用几次提示。

少数提示

几次提示提供多个例子-通常为 10 到 100 个。多个示例可用于显示 GPT-3 应该继续完成的模式。少数提示和更多示例可能会增加完成的质量,因为提示为 GPT-3 提供了更多的学习机会。

以下是生成模拟对话的几次提示的示例。请注意,这些示例提供了来回对话,提供了可能在对话中说的内容:

This is a conversation between Steve, the author of the book Exploring GPT-3 and someone who is reading the book.
Reader: Why did you decide to write the book?
Steve: Because I'm super fascinated by GPT-3 and emerging technology in general.
Reader: What will I learn from this book?
Steve: The book provides an introduction to GPT-3 from OpenAI. You'll learn what GPT-3 is and how to get started using it.
Reader: Do I need to be a coder to follow along?
Steve: No. Even if you've never written a line of code before, you'll be able to follow along just fine.
Reader: 

在下面的截图中,您可以看到 GPT-3 继续了在提示中提供的示例中启动的模拟对话:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1.3 – 少量示例提示

现在您了解了不同的提示类型,让我们来看一些提示示例。

提示示例

OpenAI API 可以处理各种任务。可能性范围从生成原始故事到执行复杂的文本分析,以及其中的所有内容。为了熟悉 GPT-3 可以执行的任务类型,OpenAI 提供了许多提示示例。您可以在 Playground 和 OpenAI 文档中找到示例提示。

在 Playground 中,这些示例被称为预设。再次强调,我们将在第三章与 OpenAI Playground 一起工作中详细介绍 Playground,但下面的截图显示了一些可用的预设:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1.4 – 预设

示例提示也可以在 OpenAI 文档中找到。OpenAI 文档非常出色,包含许多优秀的提示示例,并提供了链接以在 Playground 中打开和测试它们。下面的截图显示了来自 OpenAI 文档的示例提示。请注意提示示例下方的在 Playground 中打开此示例链接。您可以使用该链接在 Playground 中打开提示:

图 1.5 – OpenAI 文档提供提示示例

图 1.5 – OpenAI 文档提供提示示例

现在您了解了提示,让我们谈谈 GPT-3 如何使用它们来生成完成。

完成

再次强调,完成指的是生成并返回的文本,作为提供的提示/输入的结果。您还会记得,GPT-3 并没有专门训练来执行任何一种类型的自然语言处理任务——它是一个通用的语言处理系统。然而,GPT-3 可以通过提示来展示如何完成给定任务。这称为元学习。

元学习

大多数自然语言处理系统,在训练基础的机器学习模型时,使用的数据是提供的。所以,要改进给定任务的结果,必须更新底层训练,并构建新版本的模型。GPT-3 的工作方式不同,因为它没有针对任何特定任务进行训练。相反,它被设计为识别提示文本中的模式,并使用底层的通用模型继续模式。这种方法被称为元学习,因为提示被用来教导 GPT-3 如何生成最佳完成,而无需重新训练。因此,不同的提示类型(零次、一次和少次)可以用于为不同类型的任务编程 GPT-3,你可以在提示中提供大量指令——最多 2,048 个令牌。好的——现在是谈论令牌的好时机。

令牌

当提示被发送到 GPT-3 时,它会被分解为令牌。令牌是单词或更常见的单词部分的数值表示。数字被用作令牌而不是单词或句子,因为它们可以更有效地处理。这使得 GPT-3 能够处理相对较大的文本量。尽管如此,正如你所学到的,仍然存在 2,048 个令牌的限制(约~1,500 个单词),用于组合提示和生成的完成结果。

你可以通过估算提示和生成的完成结果中将使用的令牌数量来保持在令牌限制以下。平均而言,对于英文单词,每四个字符代表一个令牌。所以,只需将提示中的字符数加上响应长度,然后除以四即可。这将给你一个大致的所需令牌数量。如果你想要了解完成一系列任务所需的令牌数量,这非常有帮助。

另一种获取令牌计数的方法是使用 Playground 中的令牌计数指示器。这位于大型文本输入框的正下方,位于右下角。以下屏幕截图中放大的区域显示了令牌计数。如果你将鼠标悬停在数字上,你还将看到完成后的总计数。对于我们的示例,提示Do or do not. There is no try.—来自尤达大师的智慧—使用了10个令牌,完成后的总计数为74个令牌:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1.6 – 令牌计数

虽然理解令牌对于保持在 2,048 个令牌限制以下很重要,但它们也很重要,因为令牌是 OpenAI 用作使用费基础的东西。你的账户中可以获得整体令牌使用情况报告,网址为beta.openai.com/account/usage。下面的屏幕截图显示了一个示例使用报告。我们将在第三章使用 OpenAI Playground中进一步讨论这个:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1.7 – 使用统计

除了令牌使用外,影响使用 GPT-3 的成本的另一件事是你选择用来处理提示的引擎。引擎是指将要使用的语言模型。引擎之间的主要区别在于相关模型的大小。较大的模型可以完成更复杂的任务,但较小的模型更高效。因此,根据任务的复杂性,你可以通过使用较小的模型显着降低成本。以下屏幕截图显示了发布时的模型定价。正如你所见,成本差异可能很大:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1.8 – 模型定价

因此,每个引擎或模型的成本都不同,但你需要的那个取决于你正在执行的任务。接下来我们来看看不同的引擎选项。

介绍达芬奇、巴贝奇、居里和艾达

用于训练 GPT-3 的庞大数据集是其如此强大的主要原因。然而,当有必要时,更大并不总是更好——更多的能力会带来成本。出于这些原因,OpenAI 提供了多个可供选择的模型。今天有四个主要模型可用,以及一个用于内容过滤和指令模型的模型。

可用的模型或引擎(也称为)分别命名为达芬奇巴贝奇居里艾达。在这四个中,达芬奇是最大且最强大的。 达芬奇可以执行任何其他引擎可以执行的任务。 巴贝奇是下一个最强大的引擎,可以做任何居里艾达可以做的事情。 艾达是最不强大但性能最佳且成本最低的引擎。

当你刚开始并且在初步测试新提示时,通常会想从达芬奇开始,然后尝试艾达巴贝奇居里,看看它们中的哪一个可以更快或更具成本效益地完成任务。以下是每个引擎的概述以及可能最适合每个引擎的任务类型。但是,请记住,你需要测试。尽管较小的引擎可能没有受过太多数据的训练,但它们仍然是通用模型。

达芬奇

达芬奇是最强大的模型,可以做任何其他模型能做的事情,而且更多——通常只需更少的指令。 达芬奇能够解决逻辑问题,确定因果关系,理解文本意图,生成创意内容,解释人物动机,并处理复杂的总结任务。

居里

居里试图平衡力量和速度。它可以做任何艾达巴贝奇可以做的事情,但它还能处理更复杂的分类任务和更细致的任务,如总结、情感分析、聊天机器人应用和问答。

巴贝奇

BabbageAda更有能力,但并不那么高效。它可以执行与Ada相同的所有任务,但还可以处理更复杂的分类任务,并且非常适合语义搜索任务,以确定文档与搜索查询匹配程度。

Ada

Ada通常是最快的模型,成本最低。它最适合于较少细微差别的任务,例如解析文本、重新格式化文本和更简单的分类任务。您提供给Ada的上下文越多,它的表现就越好。

内容过滤模型

为了防止不当补全,OpenAI 提供了一个内容过滤模型,该模型经过微调,以识别可能含有冒犯性或伤人的言语。

指导模型

这些模型是在DavinciCurie模型的基础上构建的。指导模型被调整过,以使得更容易告诉 API 想让它做什么。清晰的指示通常比相关的核心模型产生更好的结果。

时间的一瞥

关于所有引擎的最后一点要牢记的是,它们都是一个时间的一瞥,也就是说用于训练它们的数据截止于构建模型的日期。因此,GPT-3 并非使用最新的甚至最新的数据——它可能是几周甚至几个月之前的数据。OpenAI 打算在未来增加更多的持续训练,但今天这是一个需要考虑的因素。

所有的 GPT-3 模型都非常强大,能够生成与人类编写的文本几乎无法区分的文本。这对各种潜在应用都具有巨大的潜力。在大多数情况下,这是一件好事。但是,并非所有潜在的用例都是好事。

了解 GPT-3 风险

GPT-3 是一项了不起的技术,具有许多实际和有价值的潜在应用。但通常情况下,强大技术的潜力就意味着风险。对 GPT-3 而言,其中一些风险包括不当的结果和潜在的恶意用途。

不当或冒犯性的结果

GPT-3 文本生成得如此出色,以至于看起来像是它意识到自己在说什么。但其实不是这样的。它是一个具有出色语言模型的 AI 系统-绝对不会有意识,所以从来不会在说出伤人或不当的话语。

但是,理解 GPT-3 有时会生成冒犯性文本,并考虑在使用 GPT 或向他人公开 GPT-3 结果时需要理解这一点。特别是对于可能被儿童看到的结果。我们将在第六章中更详细地讨论这一点,内容过滤

恶意使用的潜力

想象一下,GPT-3 可能被用于恶意或有害用途并不难。OpenAI 甚至描述了 GPT-3 可能被“武器化”用于误导性宣传或制造虚假产品评论。但 OpenAI 的宣称使命是“确保人工通用智能造福于人类”,因此,追求该使命包括采取负责任的措施,防止他们的 AI 被用于错误的目的。因此,OpenAI 为所有使用 GPT-3 或 OpenAI API 的应用程序实施了一个应用批准流程。

但作为应用程序开发人员,我们也需要考虑这一点。当我们构建使用 GPT-3 的应用程序时,我们需要考虑应用程序可能被用于错误的目的,并采取必要的措施来防止它。我们将在第十章中更详细地讨论这个问题,OpenAI 动力应用的实时运行

摘要

在本章中,您了解到 GPT-3 是一个用于处理几乎任何语言处理任务的通用语言模型。您了解了 GPT-3 的高级工作原理,以及关键术语和概念。我们介绍了可用的模型,并讨论了所有 GPT-3 应用程序必须经过批准流程才能防止潜在的不适当或有害结果。

在接下来的章节中,我们将讨论使用 GPT-3 不同的方式,并查看特定的 GPT-3 用例示例。

第二章:GPT-3 的应用和用例

GPT-3 被设计为通用语言处理模型,这意味着它并未专门针对任何一种语言处理任务进行训练。因此,可能的应用包括几乎任何您能想象到的自然语言处理任务,以及可能还有一些尚未被想象到的任务。新的 GPT-3 用例不断被发现,这对很多用户来说是其魅力的一大部分。当然,它在某些任务上表现更好,但仍然有数百种可能的用途。在本章中,我们将分解一些通用用例,并看看如何开始测试自己的提示。

本章的主题如下:

  • 理解通用 GPT-3 用例

  • 介绍游乐场

  • 处理文本生成和分类任务

  • 理解语义搜索

技术要求

本章需要您访问 OpenAI API。您可以通过访问openapi.com注册 API 访问权限。

理解通用 GPT-3 用例

在上一章中,您了解到 OpenAI API 是一个文本输入,文本输出接口。因此,它总是对文本输入(称为提示)返回一个文本响应(称为完成)。完成可能是生成新文本,分类文本,或为语义搜索提供结果。GPT-3 的通用性意味着它可以用于几乎任何语言处理任务。为了让我们集中精力,我们将看一下以下常见用例:文本生成,分类和语义搜索。

  • 文本生成:文本生成任务是创建新的原创文本内容的任务。例如包括文章写作和聊天机器人。

  • 分类:分类任务标记或分类文本。分类任务的例子包括情感分析和内容过滤。

  • 语义搜索:语义搜索任务将查询与语义相关的文档进行匹配。例如,查询可能是一个问题,会匹配一个或多个提供答案的文档。

为了说明不同的用例,我们将使用 OpenAI Playground。因此,在我们深入研究不同的示例用例之前,让我们先熟悉一下游乐场。

介绍游乐场

要开始使用 GPT-3,OpenAI 提供了游乐场。游乐场是一个基于 Web 的工具,它可以方便地测试提示,并熟悉 API 的工作原理。几乎你可以通过调用 API 来做的每件事情(我们稍后将更详细地讨论),你也可以在游乐场中完成。最重要的是,通过游乐场,你可以开始使用 GPT-3 而不需要编写一行代码-你只需提供一个用简单英语编写的文本输入(提示)。

开始使用游乐场

要访问游乐场,您需要登录openai.com。在验证登录后,您将能够从主菜单中导航到游乐场。

游乐场非常简单易用。主要由一个大文本输入组成。您只需将文本输入到大文本输入框中,然后单击提交按钮即可开始测试 GPT-3。

单击提交按钮后,您将看到原始输入文本之后添加了额外的文本 – 这是由 GPT-3 生成的完成文本。

每次单击提交按钮后,GPT-3 将在文本输入框中附加一个附加的完成。附加的完成使用您的原始文本以及先前的完成作为下一个完成的提示。

以下屏幕截图显示了具有初始提示文本的游乐场:如果今天是星期一,明天就是。您会注意到原始提示文本以粗体显示,而完成文本则以普通文本显示。在此示例中,单击提交按钮多次以说明每个完成是如何在上一个完成的基础上构建的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2.1 – 游乐场窗口

除了用于提示和完成文本的大文本输入外,游乐场还允许您指定各种 API 设置,这些设置可以在 GPT-3 处理提示时提供一些控制。我们稍后将更详细地讨论这些设置,但是如果您查看图 2.1中的屏幕截图,您将看到一个响应长度设置。这是将返回的响应的长度。因此,每次单击提交按钮时,将向文本框添加一个新的具有该长度的响应。

再次,我们稍后将更详细地介绍所有设置。目前,这是每个设置所做的快速介绍:

  • 引擎:将要使用的语言模型

  • 响应长度:包含在完成中的文本量

  • 温度:控制结果的随机性

  • Top P:用于控制随机性的温度的替代品

  • 频率惩罚:减少模型重复同一行的可能性

  • 存在惩罚:增加模型谈论新主题的可能性

  • 最佳选择:仅返回n个完成中的最佳一个

  • 停止序列:用于结束完成的一系列字符

  • 注入起始文本:将包含在提示之前的文本

  • 注入重新启动文本:将包含在完成后的文本

  • 显示概率:显示完成中每个单词/标记的权重

熟悉游乐场就是开始使用 GPT-3 所需的一切。从那里,您可以开始尝试如何使用提示来编程GPT-3 来处理不同类型的语言处理任务,例如文本生成和分类任务。

现在我们已经看到了如何开始使用游乐场,让我们再学习一些关于文本生成和分类任务的知识。

处理文本生成和分类任务

文本生成和文本分类是自然语言处理任务的两个常见类别。每个类别都涵盖了许多 GPT-3 处理得非常出色的潜在用例。让我们看看其中一些,从文本生成用例开始。

文本生成

关于 GPT-3 可以做的所有事情中,文本生成是它的超能力。文本生成有很多潜在的用例,所以我们将进一步将文本生成分为三个子主题:生成文本、总结文本和转换文本。

生成文本

GPT-3 能够生成通常与人工书写的文本难以区分的原始文本内容。这可以用于各种应用,从创造网页内容到头脑风暴、对话应用、诗歌、歌词创作、写作编码和创建数据列表。让我们看一些例子。

内容创建

内容创建是 GPT-3 所能做的最酷的事情之一。有了正确的提示,GPT-3 可以创建文章、博客文章或社交媒体内容。下面的截图显示了一个提示的结果,引导 GPT-3 创建首次购房者的建议清单。然而,这种通用方法可以用于创建几乎任何主题的内容:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2.2 – 文本生成示例 – 首次购房者的建议

再次,你可以使用 GPT-3 来创建几乎任何主题的列表,因此有很多可能性。另一个很好的示例用例是创意生成。

创意生成

GPT-3 还可以是头脑风暴的一个好工具。以下提示和随后的截图显示了 GPT-3 被用于生成 3D 打印项目创意的制造者日活动。当然,这也可以是几乎任何事情的想法清单:

Maker day 3D printer project ideas 
1\. GoPro Mount A mount for a GoPro camera that mounts the camera on a mountain bike 
2.

结果显示在以下截图中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2.3 – 文本生成示例 – 3D 打印项目创意

图 2.3中的粗体文本是提供的提示,常规文本是由 GPT-3 生成的。很酷,对吧?这里还有另一个很酷的例子——对话应用。

对话应用

对话应用也是 GPT-3 的一个潜在用例,例如在聊天机器人、IVR 和语音助手中。下面的文本可以用来提示 GPT-3 模拟 AI 支持助手与客户之间的对话:

The following is a conversation with a customer support AI assistant. The assistant is helpful, creative, clever, and very friendly. 
Customer: Hello, can you help me?
AI: I can sure try. I'm an AI support assistant and I'm here to help!
Customer:

前面提示的结果显示在以下截图中。在这种情况下,GPT-3 生成了对话的两端,但在现实世界的应用中,对话的用户端会来自实际的客户:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2.4 – 文本生成示例 – 客服 AI 助手

您可以使用多种技术来帮助引导 GPT-3 如何作出回应。例如,在图 2.4中,您会注意到提示包括 The assistant is helpful creative, clever, and very friendly - 这指导了 GPT-3 关于回应的整体风格和语调。我们将在接下来的章节中更详细地讨论这一点,但现在,让我们继续并看看如何使用 GPT-3 生成列表。

列表生成

以下截图显示了 GPT-3 正在用于创建一份公司及其所属类别的列表。您可以从提示中看到,它正在继续之前开始的模式。所以,您可以用这种方式生成几乎任何列表:

The following is a list of companies and the categories they fall into
Cisco – Technology, Networking, Enterprise Software
AT&T – Telecom, Technology, Conglomerate
United Airlines – Aviation, Transportation
Nvidia – Technology, Computing, Semiconductors

上一个提示的结果如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2.5 – 文本生成示例 – 列表生成

图 2.5中,您会注意到不仅添加了更多公司到列表中,GPT-3 也能够准确地按行业对公司进行分类。记住,GPT-3 并不是从数据库中提取这些信息 - 而是生成它!但令人印象深刻的是,GPT-3 还能完成更复杂的生成任务。例如,在下一个示例中,我们将看看如何使用 GPT-3 生成一份测验。

测验生成

GPT-3 也能够生成测验。例如,下面的提示可以用于编制测试问题和可能的答案,以测试学生识别押韵单词的能力:

words that rhyme have similar sounding endings 
q: what rhymes with "cat" 
a: bat, hat, mat 
q: what rhymes with "small" 
a: tall, wall, call 
q: what rhymes with "pig" 
a: big, dig, fig 
q:

以下截图显示了 GT-3 从先前提示生成的完成状态:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2.6 – 文本生成示例 – 测验生成

内容创建,创意生成,对话应用程序,创建列表和生成测验只是可能文本生成用例中的一小部分。但文本生成不仅仅是关于创建新内容;还可以用于其他用例,如总结现有内容。

总结文本

除了创作新的原始文本,您还可以使用 GPT-3 创建文档摘要。有多种方法可以用于总结文本。您可以使用基本摘要、一句话总结、年级调整的摘要,或者通过从文档中提取关键点进行总结。让我们快速看一下每种方法。

基本摘要

创建摘要的最简单方法就是在想要总结的文本后加上tl;dr:。这将提示 GPT-3 总结前面的文本。在每种情况下这并不是一种可靠的总结方法,但对许多情况来说都很有效。例如,下面的提示提供了有关量子力学的文本,该文本是从 en.wikipedia.org/wiki/Quantum_mechanics 复制的:

Quantum mechanics is a fundamental theory in physics that provides a description of the physical properties of nature at the scale of atoms and subatomic particles.[2]:1.1 It is the foundation of all quantum physics including quantum chemistry, quantum field theory, quantum technology, and quantum information science. 
Classical physics, the description of physics that existed before the theory of relativity and quantum mechanics, describes many aspects of nature at an ordinary (macroscopic) scale, while quantum mechanics explains the aspects of nature at small (atomic and subatomic) scales, for which classical mechanics is insufficient. Most theories in classical physics can be derived from quantum mechanics as an approximation valid at large (macroscopic) scale.[3] 
tl;dr:

上一个提示的结果如图 2.7所示:

图 2.7 – 文本生成示例 – tl;dr:摘要

图 2.7 – 文本生成示例 – tl;dr:摘要

您会注意到原始文本由三段组成,但生成的摘要只有几句话。您还可以指示 GPT-3 将文本总结为一句话。

单句摘要

另一种总结文本的方法是在您想总结的文本后面添加 单句摘要:。这个与将 停止序列 设置为句号一起,将生成提供文本的单句摘要。

以下提示将创建一个单句摘要,摘自位于 beta.openai.com/terms-of-use 的 OpenAI 使用条款页面的段落:

(b) Ownership. As between you and OpenAI, we and our affiliates own all rights, title, and interest in and to the APIs, Content, and Developer Documentation and all associated elements, components, and executables. Subject to the foregoing, you own all rights, title, and interest in and to your Application. You have no right to distribute or allow access to the stand-alone APIs. Except as expressly provided in these Terms, neither party grants, nor shall the other party acquire, any right, title or interest (including any implied license) in or to any property of the first party or its affiliates under these Terms. All rights not expressly granted in these Terms are withheld. 
one-sentence summary:

以下截图显示了前述单句摘要提示的结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2.8 – 文本生成示例 – 单句摘要

根据您要总结的文本,一个单句可以非常有帮助,以简化内容。另一种简化内容的方法是用更简单的文字重新书写它。这可以通过年级摘要来完成。

年级摘要

要用适合某个年龄段的语言总结文本,您可以使用年级摘要。这可以通过在要总结的文本后面跟上类似以下示例提示中的最后一句话来完成。在这个例子中,我们使用了从 en.wikipedia.org/wiki/Milky_Way 复制的文本:

The Milky Way[a] is the galaxy that contains our Solar System, with the name describing the galaxy's appearance from Earth: a hazy band of light seen in the night sky formed from stars that cannot be individually distinguished by the naked eye. The term Milky Way is a translation of the Latin via lactea, from the Greek γαλακτικός κύκλος (galaktikos kýklos, "milky circle").[19][20][21] From Earth, the Milky Way appears as a band because its disk-shaped structure is viewed from within. Galileo Galilei first resolved the band of light into individual stars with his telescope in 1610\. Until the early 1920s, most astronomers thought that the Milky Way contained all the stars in the Universe.[22] Following the 1920 Great Debate between the astronomers Harlow Shapley and Heber Curtis,[23] observations by Edwin Hubble showed that the Milky Way is just one of many galaxies. The Milky Way is a barred spiral galaxy with an estimated visible diameter of 150-200,000 light-years,[9][24][25] an increase from traditional estimates of 100,000 light-years. Recent simulations suggest that a dark matter disk, also containing some visible stars, may extend up to a diameter of almost 2 million light-years.[11][12] 
I rephrased this in plain language that a third grader could understand.

在下面的截图中,您可以看到之前提示的结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2.9 – 文本生