GPT-3 基于大型语言模型构建创新NLP产品 第二章 使用 OpenAI API

发布于 2023年08月20日

即使 GPT-3 是世界上最复杂和精湛的语言模型,它的能力对终端用户来说被抽象为一个简单的“文本输入,文本输出”接口。本章将帮助您开始使用这个界面,Playground,并涵盖 OpenAI API 的技术细节,因为这些细节揭示了真正的宝藏。

要完成本章,您需要在https://platform.openai.com/signup上注册一个 OpenAI 账户。如果您还没有这样做,请现在注册。

浏览 OpenAI Playground

您的 OpenAI 开发者帐户提供了对 API 和无限可能性的访问。我们将从 Playground 开始,这是一个基于网页的沙箱环境,允许您试验 API,了解其组件的工作方式,并访问开发人员文档和 OpenAI 社区。然后,我们将向您展示如何构建强大的提示,以生成您的应用程序所需的有利响应。最后,我们将通过四个 NLP 任务的 Playground 示例结束这一章:分类,命名实体识别(NER),摘要和文本生成。

在与 OpenAI 产品和合作伙伴副总裁 Peter Welinder 的采访中,我们询问了他对首次用户浏览 Playground 的关键建议。他告诉我们,他的建议取决于用户的角色。如果用户具有机器学习背景,Peter 鼓励他们“首先忘记他们已经知道的东西,然后直接去 Playground 并试图让 GPT-3 做你想让它做的事情,只需问它”。 他建议用户“想象 GPT-3 就像是一个朋友或同事,你正在请求他们做某件事情。你会如何描述你想要他们做的任务? 然后,看看 GPT-3 的反应。如果它没有按照你想要的方式反应,请修改你的指示。”

正如YouTuber 和 NLP 领域的知名人物 Bakz Awan 所说,“非技术人员会问:我是否需要一个学位来使用它? 我是否需要知道如何编写代码才能使用它? 绝对不需要。您可以使用 Playground。您不需要编写一行代码。您会马上得到结果。任何人都可以做到这一点。”

提示

在开始使用 Playground 之前,我们建议您阅读 OpenAI 的快速入门教程指南和开发人员文档。

以下是开始使用 Playground 的步骤:

  1. 登录https://openai.com并从主菜单导航到 Playground。

  2. 查看 Playground 屏幕(图2-1)。

  • 用数字 1 标记的大文本框是您提供文本输入(提示)的地方。

  • 标有数字 2 的框是参数设置面板,可用于调整参数。

  • 标有数字 3 的框允许您加载预设:示例提示和 Playground 设置。提供自己的训练提示或加载现有预设。

  1. 选择现有的问答预设(标记为 3)。这将自动加载训练提示以及相关的参数设置。单击“生成”按钮(图 2-1 中标记为 4)。

  2. API 处理您的输入并在同一文本框中提供响应(称为完成)。它还显示您使用的标记数量。标记是用于确定每个 API 调用定价的单词的数字表示;我们稍后在本章中将对此进行讨论。

  3. 在右下角您会看到令牌计数,左边有一个生成按钮(见图 2-2)。

  4. 每次单击“生成”按钮时,GPT-3 都会将文本输入字段中的提示和完成视为您的训练提示的一部分,并相应地生成下一个完成。

您可以在图 2-2 中看到以下提示:

 “I am a highly intelligent question answering bot. If you ask me a question that is rooted in truth, I will give you the answer. If you ask me a question that is nonsense, trickery, or has no clear answer, I will respond with "Unknown".

   Q: What is human life expectancy in the United States?

   A: Human life expectancy in the United States is 78 years.

   

   Q: Who was president of the United States in 1955?

   A: Dwight D. Eisenhower was president of the United States in 1955.

   

   Q: Which party did he belong to?

   A: He belonged to the Republican Party.

   

   Q: What is the square root of banana?

   A: Unknown

   

   Q: How does a telescope work?

   A: Telescopes use lenses or mirrors to focus light and make objects

   appear closer.”

   

   “Q: Where were the 1992 Olympics held?”

   “A: The 1992 Olympics were held in Barcelona, Spain.”

现在您已经理解了 Playground 的基本概述,我们来深入探讨提示工程和设计。

提示工程和设计

OpenAI API 从根本上改变了我们与 AI 模型交互的方式,剥离了层层编程语言和框架。特斯拉的 AI总监 Andrej Karpathy 开玩笑地说,GPT-3 一经推出,编程3.0的全部意义就在于提示设计(他在推特上发布的备忘录见图2-3)。训练提示与生成的完成之间存在直接关系。您提供的单词的结构和排列对输出有很大影响。理解提示设计是解锁 GPT-3 真正潜力的关键。

编写良好提示的秘密在于理解 GPT-3 对世界的认知。正如 Awan 所指出的,“它只看到了文本。这意味着你不应该期望它知道物理世界,尽管它显然确实知道。它可以描述蒙娜丽莎, [可以] 告诉你[关于]它的重要性,重要性,历史 [的] 它可能,但它从未看过[画]因为它只是在文本上训练的。”

您的工作是让模型使用它已经拥有的信息来生成有用的结果。在猜谜游戏中,表演者向其他玩家提供足够的信息来猜出秘密词。类似地,在 GPT-3 中,我们给模型提供足够的上下文(以训练提示的形式),以便它可以找出模式并执行给定的任务。

图 2-3。来源未知的备忘录,由 Andrej Karpathy 于 2020 年 6 月 18 日在推特上发布

提示

在设计训练提示时,请以零样本反应为目标:也就是说,看看您是否可以在不使用外部训练示例的情况下获得所需的响应类型。如果不行,请继续通过展示一些例子而不是整个数据集。训练提示设计的标准流程是首先尝试零样本,然后是少样本,然后针对您的用例进行语料库定制(本章后面将对此进行描述)。

GPT-3 是通用人工智能的第一步,因此它确实存在局限性。它不知道一切,也不能以人类水准推理,但是如果您知道如何与它交谈,它的能力非常强大。这就是提示工程的艺术发挥作用的地方。

GPT-3 不是事实告知者,而是异常杰出的故事讲述者。它接受文本输入,并试图用它认为最好地完成输入的文本进行响应。如果你给它你最喜欢的小说的几行,它会试图以相同的风格继续下去。它的工作原理是通过上下文进行导航,如果没有适当的上下文,它可能会生成不一致的响应。我们来看一个示例,以了解 GPT-3 如何处理输入提示并生成输出:

Q: What is human life expectancy in the United States?

A:

如果您向 GPT-3 提供这样的提示而没有任何上下文,那么您实质上是在要求它从其训练数据宇宙中查找一般答案。结果将是概括化且不一致的响应,因为模型不知道在回答问题时使用训练数据的哪个部分。

另一方面,提供正确的上下文将指数级地改进响应的质量。它简单地限制了模型必须检查以回答问题的训练数据宇宙,从而产生更具体和切题的响应:

I am a highly intelligent question answering bot. If you ask me a question that is rooted in truth, I will give you the answer. If you ask me a question that is nonsense, trickery, or has no clear answer, I will respond with "Unknown".

Q: What is human life expectancy in the United States?

A:

您可以将 GPT-3 对输入提示的处理方式视为人脑的处理方式。当有人在没有适当上下文的情况下问我们任何问题时,我们倾向于给出随机回答。这是因为在没有任何正确方向或上下文的情况下,很难得到精确的回答。对于 GPT-3 来说也是如此;它的训练数据宇宙是如此之大,以至于在没有任何外部上下文或方向的情况下,很难导航到正确的响应。

LLM 如 GPT-3 能够提供创造性的写作和回答事实性问题,只要给予正确的上下文。以下是我们创建高效和有效训练提示的五步公式:

  1. 定义要解决的问题以及它是什么类型的 NLP 任务,例如分类、问答、文本生成或创意写作。

  2. 询问自己是否有办法获得零样本解决方案。如果您认为您的用例需要外部示例来激励模型,请再三考虑。

  3. 现在考虑如何以文本方式制定问题,给定 GPT-3 的“文本输入,文本输出”接口。考虑所有可能的方案来以文本形式代表您的问题。例如,说您想搭建一个广告副本助手,通过查看产品名称和描述来生成创意副本。要以“文本输入,文本输出”的格式框定这个目标,您可以将输入定义为产品名称和描述,将输出定义为广告副本:

“Input: Betty's Bikes, for price-sensitive shoppers

Output: Low prices and huge selection. Free and fast delivery. 

Order online today!”
  1. 如果您最终使用外部示例,请尽可能少地使用它们,并捕捉所有表示形式以避免使模型过度拟合或偏移预测。

这些步骤将作为每次从头开始创建训练提示的标准框架。在您能够为数据问题构建端到端解决方案之前,您还需要了解有关 API 如何工作的其他一些信息。让我们通过查看其组件来深入研究。

OpenAI API 如何工作

我们将在本章中详细讨论图2-4 中的所有这些组件。

组件名称 功能

执行引擎 (Execution engine) 确定执行语言模型

响应长度 (Response length) 设置 API 在其完成中包含的文本量的限制

温度和 Top P(Temperature and Top P) 温度控制响应的随机性,表示为 0 到 1的范围。Top P 控制模型应该考虑完成的随机结果数量,由温度建议;它确定随机性的范围。

频率惩罚和存在惩罚(Frequency penalty and Presence penalty) 频率惩罚通过“惩罚”相同的行字面值来降低模型重复相同行的可能性。存在惩罚增加谈论新主题的可能性。

最佳的(Best of) 允许您指定服务器端要生成的完成数(n),并返回“n”中最好的完成

停止序列(Stop sequence) 指定一组字符,提示 API 停止生成完成

注入起始文本和重启文本(Inject start and restart text) 注入起始文本允许您在完成的开头插入文本。注入重启文本允许您在完成的末尾插入文本。

显示概率(Show probabilities) 允许您通过显示给定输入的令牌生成概率来调试文本提示

执行引擎

执行引擎确定执行的语言模型。选择正确的引擎是确定模型能力并进而获得正确输出的关键。 GPT-3 带有四种执行引擎,大小和功能各不相同:达芬奇(Davinci)、阿达(ada)、巴贝奇(Babbage)和居里(Curie)。 达芬奇是最强大的,也是您第一次打开 Playground 时的默认设置。

响应长度

响应长度设置了API在完成中包含的文本量的限制。正如前面所提到的,OpenAI 根据每个API调用生成的文本长度(转换为“标记或单词的数字表示”)收费,所以响应长度(也以标记测量)对任何预算紧张的用户来说都是关键参数。响应长度越高,使用的标记越多,费用也越高。例如,如果您进行分类任务,将响应文本设置为100不是一个好主意:API可能会生成无关文本并使用额外的标记,这将对您的账户产生费用。由于技术限制,提示和完成组合中的标记总数上限为2048。因此,在使用API时,您需要注意提示和预期完成不要超过最大响应长度,以避免突然中断。如果您的用例涉及大量文本提示和完成,可以想出创造性的方法在标记限制内解决问题,例如精简提示、将文本分割成更小的片段以及串联多个请求。

温度和Top P

“温度控制响应的创造性,表示为从0到1的范围。较低的温度值意味着API将预测模型看到的第一件事,从而得到最正确但可能无聊、变化小的文本。另一方面,较高的温度值意味着模型在预测结果之前评估可能适合上下文的响应。生成的文本将更加多样,但语法错误和荒谬的生成可能性更高。

Top P控制模型在完成时应考虑多少个随机结果,如温度控制建议的那样;它确定了随机性的范围。Top P的范围是从0到1。接近零的值意味着随机响应将受到一定比例的限制:例如,如果值是0.1,那么只有10%的随机响应将被视为完成。这使得引擎具有确定性,这意味着对于给定的输入文本,它将始终生成相同的输出。如果该值设置为1,则API将考虑所有响应以完成,冒险并提供创造性的回应。较低的值限制创造力;较高的值扩展视野。

温度和Top P对输出有重大影响。有时候要理解何时以及如何使用它们来获得所需的输出可能会令人困惑。这两者是相关的:改变其中一个的值将影响另一个。因此,通过将Top P设置为1,您可以允许模型通过探索整个响应范围来释放其创造力,并通过使用温度控制来控制随机性。

我们建议始终更改Top P或温度之一,并将另一个设置为1

大型语言模型依赖于概率方法而不是传统逻辑。它们可以根据您设置模型参数的方式为相同的输入生成各种不同的响应。模型试图在其训练数据范围内找到最佳的概率匹配,而不是每次都寻求完美的解决方案。

正如我们在第1章中提到的,GPT-3的训练数据范围庞大,包括各种公开可用的图书、互联网论坛和OpenAI特别策划的维基百科文章,使其能够针对给定提示生成各种完整的响应。这就是温度和Top P的作用,有时也被称为“创造力调节”,您可以调整它们以生成更自然或抽象的响应,具有一定的创造性和玩味性。

比如说,您要使用GPT-3为您的创业公司生成名称。您可以将温度调节设置为较高水平,以得到最具创意的响应。当我们花了几天几夜来寻找我们创业公司的完美名称时,我们增加了温度。GPT-3挺身而出,帮助我们找到了我们喜爱的名称:Kairos Data Labs。

在其他情况下,您的任务可能需要很少或没有创造性,例如分类和问答任务。对于这些任务,将温度设置较低。

让我们看一下2-5图,其中包含一个简单的分类示例,根据公司名称将其归类为通用的业务类别。

我们的输入:

The following is a list of companies and the categories they fall into:

Facebook: Social Media, Technology

LinkedIn: Social Media, Technology, Enterprise, Careers

Uber: Transportation, Technology, Marketplace

Unilever: Conglomerate, Consumer 

Goods

Mcdonalds: Food, Fast Food, Logistics, Restaurants

FedEx:

和输出:

Logistics, Shipping

如您在2-5图中所看到的,我们再次使用温度来控制随机性的程度。您也可以通过改变Top P来实现这一点,同时保持温度调节设为1。

频率惩罚和存在惩罚

与温度和Top P调节一样,频率惩罚和存在惩罚调节在决定输出时考虑了文本提示(前一个完成结果加上新输入),而不是内部模型参数。因此,现有的文本会影响新的完成结果。频率惩罚减少了模型以完全一样的方式重复相同行的可能性,通过惩罚“它”。而存在惩罚增加了模型谈论新话题的可能性。

当您希望防止相同的完成文本在多个完成中重复出现时,这些调节非常有用。尽管这些调节很相似,但有一个重要的区别。如果建议的文本输出重复(例如,模型在先前的完成或同一会话中使用了相同的标记)且模型选择旧输出而不是新输出,则应用频率惩罚。如果给定文本中存在一个标记,则应用存在惩罚。

最佳结果

GPT-3使用“最佳结果”功能在服务器端生成多个完成结果,对其进行后台评估,然后为您提供最佳的概率结果。使用“最佳结果”参数,您可以指定在服务器端生成的完成数量(n)。模型将返回n个完成结果中的最佳结果(每个标记的最低对数概率)。

停止序列

停止序列是一组字符,用于指示API停止生成完成结果。这有助于避免使用不必要的标记,这是常规用户的重要节约成本的功能。

您可以为API提供最多四个序列,以停止进一步生成标记。

让我们来看一下2-6图中的示例语言翻译任务,以了解停止序列是如何工作的。在这个示例中,英语短语被翻译成法语。我们使用重启序列“English:”作为停止序列:每当API遇到该短语时,它将停止生成新的标记。

注入起始文本和注入重新启动文本

注入起始文本和注入重新启动文本参数允许您在完成结果的开头或结尾插入文本。您可以使用它们来保持所需的模式。通常,这些设置与停止序列一起使用,就像我们的示例中那样。提示具有一个模式,其中提供了一个英语句子,前缀为“English:”(重新启动文本),并且生成的翻译输出带有前缀“French:”(起始文本)。因此,任何人都可以轻松区分两者,并创建一个模型和用户都能清楚理解的训练提示。

每当我们针对此类提示运行模型时,它自动在输出之前注入起始文本“French:”,并在下一个输入之前注入重新启动文本“English:”,以维持此模式。

显示概率

显示概率参数位于Playground设置面板的底部。在传统的软件工程中,开发人员使用调试器来调试一段代码。您可以使用显示概率参数来调试您的文本提示。每当选择此参数时,您将会看到突出显示的文本。将光标悬停在上面时,显示的是模型对于特定指定输入可能生成的标记列表,以及它们各自的概率。

您可以使用此参数来检查您的选项。此外,它还可以更容易地看到可能更有效的替代方案。显示概率参数有三个设置:

最可能

按概率降序列出最有可能用于完成的标记。

最不可能

按概率降序列出最不可能用于完成的标记。

完整谱系

显示可用于完成的所有标记的完整范围。

让我们在一个简单提示的环境中查看这个参数。我们想要以一个简单而广为人知的短语“从前,有一天”开头输出句子。我们向API提供提示“Once upon a”,然后在显示概率选项卡中勾选了最可能的选项。

正如2-7图所示,它将“time”作为响应生成。因为我们将“显示概率”参数设置为最可能,API不仅会显示响应,还会显示一系列可能选项及其概率。

现在您已经有了一个概览,让我们更详细地查看这些组件。

执行引擎

如图2-7所示,OpenAI API提供了四种执行引擎,根据参数数量和性能功能进行区分。执行引擎驱动着OpenAI API的运行。它们被视为“自动机器学习”解决方案,为非专业人员提供自动化的机器学习方法和过程。它们易于配置和适应给定的数据集和任务。

这四个主要的执行引擎按照字母顺序以著名科学家的名字命名:Ada(以Ada Lovelace命名),Babbage(以Charles Babbage命名),Curie(以Marie Curie女士命名)和Davinci(以Leonardo davinci命名)。让我们深入了解这些执行引擎,以便在使用GPT-3时了解何时使用哪个引擎,首先从Davinci开始。

Davinci

Davinci是最大的执行引擎,也是您打开Playground时的默认引擎。它可以做任何其他引擎可以做的事情,通常可以更少的指令和更好的结果。然而,这是以更高的每个API调用成本和更慢的速度为代价的。您可能希望使用其他引擎来优化成本和运行时间。

提示

在测试新的想法和提示时,我们建议首先使用Davinci,因为它具有更强大的功能。通过尝试Davinci来了解API能够做什么,是了解其能力的好方法。然后,您可以逐渐选择更低成本的引擎优化预算和运行时间,以使您对问题陈述感到舒适。一旦您有了要实现的目标,您可以选择继续使用Davinci(如果成本和速度不是问题),或者可以转向Curie或其他更低成本的引擎并尝试优化其输出以适应其能力。您可以使用OpenAI的比较工具生成一个Excel电子表格,用于比较引擎的输出、设置和响应时间。

Davinci应该是您处理需要理解内容的任务的首选,例如总结会议记录或生成创意广告文案。它在解决逻辑问题和解释虚构角色的动机方面非常出色。它甚至可以写故事。Davinci还能够解决一些涉及因果关系的最具挑战性的人工智能问题。

Curie

Curie 主要目标是找到功耗和速度之间的最佳平衡。这对于执行大规模分类任务或将模型投入生产非常重要。

Curie 在回答问题和作为通用聊天机器人方面也非常出色。例如,如果您正在构建一个客户支持的聊天机器人,您可能会选择 Curie 来更快地处理大量请求。

虽然 Davinci 在分析复杂文本方面更强大,但 Curie 可以以低延迟和极快的速度执行任务。在选择在生产中使用 Davinci 还是 Curie 之前,了解您的用例并进行成本效益分析总是明智的。

Babbage

Babbage 比 Curie 更快,但不能执行涉及理解复杂意图的任务。然而,在语义搜索排名和分析文档与搜索查询的匹配程度方面,它表现出色。Babbage 比 Curie 和 Davinci 更便宜,对于涉及频繁 API 调用的简单问题来说是首选。

Ada

Ada 是可用引擎中最快且最便宜的。它可以执行简单的任务,不需要细腻的上下文理解,例如解析文本、纠正语法或简单分类。通过提供更多上下文信息,可以提高 Ada 的性能。对于涉及频繁 API 调用的用例,Ada 可能是首选模型;通过正确配置设置,它可以达到类似更大模型的结果。通过对 API 参数进行实验,您将更好地了解哪些设置适合您的用例。

基于这四个主要模型,OpenAI 推出了一系列 InstructGPT 模型,这些模型在理解指示并遵循指示时表现更好,并且比原始的 GPT-3 更少带有有毒性和更加真实。它们采用了 OpenAI 的对齐研究中的技术进行开发。这些模型是通过人机协同训练的,并且现在作为 OpenAI API 的默认语言模型进行部署。

图2-8和2-9展示了相同输入在 InstructGPT 和 GPT 系列的 Davinci 引擎生成的两个输出。

我们的输入:

Write a story about AI for a 5 year old.

InstructGPT的输出:

Robot was very happy. He had just been born, and he was already the smartest

robot in the world. He could do anything that any other robot could do, but hecould also think for himself.

GPT的输出:

This project is an attempt to make an AI that can produce fictional stories. 

It is a work in progress. 

Fictionality 

The aim of this project is to create an AI that can create fictional stories.

为了使构建提示的过程更加高效,OpenAI决定公开发布InstructGPT系列的四个模型:text-davinci-001、text-curie-001、text-babbage-001和text-ada-001。这些模型通过清晰的指令可以产生比它们的基础模型更好的结果,现在它们是API的默认模型。这一系列是在人类思维方式与模型运行方式之间搭建桥梁的重要一步。

提示

我们建议将这一模型系列作为您处理所有与文本相关的任务的默认模型。GPT-3基础版本的模型可用作Davinci、Curie、Babbage和Ada,用于微调、搜索、分类和答案的终点。

端点(Endpoint)

Playground 是一个在幕后调用 OpenAI API 的图形化网页界面,但是还有其他几种调用 API 的方法。要做到这一点,您需要熟悉它的端点:当它们被调用时来回通信的远程 API。在本节中,您将熟悉八个 API 端点的功能和用法。

列出引擎

列出引擎终点,也称为元数据终点,提供了可用引擎的列表,以及与每个引擎相关的特定元数据,例如所有者和可用性。要访问它,您可以使用 HTTP GET 方法调用以下 URI,而不传递任何请求参数:

GET https://api.openai.com/v1/engines

检索引擎

当您向检索引擎终点提供引擎名称时,它会返回有关该引擎的详细元数据。要访问它,请使用 HTTP GET 方法调用以下 URI,而不传递任何请求参数:

GET https://api.openai.com/v1/engines/{engine_id}

完成(Completion)

完成是 GPT-3 最著名且广泛使用的终点。它简单地将文本提示作为输入,并将完成的响应作为输出返回。它使用 HTTP POST 方法,并需要引擎 ID 作为 URI 路径的一部分。作为 HTTP Body,完成终点接受之前部分讨论的一些其他参数。其签名为:

POST https://api.openai.com/v1/engines/{engine_id}/completions

语义搜索

语义搜索终点允许您以自然语言提供查询,以搜索一组文档,这些文档可以是单词、句子、段落,甚至更长的文本。它将根据与输入查询的语义相关程度对文档进行评分和排序。例如,如果您提供文档 [“学校”,“医院”,“公园”],以及查询 “医生”,您将对每个文档得到不同的相似度分数。

相似度分数是一个正分数,通常从 0 到 300(但有时可能更高),其中分数超过 200 通常表示文档在语义上与查询相似。相似度分数越高,文档与查询的语义相似性越高(在这个例子中,“医院”与“医生”最相似)。您可以在您的请求中提供多达两百个文档。

以下是语义搜索终点的签名:

POST https://api.openai.com/v1/engines/{engine_id}/search

Files

文件端点可在答案、分类和语义搜索等不同端点之间使用。它用于将文档或文件上传到OpenAI存储中,该存储可通过API进行访问。相同的端点可以使用不同的签名来执行以下任务:

列出文件

返回属于用户组织或与特定用户帐户关联的文件列表。这是一个不需要任何参数的HTTP GET调用:

GET https://api.openai.com/v1/files

上传文件

上传包含要在各个端点之间使用的文档的文件。它将文档上传到OpenAI为用户组织已经分配的内部空间中。这是一个HTTP POST调用,需要将文件路径添加到API请求中:

POST https://api.openai.com/v1/files

检索文件

通过提供文件ID作为请求参数,返回有关特定文件的信息:

GET https://api.openai.com/v1/files/{file_id}

删除文件

通过提供文件ID作为请求参数,删除特定文件:

DELETE https://api.openai.com/v1/files/{file_id}

分类(测试版)

分类端点使您可以利用一个带有标签的示例集而不需要微调。它使用提供的示例对查询进行分类,从而避免了微调,并进一步消除了超参数调整的需要。您可以将其用于几乎任何机器学习分类任务。

该端点提供了一个易于配置的“autoML”解决方案,可以轻松地适应不断变化的标签模式。您可以在请求的一部分中提供最多200个带标签的示例,或在查询过程中提供预先上传的文件。除了提供URI路径外,此端点还需要模型、查询和示例。其签名为:

POST https://api.openai.com/v1/classifications

GPT-3的问答端点(QA endpoint)在本文撰写时2021年底还处于测试阶段。当给出一个问题时,QA端点根据一组文档或训练示例中提供的信息生成答案。

例如,如果你想在一组PDF上实现一个QA端点,你只需要使用files端点上传它们并在请求参数中提供文件ID。答案端点将使用这些文件作为上下文来回答任何查询。它还允许你通过以训练示例的形式提供(问题,答案)对的列表来引导模型的语境和响应。它首先在提供的文档或示例中搜索相关的上下文,然后将其与相关的示例和问题组合来生成一个响应。它的签名是:

POST [https://api.openai.com/v1/answers](https://api.openai.com/v1/answers)

嵌入(Embeddings)

API的另一个实验性端点是embeddings。嵌入是任何机器学习模型的核心,可以通过将文本转换为高维向量来捕获文本的语义。目前,开发人员倾向于使用开源模型为他们的数据创建嵌入,这些嵌入可以用于各种任务,如推荐、主题建模、语义搜索等。

OpenAI意识到GPT-3在为嵌入驱动的用例提供支持方面具有巨大的潜力并能够取得最先进的结果。为输入数据生成嵌入向量非常简单,并以API调用的形式包装。要创建表示输入文本的嵌入向量,你可以使用以下签名:

POST [https://api.openai.com/v1/engines/{engine_id}/embeddings](https://api.openai.com/v1/engines/%7Bengine_id%7D/embeddings)

要调用嵌入端点,你可以根据你的用例选择引擎类型,参考嵌入文档。每个引擎都有其特定的嵌入维度,Davinci是最大的,Ada是最小的。所有嵌入引擎都源自四个基础模型,并根据用例进行分类,以允许高效和经济的使用。

定制GPT-3

OpenAI的研究论文“适应社会语言模型的过程(PALMS),使用价值目标数据集”的作者是Irene Solaiman和Christy Dennison(2021年6月),这篇论文促使该公司推出了一种首创的微调端点,允许您从GPT-3中获得比以前可能的更多,方法是通过定制模型来适应您的特定用例。 (我们将在第6章中进一步讨论PALMS。) 定制GPT-3可以提高GPT-3能够执行的任何自然语言任务的性能,以适应您的特定用例。

让我们首先解释一下它是如何工作的。

OpenAI使用半监督方式对GPT-3进行了预训练,训练数据集经过特别准备。当给出提示和几个例子时,它通常可以推断出您正在尝试执行的任务,并生成一个可信的完成。这称为少样本学习,正如您在第1章中了解到的。

用户现在可以在自己的数据上微调GPT-3,创建一个定制的模型版本,以适应他们的项目。 定制使GPT-3对各种用例变得可靠,并使运行模型更加廉价、高效和快速。 微调是关于调整整个模型,以便它始终以您希望它执行的方式执行。 您可以使用任何形状和大小的现有数据集,也可以根据用户反馈逐步添加数据。

用于微调的数据集的内容和语义将限制模型的能力和知识。 这反过来会限制创造力和主题选择的范围,这对于下游任务(如对内部文档进行分类)或任何涉及内部术语的用例都很有好处。 它的工作原理是将GPT-3的注意力集中在微调数据上,并限制其知识库。

对模型进行微调后,您不再需要在提示中提供示例。 这可以节省成本,减少响应时间,并提高输出的质量和可靠性。 相比提示设计,定制GPT-3似乎能产生更好的结果,因为在此过程中您可以提供更多示例。

即使只有不到100个例子,您也可以开始看到微调GPT-3的好处,并且随着添加更多数据,性能将持续提高。 在PALMS研究论文中,OpenAI展示了如何用少于100个示例微调GPT-3来改进其在某些任务上的表现。 OpenAI还发现,示例数的每次加倍往往会线性提高质量。

由定制GPT-3模型提供支持的应用程序

定制GPT-3改善了输出的可靠性,为生产用例提供了更一致的结果。 现有的OpenAI API客户发现,定制GPT-3可以大大减少不可靠输出的频率,并且有越来越多的客户可以用他们的性能数字为此作证。 让我们看看四家定制了GPT-3的公司。

Keeper Tax帮助独立承包商和自由职业者处理他们的税务。 它使用各种模型提取文本并分类交易,然后识别容易遗漏的税务减免,以帮助客户直接从应用程序中提交报税。 通过定制GPT-3,Keeper Tax的准确率从85%提高到93%。 并且它通过每周向其模型添加500个新训练示例不断改进,这导致准确率每周提高约1%。

Viable帮助公司从客户反馈中获取洞察。 通过定制GPT-3,Viable能够将大量非结构化数据转换为可读的自然语言报告,并提高报告的可靠性。 因此,总结客户反馈的准确性从66%提高到90%。 有关Viable之旅的深入见解,请参阅第4章对Viable CEO的采访。

Sana Labs是将AI应用于学习领域的全球领导者。 该公司的平台通过利用最新的机器学习突破来个性化内容,为企业提供个性化的学习体验。 通过使用自己的数据定制GPT-3,Sana的问题和内容生成从语法正确但笼统的响应转变为高度准确的响应。 这带来了60%的改进,为其用户提供了更加个性化的体验。

Elicit是一个AI研究助手,它直接回答关于学术论文发现的研究问题。 助手从大量研究论文的语料库中找到最相关的摘要,然后应用GPT-3生成论文对该问题的论点。 GPT-3的定制版本胜过提示设计,在三个方面带来改进:结果更易理解24%,更准确17%,总体上更好33%。

如何为您的应用程序定制GPT-3

要开始定制GPT-3,您只需要在OpenAI命令行工具中运行一个命令,并提供一个文件。 您的定制版本将立即开始训练,然后在OpenAI API中立即可用。

总的来说,为您的应用程序定制GPT-3涉及以下三个步骤:

准备新训练数据并上传到OpenAI服务器

用新训练数据微调现有模型

使用微调后的模型

准备和上传训练数据

训练数据是模型进行微调的输入。 您的训练数据必须是JSONL文档,其中每一行是一个提示-完成对,对应一个训练示例。 对于模型微调,您可以提供任意数量的示例。 强烈建议您创建一个价值目标数据集(我们将在第6章中定义和讨论)为模型提供高质量数据和广泛表示。 微调随着更多示例的增加而改进性能,因此您提供的示例越多,效果越好。

你的JSONL文档应该如下所示:

{"prompt": "prompt text", "completion": "ideal generated text"}

{"prompt": "prompt text", "completion": "ideal generated text"}

{"prompt": "prompt text", "completion": "ideal generated text"}

...

其中提示文本应包括您想要补全的确切提示文本,理想生成文本应包括您希望GPT-3生成的所需完成文本的示例。

您可以使用OpenAI的CLI数据准备工具轻松地将数据转换为此文件格式。 CLI数据准备工具接受不同格式的文件; 唯一的要求是它们包含提示和完成列/键。 您可以传递CSV,TSV,XLSX,JSON或JSONL文件,该工具将保存输出到准备好进行微调的JSONL文件中。 为此,请使用以下命令:

openai tools fine_tunes.prepare_data -f LOCAL_FILE

其中LOCAL_FILE是您准备转换的文件。

训练一个新的微调模型

按上述方式准备训练数据后,您可以在OpenAI CLI的帮助下继续微调作业。 为此,您需要以下命令:

openai api fine_tunes.create -t TRAIN_FILE_ID_OR_PATH -m BASE_MODEL

其中BASE_MODEL是您要从中开始的基模型的名称(Ada、Babbage、Curie或Davinci)。 运行此命令将执行几件事:

使用files端点上传文件(如本章前面所述)

使用命令的请求配置微调模型

流事件日志,直到微调作业完成

日志流非常有助于实时了解正在发生的事情,并在发生故障/失败时做出响应。 流可能需要几分钟到几个小时,具体取决于队列中的作业数量和数据集的大小。

使用微调模型

一旦模型成功微调,您就可以开始使用它! 您现在可以将此模型指定为完成端点的参数,并使用Playground对其发出请求。

提示

微调作业完成后,您的模型可能需要几分钟时间准备好处理请求。 如果对模型的完成请求超时,很可能是因为您的模型仍在加载中。 如果发生这种情况,请在几分钟后重试。

您可以通过使用以下命令将模型名称作为完成请求的模型参数来开始发出请求:

openai api completions.create -m FINE_TUNED_MODEL -p YOUR_PROMPT

其中FINE_TUNED_MODEL是您的模型的名称,YOUR_PROMPT是您在此请求中想要完成的提示。

您仍然可以在对新微调模型的这些请求上使用本章中讨论的所有完成端点参数,如温度、频率惩罚、存在惩罚等。

注意

这些请求上没有指定引擎。 这是有意的设计,OpenAI计划在未来将其标准化到其他API端点。

欲了解更多信息,请参阅OpenAI的微调文档。

Token

在深入探讨不同提示消耗Token的方式之前,让我们更仔细地看看token是什么。

我们已经告诉过你,token是单词或字符的数字表示。 使用token作为标准测量,GPT-3可以处理从几个词到整篇文档的训练提示。

对于常规英文文本,1个token包含大约4个字符。 它转换为大约三分之二个单词,所以对于一百个token,将有大约75个单词。 作为参考,莎士比亚集合的字数约为90万,大致转换为120万个记号。

为了维持API调用的延迟,OpenAI对提示和补全施加了2048个token(约1500个单词)的限制。

为了进一步了解token在GPT-3背景下的计算和消耗方式,并且遵守API设置的限制,让我们来看看测量记号数量的方法。

在Playground中,当您在界面中输入文本时,可以在右下角的页脚中实时看到token计数的更新。 它显示在点击“生成”按钮后文本提示将消耗的token数量。

您可以使用它来监控每次与Playground交互时的token消耗(参见图2-10)。测量token消耗的另一种方法是使用GPT-3 token工具(图2-11),它允许您从字符中可视化token的形成。 您可以通过一个简单的文本框与token计数器进行交互,在文本框中键入提示文本,token计数器会向您显示token和字符计数以及详细的可视化。

为了在对不同端点的API调用中集成token计数指标,您可以随API请求一起修补logprobs和echo属性,以获取消耗的完整token列表。

在下一节中,我们将介绍根据不同执行引擎如何定价token。

定价

在最后一节中,我们讨论了token,这是OpenAI用来确定API调用定价的最小可交换单位。 与训练提示中使用的单词或句子的数量相比,记号允许更大的灵活性,并且由于记号的细粒度,它们可以轻松处理并用于测量各种训练提示的定价。

无论您是从Playground还是以编程方式调用API,在幕后,API都会计算训练提示以及生成的补全中使用的token数,并根据使用的总token数对每个调用进行收费。

OpenAI通常每1000个token收取一个固定费用,具体费用取决于API调用中使用的执行引擎。 Davinci是最强大和最昂贵的,而Curie、Babbage和Ada则更便宜、更快。

表2-2显示了撰写本章时(2021年12月)各种API引擎的定价。

该公司采用“付费即用”的云定价模型。有关更新的定价,请查看在线定价时间表。

与监控每个API调用的token相反,OpenAI提供了报告仪表板来监控每日累计token使用情况。 根据您的使用情况,它可能如图2-12所示。

在图2-12中,您可以看到显示每日token消耗的条形图。 仪表板可帮助您监控组织的token使用和成本,以便您可以调整API使用并保持在预算范围内。 还可以选择监控累计使用情况并按API调用拆分token计数。 这应该为您提供足够的灵活性来制定关于token消耗和定价的政策。 现在您已经了解了Playground和API的各个方面,我们将看一下GPT-3在典型语言建模任务上的表现。

提示

刚开始使用GPT-3的初学者可能会觉得token消耗难以理解。 许多用户输入的提示文本太长,导致信用过度使用,随后是意外费用。 为了避免这种情况,在最初几天,请使用API使用情况仪表板观察消耗的token数量,并查看提示和补全的长度如何影响token使用。 这可以帮助防止信用的不受控制的使用,并将所有内容保持在预算之内。

GPT-3在传统NLP任务上的表现

GPT-3是NLP领域的一个高度先进和复杂的后继者,它是使用核心NLP方法和深度神经网络构建和训练的。 对于任何基于AI的建模方法,模型性能的评估方式如下:首先,您在训练数据上针对特定任务(如分类、问答、文本生成等)训练模型; 然后,您使用测试数据(新的数据,以前未见过的数据)来验证模型性能。

同样,有一套标准的NLP基准用于评估NLP模型的性能并得出相对的模型排名或比较。 这种比较或相对排名使您能够为特定的NLP任务(业务问题)选择和挑选最佳模型。

在本节中,我们将讨论GPT-3在一些标准NLP任务上的表现,如图2-13所示,并将其与类似模型在各自NLP任务上的表现进行比较。

文本分类

文本分类是将文本分类到组织良好的组中的过程。 通过使用NLP,文本分类可以自动分析文本,然后根据其上下文分配一组预定义的标签或类别。

文本分类涉及分析作为输入提供的文本并为其分配标签、分数或其他特征以对其进行描述。 文本分类的一些常见示例是情感分析、主题标记和意图检测。 您可以使用多种方法来让GTP-3对文本进行分类,方法再次从零样本分类(您不向模型提供任何示例)到单样本和少样本分类(您向模型展示一些示例)。

零样本分类

现代人工智能长期以来一直致力于开发在未见过的数据上可以执行预测功能的模型。 这一重要的研究领域称为零样本学习。 同样,零样本分类是一项分类任务,模型无需针对标注数据进行先前的训练或微调就可以对文本片段进行分类。 GPT-3目前对未见过的数据的结果要么优于要么与为特定目的微调的最新人工智能模型持平。 要使用GPT-3执行零样本分类,我们必须为其提供兼容的提示。 下面是一个零样本分类的示例,其目标是执行事实检查分析以确定推文中包含的信息是否正确或错误。 图2-14显示了根据零样本示例进行的令人印象深刻的信息正确性分类结果。

我们的输入:

Analyze the tweet in terms of information correctness.

Tweet: "More than 50% of global scientists don't believe in climate change."

Analysis:

输出:

The tweet is incorrect.

单样本和少样本分类

文本分类的另一种方法是通过在一个或几个训练示例上微调AI模型,这称为单样本或少样本文本分类。 当您提供如何分类文本的示例时,模型可以根据这些示例了解对象类别的信息。 这是零样本分类的一个超集,允许您通过向模型提供三到四个不同的示例来分类文本。 当下游用例需要一定级别的上下文设置时,这可能特别有用。

让我们看一个少样本分类的例子。 我们要求模型执行推文情感分析分类,并给出三个推文示例来说明每个可能的标签:积极、中性和消极。 如您在图2-15中所见,配备了根据几个示例获得的详细上下文的模型可以非常轻松地执行下一个推文的情感分析。

注意

当您从书中重新创建提示示例或创建自己的示例时,请确保在提示中提供足够的换行空格。 段后多一个换行可能会导致非常不同的结果,因此您会想要尝试不同的做法,看看对您最有效的做法是什么。

这是我们的提示词:

Analyze the tweet in terms of its sentiment. Depending on the sentiment, classify

it as positive, neutral, or negative.

Tweet: "I'm seriously worried that super intelligent AI will be disappointed in 

humans."

Sentiment analysis(positive, neutral, negative): negative

Tweet: "I cannot wait for super intelligent AI to emerge and deepen our 

understanding of the Universe."

Sentiment analysis(positive, neutral, negative): positive

Tweet: "I think it is neither super likely nor super unlikely that the super 

intelligent AI will emerge one day."

Sentiment analysis(positive, neutral, negative): neutral

Tweet: "Super intelligent AI is going to be the most exciting discovery in human 

history.

Sentiment analysis(positive, neutral, negative):

输出:

positive

批量分类

在了解了GPT-3的少样本分类之后,让我们更深入地研究批量分类,它可以在单个API调用中批量分类输入样本,而不是仅针对每个API调用分类一个示例。 它适用于您希望在单次操作中分类多个示例的应用程序,就像我们检查的推文情感分析任务一样,但连续分析几条推文。

与少样本分类一样,您希望为模型提供足够的上下文以实现所需的结果,但以批量配置格式。 在这里,我们使用批量配置格式中的各种示例定义了推文情感分类的不同类别(图2-16和2-17)。 然后,我们要求模型分析下一批推文。

这是我们的提示词:

Analyze tweets in terms of their sentiment. Depending on their sentiment, 

classify them as positive, neutral, or negative.

Tweet: "I’m seriously worried that super intelligent AI will be disappointed in 

humans."

Sentiment analysis(positive, neutral, negative): negative 

###

Tweet: "I cannot wait for super intelligent AI to emerge and deepen our 

understanding of the Universe."

Sentiment analysis(positive, neutral, negative): positive

###

Tweet: "I think it is neither super likely nor super unlikely that the super 

intelligent AI will emerge one day."

Sentiment analysis(positive, neutral, negative): neutral

###

Tweet: "Super intelligent AI is going to be the most exciting discovery in human 

history."

Sentiment analysis(positive, neutral, negative): positive

###

Tweet:

1. "I'm seriously worried that super intelligent AI will be disappointed in 

humans."

2. "I cannot wait for super intelligent AI to emerge and deepen our understanding 

of the Universe."

3. "I think it is neither super likely nor super unlikely that the super 

intelligent AI will emerge one day."

4. "Super intelligent AI is going to be the most exciting discovery in human 

history."

5. "This is the latest report on the state of the AI"

Tweet sentiment:

1. negative

2. positive

3. neutral

4. positive

5. neutral

Tweet:

1. "I can't stand bad techno music"

2. "This is a tweet"

3. "I can't wait for going to the Moon!!!"

4. "AI is super cute ❤️"

5. "Got VERY ANGRY now!!! "

Tweet sentiment:

1.

对应的输出:

1. negative

2. neutral

3. positive

4. positive

5. negative

如您所见,模型重新创建了批量情感分析格式,并成功分类了推文。 现在让我们继续看它在命名实体识别任务上的表现。

命名实体识别

命名实体识别(NER)是一个信息提取任务,它试图定位和分类未结构化文本中提到的命名实体,并将其分类到人名、组织、位置、时间表达式、数量、货币价值、百分比等预定义类别中。

NER有助于使响应更加个性化和相关,但当前最先进的方法需要大量的数据进行训练,然后才能开始预测。 另一方面,GPT-3可以开箱即用地识别人员、地点和组织等通用实体,而无需人类提供一个训练示例。

在下面的示例中,我们使用了在编写本书时还处于测试阶段的davinci-instruct-series模型版本,该模型收集提示以训练和改进未来的OpenAI API模型。 我们给它一个简单的任务:从示例电子邮件中提取联系信息。 它在第一次尝试中成功完成了任务(图2-18)。

以下是我们的输入:

Extract the name and mailing address from this email:

Shubham,

It was great to talk to you the other day!

I'm SO looking forward to start working on our book.

Here's my address 1307 Roosevelt Street, San Francisco CA 94107

Best,

Sandra Kublik

Name and mailing address:

输出如下:

Sandra Kublik

1307 Roosevelt Street, San Francisco CA 94107

文本摘要

文本摘要是一种生成简洁且精确摘要的技术,它以传达有用信息的部分为重点,而不会失去整体含义。 基于GPT-3的文本摘要旨在将冗长的文字转化为其浓缩版本。 这种任务通常很难并且昂贵才能手动完成。 使用GPT-3,只需一个输入和几秒钟的时间!

NLP模型可以通过理解文档并识别传达重要事实和信息的部分来训练生成摘要文本。 但是,在这些模型可以学习上下文并开始总结未见过的输入之前,它们需要大量的训练样本。

GPT-3的抽象式摘要是解决信息提取问题的关键。 通过生成摘要而不仅仅提取关键信息,GPT-3可以提供对文本的更全面和准确的理解。 它使用零样本或少样本方法进行文本摘要,这使它适用于各种用例。 使用GPT-3,您可以根据用例以多种方式生成文本摘要:基本摘要、一行摘要或年级摘要。 让我们快速浏览一下这些方法。

大多数时候,模型能够以评论摘要的形式生成不错的结果,但有时它会根据先前的上下文生成不相关的结果。 为了避免获取不必要的结果,您可以将“best of”参数设置为3,这将始终为您提供API生成的三个结果中的最佳结果。 在图2-19所示的示例中,经过几次尝试和少量参数调整后,我们得到了不错的结果。

以下是我们的提示:

The problem is that when it works, it works, but when it doesn't, it really 

doesn't. Luckily, the game's low points like the horrible binary stealth system 

and the bugs and lack of QoL are either fixable or vastly outweighed by the good 

bits, and the overall tally still ends up being much higher than the average of 

many other games out there. That's helped a lot by the moment-to-moment gameplay, 

which pays off just as much as the story beats; the movement system lets you 

climb almost any short object, vehicles are weighty to drive, and have fantastic 

interior and exterior designs, and guns feel properly loud and heavy. Its story

and narrative kept me glued to the screen, and everything – from sex scenes

and romance options to Keanu Reeves trying to kill you or help you throughout

the game – are remarkably well done. Cyberpunk 2077 is a game crafted with love, 

and it shows.

tl;dr:

输出如下:

Cyberpunk 2077 is a game crafted with love, and it shows. The story is great, 

the gameplay is great, the worldbuilding is great. It's not perfect by any means, 

but it's still one of the best games I've played in years. 

The Good: 

- Great story and characters 

- Amazing worldbuilding 

- Excellent gunplay and movement system 

The Bad: 

- Binary stealth system (sometimes you're seen no matter what) - Bugs

由于许多人每天花数小时阅读和编写电子邮件,因此总结电子邮件是GPT-3的一个广泛需求的用例。 让我们看看GPT-3如何将三段电子邮件总结成一句简洁的话(图2-20)。

为了获得所需的结果,我们粘贴了完整的电子邮件,然后只是在末尾简单地添加了“一句摘要:”。 我们还包括一个“.”停止序列,以告诉模型在生成单个句子后停止摘要。

我们的提示:

Hey Greg,

We are Sandra and Shubham. We are the co-authors of a GPT-3 based book that 

aims to be a go-to manual for API users. It will provide the readers with the 

knowledge to get started with GPT-3 as well as the context of the growing 

ecosystem surrounding it. The book will be released by O'Reilly publishing 

house by early 2022.

We'd like to connect and explore the possibility of collaboration with OpenAI 

to evangelize access to API for people from all backgrounds and enable them to 

build exciting new solutions using GPT-3. We would appreciate your input to 

ensure we accurately represent OpenAI's stance on GPT-3 and inform our readers 

on the upcoming advancements/features of the API.

It will be great if we can catch up sometime this week to discuss it further?

Best,

S&S

one-sentence summary:

输出如下:

We're writing a book on GPT-3 and would like to connect with OpenAI to get a 

better understanding of the API and the future developments.

文本生成

在GPT-3推出之前,人们普遍认为AI模型能够与人类进行简短的对话,回答具体的问题或处理特定的任务。 然而,这些模型还不够复杂,无法处理复杂的文本生成任务,每当遇到复杂或抽象的内容时,它们就会失去对话的脉络。

在复杂的自然语言生成世界中,GPT-3动摇了语言模型仅限于琐碎任务的概念。 文本生成是GPT-3的最大优势。 它能够生成的文本内容与人类编写的文本几乎无法区分。 根据训练数据集中的数十亿字,GPT-3被训练来根据各种提示生成文本。 根据OpenAI的说法,它每天可以生成平均45亿字。

在接下来的两个示例中,我们尝试使用GPT-3为个人生产力应用程序创业公司和社交媒体帖子创建内容。 我们只给模型提供最小的上下文,它在第一次就生成了图2-21和2-22中的许多响应。

文章生成

我们的提示:

Here are the top 5 tips for personal productivity.

输出如下:

1. Develop a routine 

Work can be overwhelming. You don't need to remember every little detail. 

By having a routine, you will be able to work more efficiently. 

2. Avoid multitasking 

If you are multitasking, you are bound to miss something. It is better to

work on one task at a time. 

3. Take breaks 

It is true that if you do not take breaks, you will be more productive. However, 

if you take breaks too often you will get tired and stressed. If you work more 

effectively, you will shorten the time needed to complete a task. 

4. Learn to delegate 

If you have a lot of work to do, you should not do everything on your own. 

Delegate some of the work to others.

5. Prioritize 

Prioritize what you have to do and do the most important tasks first. Don't

worry about the small things.

社交媒体帖子生成

以下是我们的提示:

Write a social media post for Facebook, Twitter, and Instagram about launching 

a new beta version of the personal productivity app.

Facebook post:

输出如下:

“After extensive user testing, we are happy to announce that our latest update is 

available for download! Our team has worked hard to create the best version of 

our app yet. Download it now for free at www.app.com." 

Twitter post: 

"We're rolling out an updated version of your favorite productivity app! Now 

available on iOS and Android. #productivity #beta"

Instagram post: 

"We just released a new beta version of your favorite productivity app! Download 

it today for free on iOS and Android. #productivity #beta"

结论

在本章中,我们介绍了OpenAI Playground、提示工程以及OpenAI API的不同组件,然后是涵盖主要NLP任务的Playground示例。 到目前为止,您应该已经了解API如何与不同组件协同工作,以及如何将Playground用作设计和试验不同训练提示的基础。

在下一章中,我们将引导您了解如何将GPT-3与不同的编程语言结合使用,以便将API集成到您的产品中或从零开始构建一个全新的应用程序。



评论