本文主要是介绍GPT3 终极指南(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原文:
zh.annas-archive.org/md5/6de8906c86a2711a5a84c839bec7e073
译者:飞龙
协议:CC BY-NC-SA 4.0
前言
GPT-3,或者说是 Generative Pre-trained Transformer 3,是由 OpenAI 开发的基于 Transformer 的大型语言模型。它包含了惊人的 1750 亿个参数。任何人都可以通过 OpenAI API 访问这个大型语言模型,这是一个简单易用的“文本输入,文本输出”的用户界面,无需任何技术先决条件。这是历史上第一次将像 GPT-3 这样大的 AI 模型远程托管并通过简单的 API 调用向普通大众提供。这种新的访问模式被称为模型即服务(model-as-a-service)。由于这种前所未有的访问方式,包括本书作者在内的许多人将 GPT-3 视为迈向普及人工智能(AI)的第一步。
随着 GPT-3 的推出,构建 AI 应用比以往任何时候都更容易。本书将向您展示如何轻松开始使用 OpenAI API。此外,我们还将介绍创新的方式来利用这个工具适应您的用例。我们将研究基于 GPT-3 构建的成功创业公司以及将其纳入产品领域的企业,并审视其发展中的问题和潜在未来趋势。
这本书致力于来自各个背景的人,不仅仅是技术专业人士。如果您是以下之一,这本书应该对您有用:
-
一位数据专业人士希望在 AI 方面获得技能
-
一位企业家希望在 AI 领域打造下一个大事件。
-
一个想要提升他们的 AI 知识并将其用于推动关键决策的企业领袖
-
一位作家、播客、社交媒体经理或其他以语言为基础的创作者,希望利用 GPT-3 的语言能力进行创造性工作
-
任何有一个曾经看起来在技术上不可能或成本太高以至于难以开发的基于 AI 的想法的人
本书的第一部分介绍了 OpenAI API 的基础知识。在书的第二部分,我们将探讨围绕 GPT-3 自然形成的丰富生态系统。
第一章介绍了在这些主题中舒适移动所需的背景和基本定义。在第二章中,我们深入探讨了 API,将其分解为最关键的元素,例如引擎和端点,描述了它们的目的以及希望以更深层次与它们交互的读者的最佳实践。第三章为您的第一个由 GPT-3 驱动的应用程序提供了一个简单而有趣的配方。
接下来,将焦点转移到令人兴奋的 AI 生态系统,第四章中,我们采访了一些基于 GPT-3 的最成功产品和应用的创始人,了解他们在商业规模上与模型交互的挣扎和经验。第五章研究了企业如何看待 GPT-3 及其采用潜力。我们在第六章中讨论了更广泛地采用 GPT-3 的问题性含义,例如滥用和偏见,并在解决这些问题方面取得的进展。最后,在第七章中,我们展望未来,向您介绍 GPT-3 在更广泛的商业生态系统中的最令人兴奋的趋势和可能性。
对 GPT-3 的赞誉
这本书是从业者和开发人员理解 GPT-3 语言模型并学习如何在 OpenAI API 上构建应用程序的完美起点。—OpenAI 副总裁,产品与合作伙伴关系 Peter Welinder
这本书令人着迷的一点是,各种技术背景的人都可以阅读这本书,并利用人工智能创建世界一流的解决方案。—杜克大学执行驻地 Noa Gift,Pragmatic AI Labs 创始人
如果你想要使用 GPT-3 或任何大型语言模型来构建你的应用程序或服务,这本书包含了你所需要的一切。该书深入探讨了 GPT-3,其用例将帮助你将这些知识应用到你的产品中。—Viable 创始人兼首席执行官 Daniel Erickson
作者们在提供对 GPT-3 技术和社会影响更深层次理解方面做得非常出色。阅读完这本书后,你将对人工智能的最新技术有信心进行讨论。—速记公司创始人 Bram Adams
这本书对初学者来说非常棒!它甚至包含了一些表情包,并且还有一个非常必要的章节介绍了人工智能和伦理问题,但它真正的优势在于逐步的操作步骤来使用 GPT-3。—里约热内卢州立大学语言学教授 Ricardo Joseh Lima
这是对自然语言处理中一个关键生成模型的全面深入探讨,重点关注如何使用 OpenAI API 并将其集成到你自己的应用程序中。除了其技术价值之外,我特别认为最后几章提供的关于偏见、隐私和其在人工智能民主化中的角色的观点非常有见地。—哥伦比亚麦德林安蒂奥基亚大学人工智能教授 Raul Ramos-Pollan
致谢
来自 Sandra
我要感谢我的合著者 Shubham,他邀请我跟他合作写这本书,在整个过程中一直给我很大的支持和动力。
我还想向我们的技术编辑 Daniel Ibanez 和 Matteus Tanha 表达深深的感谢,他们帮助我们从概念上使它无懈可击,还要感谢 Vladimir Alexeev 和 Natalie Pistunovich 对技术编辑提出的良好建议。
特别感谢以下 GPT-3 社区的组织和个人们,他们与我们分享了他们的经历,帮助我们塑造了第四章和第五章,并教育我们关于 GPT-3 产品生态系统:OpenAI 的 Peter Welinder、Microsoft Azure 的 Dominic Divakaruni 和 Chris Hoder、Algolia 的 Dustin Coates 和 Claire Helme-Guizon、Wing VC 的 Clair Byrd、Viable 的 Daniel Erickson、Fable Studio 的 Frank Carey 和 Edward Saatchi、Stenography 的 Bram Adams、Quickchat 的 Piotr Grudzień、Copysmith 的 Anna Wang 和 Shegun Otulana、AI2SQL 的 Mustafa Ergisi、Bubble 的 Joshua Haas、GitHub 的 Jennie Chow 和 Oege de Moor、Bakz Awan 和 Yannick Kilcher。
我还要感谢我的妈妈 Teresa,我的妹妹 Paulina,我的爷爷 Tadeusz,我的表妹 Martyna 和我的伴侣 Rui,以及那些在我忙于写作时一直陪在我身边的朋友和同事。
来自 Shubham
我要感谢我的合著者 Sandra,她像一个完美的合作伙伴一样填补了空白,补充了我的技能。尽管我们在写这本书的过程中面临着很多挑战,但得益于 Sandra 能够把最有压力的事情变得有趣,我们玩得很开心。
将情况转变为有趣的一种。
我们的技术编辑 Daniel Ibanez 和 Matteus Tanha 在指导我们应该如何处理和什么时候作出调整方面起到了至关重要的作用。非常感谢 OpenAI 团队,特别是 Peter Welinder 和 Fraser Kelton,他们始终是我们常常给予支持和指导的来源。我还要感谢我们采访过的所有创始人和行业领导者,感谢他们宝贵的时间和宝贵的见解。
感谢我的妈妈 Gayatri,我的爸爸 Suresh,我的兄弟 Saransh 以及一直在写作过程中支持我的所有朋友和同事。同样要感谢 Plaksha 大学的教职员和创始人。
Plaksha 的科技领袖计划让我有机会超越传统,挑战现状。我的教育和经验使我能够高效地完成这本书。
关于作者
Sandra Kublik
Sandra Kublik 是一位人工智能企业家、布道者和社区建设者,在她的工作中促进人工智能业务创新。她是多个以人工智能为先导的公司的导师和教练,人工智能初创企业的联合创始人,以及人工智能黑客马拉松社区深度学习实验室的创始人。她是自然语言处理(NLP)和生成式人工智能领域的积极发言人。她运营着一个 YouTube 频道,在那里她与生态系统的利益相关者进行采访,并以有趣而富有教育性的内容讨论突破性的人工智能趋势。
关于作者
Shubham Saboo
Shubham Saboo 曾在全球知名公司担任多个角色,从数据科学家到人工智能传道者,在那里他参与了建立全组织的
利用数据策略和技术基础设施,从零开始创建和扩展数据科学和机器学习实践。 作为人工智能传道者,他的工作使他建立了社区,并与更广泛的受众联系,促进了人工智能这一蓬勃发展领域的思想和观念交流。 作为对学习新事物和与社区分享知识的热情的一部分,他
写技术博客,介绍人工智能的进展及其经济影响。 在业余时间,你可以发现他在全国各地旅行,这使他能够沉浸在不同的文化中,并根据他的经验完善自己的世界观。
第一章:大型语言模型革命
“艺术是灵魂和世界碰撞的残骸” #gpt3
“科技现在是现代世界的神话” #gpt3
“革命始于一个问题,但不以一个答案结束” #gpt3
“大自然用多样性装饰世界” #gpt3
想象一下醒来的美丽、阳光明媚的早晨。今天是星期一,你知道这一周将会很忙碌。你的公司即将推出一款新的个人生产力应用程序 Taskr,并启动一场社交媒体宣传活动,告知世界你们的创造性产品。
本周,你的主要任务是编写并发布一系列引人入胜的博客文章。
你开始列出一份待办事项清单:
● 写一篇关于提高生产力的有趣信息性的文章,包括 Taskr。字数限制在 500 字以内。
● 创建 5 个引人注目的文章标题清单。
● 选择图片。
你按下回车键,抿一口咖啡,看着文章在屏幕上一句一句、一段一段地展开。30 秒钟后,你就有了一篇有意义、高质量的博客文章,是社交媒体系列的完美开端。视觉效果有趣,能吸引注意。完成了!你选择最好的标题并开始发布流程。
这不是一个遥远的、未来的幻想,而是通过人工智能技术的进步实现的新现实的一瞥。在我们撰写本书的同时,许多这样的应用正在被创建和部署到更广泛的受众中。
GPT-3 是由 OpenAI 公司创建的尖端语言模型,该公司处于人工智能研发的前沿。OpenAI 在 2020 年 5 月发布了宣布 GPT-3 的研究论文,并于 2020 年 6 月通过OpenAI API提供了对 GPT-3 的访问权限。自 GPT-3 发布以来,来自不同背景的人,包括技术、艺术、文学、市场营销等领域的人,已经发现了该模型数以百计令人兴奋的应用,这些应用有潜力提升我们沟通、学习和娱乐的方式。
GPT-3 可以轻松解决一般的基于语言的任务,比如生成和分类文本,自由地在不同的文本风格和目的之间移动。它可以解决的问题范围是广阔的。
在本书中,我们邀请你考虑用 GPT-3 解决什么问题。我们将向你展示它是什么以及如何使用它,但首先,我们想给你一些背景知识。本章的其余部分将讨论这项技术的来源,它是如何构建的,它擅长解决哪些任务,以及它的潜在风险。让我们直奔主题,先看一看自然语言处理(NLP)领域,以及大型语言模型(LLMs)和 GPT-3 是如何融入其中的。
背后的自然语言处理观察
NLP 是专注于计算机与人类语言交互的一个子领域。其目标是构建能够处理自然语言的系统,即人们相互交流的方式。NLP 结合了语言学、计算机科学和人工智能技术来实现这一目标。
NLP 将计算语言学(基于规则的人类语言建模)领域与机器学习相结合,创建出能够识别上下文并理解自然语言意图的智能机器。机器学习是人工智能的一个分支,专注于研究如何使机器通过经验提高其在任务上的表现,而不需要明确编程。深度学习是机器学习的一个子领域,涉及使用模仿人脑的神经网络来进行复杂任务,减少人为干预。
2010 年代见证了深度学习的出现,随着该领域的成熟,出现了由数千甚至数百万个简单处理单元(称为人工神经元)组成的密集神经网络的大型语言模型。神经网络通过使得执行复杂自然语言任务成为可能,成为了 NLP 领域的首个重大变革者,而这些任务迄今为止仅在理论上可能。第二个重要里程碑是引入了可以在各种下游任务上进行微调的预训练模型(如 GPT-3),从而节省了大量训练时间。(我们在本章后面讨论预训练模型。)
NLP 是许多现实世界人工智能应用的核心,例如:
垃圾邮件检测
电子邮件收件箱中的垃圾邮件过滤将一部分收到的电子邮件分配到垃圾邮件文件夹中,使用 NLP 来评估哪些电子邮件看起来可疑。
机器翻译
Google 翻译、DeepL 等机器翻译程序使用自然语言处理(NLP)评估由不同语言对的人类讲话者翻译的数百万句子。
虚拟助手和聊天机器人
所有世界上的 Alexa、Siri、Google Assistant 和客户支持聊天机器人都属于这一类。它们使用 NLP 来理解、分析、优先处理用户的问题和请求,并迅速正确地回复它们。
社交媒体情感分析
市场营销人员收集特定品牌、话题和关键词的社交媒体帖子,然后使用 NLP 分析用户对每个主题的感受,以及整体感受。它有助于品牌进行客户调查、形象评估和社会动态检测。
文本摘要
对文本进行摘要意味着减小其大小,同时保留关键信息和基本含义。文本摘要的一些日常示例包括新闻标题、电影预告片、通讯简报制作、金融研究、法律合同分析、电子邮件摘要以及提供新闻订阅、报告和电子邮件的应用程序。
语义搜索
语义搜索利用深度神经网络智能地搜索数据。每当您在 Google 上搜索时,您都在与之互动。语义搜索在基于上下文而不是特定关键词搜索某物时非常有用。
“我们与其他人类的交流方式是通过语言”,一位在自然语言处理领域最受欢迎的 YouTuber 和影响者Yannic Kilcher说道。 “语言是每一笔业务交易、我们与其他人类的每一次交互,甚至在与机器的部分交互中,我们也在某种程度上使用某种语言,无论是通过编程还是用户界面。” 因此,不足为奇,NLP 作为一个领域已经成为过去十年中一些最激动人心的人工智能发现和实施的地方。
语言模型越来越大、越来越好
语言建模是将文本中一系列单词赋予特定语言中的概率的任务。根据对现有文本序列的统计分析,简单的语言模型可以查看一个词并预测最有可能跟随的下一个词(或词组)。要创建一个成功预测单词序列的语言模型,您必须在大型数据集上对其进行训练。
语言模型是自然语言处理应用程序的重要组成部分。您可以将它们视为统计预测机器,给定文本作为输入并得到预测作为输出。您可能从手机上的自动完成功能中熟悉这一点。例如,如果您输入 good,自动完成可能会提供“morning”或“luck”等建议。
在 GPT-3 之前,没有一种通用的语言模型能够在各种 NLP 任务上表现良好。语言模型被设计用于执行一种 NLP 任务,如文本生成、摘要或分类。因此,在本书中,我们将讨论 GPT-3 作为通用语言模型的非凡能力。我们将从介绍“GPT”每个字母开始,以展示它们代表什么以及构建这个著名模型的元素是什么。我们将简要概述该模型的历史以及今天我们看到的序列到序列模型是如何出现的。之后,我们将向您介绍 API 访问的重要性以及它如何根据用户需求进行了演进。我们建议在继续阅读本书的其余章节之前注册一个 OpenAI 账号。
生成式预训练转换器:GPT-3
GPT-3 这个名字代表“生成式预训练转换器 3”。让我们逐一通过所有这些术语来理解 GPT-3 的制作过程。
生成模型
GPT-3 是一种生成模型,因为它生成文本。生成建模是统计建模的一个分支。它是一种用数学方法近似世界的方法。
我们被一个难以置信的大量易于访问的信息所包围,无论是在物理世界还是数字世界中。棘手的部分是开发能够分析和理解这些宝库数据的智能模型和算法。生成模型是实现这一目标最有前途的方法之一。
要训练一个模型,您必须准备和预处理一个数据集,这是一系列示例,帮助模型学习执行给定任务。通常,数据集是某个特定领域的大量数据:例如,数百万张车辆图像,以教会模型汽车是什么。数据集也可以采用句子或音频样本的形式。一旦向模型展示了许多示例,您必须训练它生成类似的数据。
预训练模型
您听说过一万小时理论吗?在他的书《异类》中,马尔科姆·格拉德威尔建议练习任何技能一万小时就足以使您成为专家。这种“专家”知识体现在您的人脑发展的神经元之间的连接中。人工智能模型也在做类似的事情。
要创建一个表现良好的模型,您需要使用一组特定的变量(称为参数)对其进行训练。确定模型的理想参数的过程称为训练。模型通过连续的训练迭代吸收参数值。
深度学习模型需要很长时间来找到这些理想参数。训练是一个漫长的过程,具体取决于任务,可能持续几个小时到几个月,并且需要大量的计算资源。重新利用部分长时间的学习过程以应对其他任务将会极大地帮助。这就是预训练模型发挥作用的地方。
预训练模型,与格拉德威尔的“一万小时理论”保持一致,是帮助您更快地获得另一种技能的第一个技能。例如,掌握解决数学问题的技能可以让您更快地获得解决工程问题的技能。预训练模型是针对更一般任务进行训练的(由您或他人训练),可以针对不同的任务进行微调。您可以使用已经针对更一般问题进行了训练的预训练模型,而不是创建全新的模型来解决您的问题。通过使用定制的数据集提供额外的训练,可以微调预训练模型以满足您的特定需求。这种方法更快,更高效,并且与从头开始构建模型相比,可以实现更好的性能。
在机器学习中,模型是在数据集上训练的。数据样本的大小和类型取决于您想要解决的任务。GPT-3 是在五个数据集的文本语料库上预训练的:Common Crawl,WebText2,Books1,Books2 和 Wikipedia。
Common Crawl
Common Crawl 语料库包含了宠字节的数据,包括原始网页数据、元数据和八年网络爬虫收集的文本数据。OpenAI 研究人员使用这个数据集的策划和过滤版本。
WebText2
WebText2 是 WebText 数据集的扩展版本,是 OpenAI 的一个内部语料库,通过对特别高质量的网页进行抓取而创建。为了确保质量,作者们从 Reddit 抓取了所有至少有三个 karma(指其他用户是否认为链接有趣、教育性或仅仅是有趣)的出站链接。WebText 包含来自这 4500 万个链接的 40 GB 文本,以及 800 多万个文档。
Books1 和 Books2
Books1 和 Books2 是两个语料库,包含了数以万计的各种主题的书籍文本。
维基百科
一个集合,包括GPT-3 数据集最终确定时的所有英语文章。这个数据集大约有580 万英语文章。
这个语料库总共包含近一万亿字。
GPT-3 还能够生成并成功处理英语以外的语言。表 1-1 展示了数据集中排名前十位的其他语言。
|
排名
|
语言
|
文件数量
|
总文档的百分比
|
|
|
英语
|
235987420
|
93.68882%
|
|
|
德语
|
3014597
|
1.19682%
|
|
|
法语
|
2568341
|
1.01965%
|
|
|
葡萄牙语
|
1608428
|
0.63856%
|
|
|
意大利语
|
1456350
|
0.57818%
|
|
|
西班牙语
|
1284045
|
0.50978%
|
|
|
荷兰语
|
934788
|
0.37112%
|
|
|
波兰语
|
632959
|
0.25129%
|
|
|
日语
|
619582
|
0.24598%
|
|
|
丹麦语
|
396477
|
0.15740%
|
表 1-1. GPT-3 数据集中的前十种语言
尽管英语和其他语言之间的差距很大 - 英语位居榜首,占数据集的 93%;德语排名第二,仅占 1% - 但这 1%足以创建德语的完美文本,并进行风格转换和其他任务。对于列表中的其他语言也是一样。
由于 GPT-3 是在广泛而多样的文本语料库上进行预训练的,因此它可以成功地执行令人惊讶的多个 NLP 任务,而无需用户提供任何额外的示例数据。
Transformers模型
神经网络是深度学习的核心,其名称和结构受到了人脑的启发。它们由一组一起工作的神经元组成。神经网络的进展可以增强人工智能模型在各种任务上的性能,导致人工智能科学家不断为这些网络开发新的架构。其中一项进展是转换器,这是一个机器学习模型,可以一次处理一段文本的所有内容,而不是逐个单词处理,并且非常擅长理解这些单词之间的关系。这一发明对自然语言处理领域产生了巨大影响。
序列到序列模型
谷歌和多伦多大学的研究人员在 2017 年的一篇论文中介绍了转换器模型:
我们提出了一种新的简单网络架构,即转换器,它仅基于注意机制,完全摒弃了循环和卷积。对两个机器翻译任务的实验表明,这些模型在质量上优于其他模型,同时更易并行化,需要的训练时间显著减少。[3]
转换器模型的基础是序列到序列架构。序列到序列(Seq2Seq)模型对将一个序列,比如句子中的单词,转换成另一个序列,比如另一种语言中的句子,非常有用。这在翻译任务中特别有效,其中一个语言中的单词序列被翻译成另一种语言中的单词序列。谷歌翻译在 2016 年开始使用基于 Seq2Seq 模型的模型。
图 1-1。序列到序列模型(神经机器翻译)[4]
Seq2Seq 模型由两个组件组成:编码器和解码器。编码器可以被看作是以法语为母语、以韩语为第二语言的翻译人员。解码器则是一位以英语为母语、以韩语为第二语言的翻译人员。要将法语翻译成英语,编码器将法语句子转换为韩语(也称为上下文),然后传递给解码器。由于解码器理解韩语,它可以将句子从韩语翻译成英语。编码器和解码器可以成功地将法语翻译成英语[5],如图 1-1 所示。
转换器注意机制
转换器架构是为了改进人工智能在机器翻译任务上的表现而发明的。“转换器最初是作为语言模型出现的,”基尔彻解释说,“起初并不大,但后来变得更大了。”
要有效地使用转换器模型,了解注意力的概念至关重要。注意机制模仿人脑如何集中注意力于输入序列的特定部分,使用概率确定在每个步骤中哪些部分的序列最相关。
例如,看看这个句子,“猫坐在垫子上,一旦吃掉了老鼠。” 在这个句子中,“it” 是指“猫”还是“垫子”?Transformer 模型可以将 “it” 强烈地与 “猫” 连接起来。这就是注意力。
编码器和解码器共同工作的一个例子是,当编码器记录下与句子含义相关的重要关键词并将其与翻译一起提供给解码器时。这些关键词使得解码器更容易理解翻译,因为它现在更好地理解了句子的关键部分和提供上下文的术语。
Transformer 模型有两种注意力机制:自注意力(句子内单词之间的连接)和编码器-解码器注意力(源句子中的单词与目标句子中的单词之间的连接)。
注意机制帮助 Transformer 模型过滤噪音,聚焦于相关内容:将两个语义关联的单词连接起来,而这些单词之间没有明显的指向彼此的标记。
Transformer 模型受益于更大的架构和更多的数据。在大型数据集上进行训练,并针对特定任务进行微调可以提高结果。相比于其他类型的神经网络,Transformer 更好地理解句子中单词的语境。GPT 只是 Transformer 的解码器部分。
现在你知道“GPT”的含义了,让我们谈谈那个“3”——以及 1 和 2。
GPT-3:简史
GPT-3 由旧金山的人工智能研究先驱 OpenAI 创建,并且是一个重要的里程碑。OpenAI 的 声明任务 是“确保人工智能造福全人类”,以及其创造人工通用智能的愿景:一种不仅限于特定任务,而是在各种任务中表现良好的人工智能类型,就像人类一样。
GPT-1
OpenAI 在 2018 年 6 月发布了 GPT-1。开发者的 主要发现 是将 Transformer 架构与无监督的预训练相结合可以产生有希望的结果。他们写道,GPT-1 经过特定任务的微调,实现了“强大的自然语言理解”。
GPT-1 是通向具有通用语言能力的语言模型的重要里程碑。它证明了语言模型可以被有效地预训练,这可以帮助它们很好地泛化。该架构可以通过极少的微调执行各种自然语言处理任务。
GPT-1 模型使用了BooksCorpus数据集,该数据集包含约 7000 本未发表的书籍,并在Transformers解码器中使用了自注意力机制来训练模型。其架构与原始Transformers相似,有 1.17 亿个参数。该模型为未来具有更大数据集和更多参数的模型利用其潜力铺平了道路。
其中一个值得注意的能力是它在自然语言处理的零样本任务中表现良好,例如问答和情感分析,这要归功于预训练。零样本学习是模型在没有先前看到该任务示例的情况下执行任务的能力。在零样本任务转移中,模型几乎没有例子,必须根据说明和少量例子理解任务。
GPT-2
在 2019 年 2 月,OpenAI 推出了 GPT-2,它比以前的版本更大,但其他方面非常相似。其显著区别在于 GPT-2 可以多任务处理。它成功地 证明 了语言模型可以在不接收任何训练样本的情况下在多个任务上表现良好。
GPT-2 显示,使用更大的数据集并拥有更多的参数可以提高语言模型理解任务的能力,并在零样本设置下超越许多任务的最新技术水平。它还显示,甚至更大的语言模型将更好地理解自然语言。
为了创建一个广泛的、高质量的数据集,作者们从 Reddit 中抓取数据,并从该平台上投票的文章的出站链接中提取数据。得到的数据集,WebText,有超过 8 百万份文档的 40GB 文本数据,远远大于 GPT-1 的数据集。GPT-2 是在 WebText 数据集上进行训练的,有 150 亿个参数,比 GPT-1 多了十倍。
GPT-2 在几个下游任务的数据集上进行了评估,如阅读理解、摘要、翻译和问答。
GPT-3
在建立一个更加强大和稳健的语言模型的探索中,OpenAI 建立了 GPT-3 模型。它的数据集和模型都比 GPT-2 使用的要大两个数量级:GPT-3 有 1750 亿个参数,并且是在五种不同的文本语料库混合数据上进行训练的,这是一个比 GPT-2 训练数据集要大得多的数据集。GPT-3 的架构与 GPT-2 基本相同。它在零样本和少样本设置下在下游自然语言处理任务上表现良好。
GPT-3 具有撰写与人类撰写的文章难以区分的能力。它还可以针对从未明确训练的任务进行即时处理,例如汇总数字、编写 SQL 查询,甚至根据任务的简要英语描述编写 React 和 JavaScript 代码。
注意:少量、一量和零量设置是零样本任务转移的特殊情况。在少量设置中,模型提供了任务描述和适合模型上下文窗口的尽可能多的示例。在一量设置中,模型提供了一个示例,而在零量设置中则没有示例。
OpenAI 在其使命声明中关注 AI 的民主和伦理影响。这可以从他们决定通过公共 API 提供其模型 GPT-3 的第三个版本中看出。应用程序编程接口允许软件中介在网站或应用程序与用户之间进行通信。
API 充当了开发者和应用程序之间通信的手段,使它们能够与用户建立新的程序化交互。通过 API 发布 GPT-3 是一项革命性的举措。直到 2020 年,由领先研究实验室开发的强大 AI 模型仅供少数研究人员和工程师使用。OpenAI API 通过简单的登录,让全世界的用户首次获得了对世界上最强大的语言模型的无与伦比的访问权限。(OpenAI 对此举的商业原因是创建一个称为“模型即服务”的新范式,在其中开发者可以按 API 调用付费;我们将在第三章中更仔细地研究这一点。)
在研发 GPT-3 时,OpenAI 的研究人员尝试了不同的模型大小。他们采用了现有的 GPT-2 架构,并增加了参数数量。实验结果是产生了一种具有新的和非凡能力的模型,即 GPT-3。虽然 GPT-2 在下游任务上显示出了一些零样本能力,但是当提供示例上下文时,GPT-3 能够执行更多的新颖任务。
OpenAI 的研究人员发现令人吃惊的是,仅仅通过扩大模型参数和训练数据集的规模就能取得如此非凡的进步。他们普遍乐观地认为,即使是比 GPT-3 大得多的模型,这些趋势也将继续,从而实现通过对小样本进行微调即可进行少量或零量学习的越来越强大的学习模型。
当您阅读本书时,专家们估计可能已经构建和部署了超过一万亿个基于参数的语言模型。我们已经进入了大型语言模型的黄金时代,现在是您成为其中一员的时候了。
GPT-3 已经吸引了大量的公众关注。《麻省理工科技评论》认为 GPT-3 是2021 年的十项突破技术之一。它在执行通用任务方面的出色灵活性,几乎接近人类的效率和准确性,使人们感到非常激动。作为早期采用者,Arram Sabeti 发推文如下(见图 1-2):
图 1-2. 来自 Arram Sabeti 的推文
API 发布在自然语言处理领域引起了范式转变,并吸引了许多测试者。创新和初创公司以惊人的速度涌现,许多评论者称 GPT-3 为“第五次工业革命”。
OpenAI 表示,API 推出仅九个月后,就有超过三百家企业开始使用它。尽管如此突然,一些专家认为这种兴奋并不夸张。Bakz Awan 是一位从开发者转型为企业家和影响者的人,也是 OpenAI API 开发者社区的主要声音之一。他拥有一个 YouTube 频道“Bakz T. Future” 和一个 播客。Awan 认为,GPT-3 和其他模型实际上“在可用性、友好性、趣味性和强大性方面被低估了。这几乎是令人震惊的。”
Viable 的首席执行官 Daniel Erickson 称赞了该模型通过所谓的基于提示的开发从大型数据集中提取见解的能力:
走上这条道路的公司涵盖了生成广告和网站文案等用例。设计哲学相对简单:公司将您的数据传入,将其发送到提示中,并显示 API 生成的结果。它解决了一个可以由单个 API 提示轻松完成的任务,并将 UI 包装起来传递给用户。
Erickson 觉得这类用例的问题在于已经过度拥挤,吸引了许多雄心勃勃的初创公司创始人竞争相似的服务。相反,Erickson 建议看看另一个用例,就像 Viable 做的那样。基于数据的用例并没有像提示生成用例那样拥挤,但它们更有利可图,而且可以轻松创建一道护城河。
Erickson 表示,关键是建立一个可以不断添加数据并提供潜在见解的大型数据集。GPT-3 将帮助您从中提取有价值的见解。在 Viable,这是让他们轻松实现货币化的模型。“人们为数据付出的比为提示输出付出的多得多,” Erickson 解释道。
值得注意的是,技术革命也会引发争议和挑战。GPT-3 在任何试图创造叙述的人手中都是一个强大的工具。没有充分的关怀和善意意图,我们将面临的挑战之一就是抑制试图使用该算法传播误导性宣传活动。另一个挑战是根除其用于生成大量低质量数字内容的用途,这将污染互联网上的可用信息。还有一个挑战就是其数据集的局限性,这些数据集充满各种偏见,而这些偏见可能会被这项技术放大。在第六章中,我们将更详细地讨论这些挑战以及 OpenAI 为解决这些挑战所做的各种努力。
访问 OpenAI API
截至 2021 年,市场已经生产了几种拥有比 GPT-3 更多参数的专有 AI 模型。然而,对这些模型的访问仅限于公司研发部门内的少数人,这使得不可能评估它们在真实的自然语言处理任务中的性能。
使 GPT-3 变得易于访问的另一个因素是其简单直观的“文本输入,文本输出”用户界面。它不需要复杂的梯度微调或更新,你也不需要是一个专家来使用它。这种可扩展参数与相对开放的访问结合使得 GPT-3 成为迄今为止最令人兴奋的、可能也是最相关的语言模型。
由于 GPT-3 的非凡能力,开源存在着与安全和滥用相关的重大风险,在最后一章中我们将会讨论到—考虑到这一点,OpenAI 决定不公开发布 GPT-3 的源代码,而是通过 API 提出了一个独特的、前所未见的访问共享模式。
公司最初决定以有限的测试版用户列表形式发布 API 访问。人们必须填写一份详细说明其背景和申请 API 访问原因的申请表。只有被批准的用户才被授予对名为 Playground 的 API 私人测试版的访问权限。
在早期,GPT-3 的测试版访问等待列表包含数以万计的人。OpenAI 迅速处理了涌入的申请,并分批添加开发人员。它还密切监测他们对 API 用户体验的活动和反馈,以不断改进。
由于有了保障措施的进展,OpenAI 于 2021 年 11 月取消了等待列表。现在可以通过简单的注册公开访问 GPT-3。这是 GPT-3 历史上的一个重要里程碑,也是社区强烈要求的一步。要获得 API 访问权限,只需到注册页面,注册一个免费帐户,立即开始尝试。。
新用户最初会获得一定数量的免费积分,可以自由地尝试 API。积分数量相当于创作长度为三部普通长度小说的文本内容。使用完免费积分后,用户开始支付使用费用,或者如果有需求的话,可以向 OpenAI API 客户支持请求额外的积分。
OpenAI 致力于确保基于 API 的应用程序的负责任构建。为此,它提供了工具、最佳实践和使用指南,以帮助开发人员快速而安全地将其应用程序投入生产。
公司还创建了内容指南,以明确 OpenAI API 可用于生成哪种类型的内容。为了帮助开发人员确保其应用程序用于预期目的,防止潜在的滥用,并遵守内容指南,OpenAI 提供了免费的内容过滤器。OpenAI 政策禁止将 API 用于违反其宪章中描述的原则的方式,包括宣扬仇恨、暴力或自残的内容,或者意图骚扰、影响政治进程、传播错误信息、发送垃圾内容等。
一旦您注册了 OpenAI 账户,您可以继续阅读第二章,在那里我们将讨论 API 的不同组成部分、GPT-3 游乐场,以及如何针对不同的使用情况最大限度地利用 API 的能力。
第二章:开始使用 OpenAI API
尽管 GPT-3 是世界上最复杂和复杂的语言模型,但其功能被抽象为简单的“文本输入-文本输出”接口提供给最终用户。本章将帮助您开始使用该接口、Playground,并深入涵盖 OpenAI API 的技术细微差别,因为细节总是揭示真正的宝石。
要完成本章的学习,您必须在https://beta.openai.com/signup注册 OpenAI 帐户。如果您还没有这样做,请现在注册。
OpenAI Playground
您的 OpenAI 开发人员帐户提供对 API 和无限可能性的访问。我们将从 Playground 开始,这是一个私人基于 Web 的沙箱环境,让您可以尝试 API,了解其组件的工作原理,并访问开发人员文档和 OpenAI 社区。然后,我们将向您展示如何构建强大的提示,以生成应用程序的良好回应。最后,本章将演示 GPT-3 执行四项自然语言处理任务的示例:分类、命名实体识别(NER)、摘要和文本生成。
在与 OpenAI 产品副总裁彼得·韦琳德进行的一次采访中,我们问及了关于首次使用 Playground 的关键建议。他告诉我们,他的建议取决于用户的角色。如果用户具有机器学习背景,彼得鼓励他们“首先忘记他们已经知道的事情,然后只需前往 Playground 并尝试让 GPT-3 做到你要求的事情”。他建议用户“想象 GPT-3 是你要求做某事的朋友或同事。你会如何描述你想让他们做的任务?然后看看 GPT-3 如何回应。如果它的回应不符合你的期望,就调整你的指示。”
正如 YouTube 博主和 NLP 影响者Bakz Awan所说,“非技术人员会问:我需要学位才能使用吗?我需要懂编程才能使用吗?绝对不需要。您可以使用 Playground。您无需编写一行代码。您将立即获得结果。任何人都可以做到这一点。”
在您开始使用 Playground 之前,我们建议阅读 OpenAI 的“入门指南”和开发人员文档。您可以使用您的 OpenAI 帐户访问它。
以下是开始使用 Playground 的步骤:
-
登录 https://openai.com。身份验证后,从主菜单中转到 Playground。
-
查看 Playground 屏幕(图 2-1)。
● 标记为 1 的大文本框是您提供文本输入(提示)的位置。
● 标记为 2 的右侧框是参数设置窗格,允许您调整参数。
● 标记为 3 的框允许您加载现有的预设:示例提示和 Playground 设置。您可以提供您的培训提示或加载现有的预设。
图 2-1. Playground 界面,截图于 2022 年 1 月 10 日
-
选择一个现有的 QA 预设(标记为 3)。这将自动加载训练提示以及关联的参数设置。点击生成按钮(见图 2-1 中的标记 4)。
-
API 处理您的输入,并在同一文本框中提供响应(称为完成)。它还显示您所使用的令牌数量。令牌是用于确定 API 调用定价的单词的数值表示;我们将在本章后面讨论它们。
-
在屏幕底部,您可以看到右侧的令牌计数,左侧是一个生成按钮(见图 2-2)。
图 2-2. Q/A 提示完成及标记令牌计数
- 每次您点击生成按钮时,GPT-3 都会考虑文本输入字段中的提示和完成,并将它们视为下一个完成的一部分。
这是您在图 2-2 中可以看到的提示:
我是一个高度智能的问答机器人。如果您问我一个根植于真相的问题,我会给您答案。如果您问我一个荒谬、欺诈或没有明确答案的问题,我会回答“未知”。
Q:美国的人类预期寿命是多少?
A:美国的人类预期寿命为 78 岁。
Q:1955 年美国总统是谁?
A:1955 年,德怀特·D·艾森豪威尔担任美国总统。
Q:他属于哪个政党?
A:他属于共和党。
Q:香蕉的平方根是多少?
A:未知
Q:望远镜是如何工作的?
A:望远镜使用透镜或镜子聚焦光线,使物体看起来更近。
Q:1992 年奥运会在哪里举行?
这是完成:
A:1992 年奥运会在西班牙的巴塞罗那举办。
现在你已经了解了 Playground 的基本概述,让我们深入了解一下提示工程和设计的要点。
提示工程与设计
OpenAI API 彻底改变了我们与 AI 模型互动的方式,剥离了复杂的编程语言和框架。特斯拉人工智能主管安德烈·卡帕西(Andrej Karpathy)开玩笑地说,GPT-3 发布后,编程 3.0 全部都是关于提示设计的(他发布的梗见图 2-3)。您提供的训练提示与您获得的完成质量之间存在直接关系。您的词汇结构和排列方式会严重影响输出。理解提示设计是释放 GPT-3 真正潜力的关键。
图 2-3. 梗源未知;安德烈·卡帕西在 2020 年 6 月 18 日推文
在设计训练提示时,要以零追问的方式获取模型的响应:看看你是否能在无需向模型提供外部训练例子的情况下获得你想要的响应。如果不能,那么请向模型展示一些例子,而不是整个数据集。设计训练提示的标准流程是首先尝试零追问,然后尝试一些追问,并进行基于语料库的精细调整(如下所述)。
GPT-3 是通往通用人工智能的第一步,因此它有其局限性。它不知道所有事情,也无法像人类一样思考,但当你知道如何与它交流时,它很有能力。这就是提示工程的艺术所在。
GPT-3 不是一个讲真话的人,而是一个出色的讲故事者。它接受文本输入并尝试以它认为最好的方式作出回应。如果你给它你最喜欢的小说中的几行文字,它会试图以相同的风格继续故事。它通过理解上下文来进行工作;没有合适的上下文,它可能产生不一致的回应。让我们通过一个例子来了解 GPT-3 如何处理输入提示并生成输出:
Q: 美国的人类预期寿命是多少?
A:
如果你向 GPT-3 提供这样的提示而没有任何上下文,你要求它从其训练数据的范围中寻找一般性的答案。这将导致一般化和不一致的回应,因为模型不知道如何从训练数据的哪一部分中回答这些问题。[6]
另一方面,提供正确的上下文将指数级地提高回应的质量。它简单地限制了模型必须检查来回答问题的训练数据的范围,从而产生更具体和点到为止的回应。
我是一个非常聪明的答疑机器人。如果你问我一个根植于事实的问题,我会给你答案。如果你问我一个毫无意义、诡计多端或者没有明确答案的问题,我会回答“未知”。
Q: 美国的人类预期寿命是多少?
A:
你可以把 GPT-3 处理输入的方式想象成类似于人脑。在没有合适上下文的情况下,当有人问我们问题时,我们往往会给出随机的回应。这是因为没有合适的指引或上下文,很难给出精确的回应。GPT-3 也是一样的情况。它的训练数据范围非常大,这使得它在没有外部上下文或指引的情况下很难导航到正确的响应。
像 GPT-3 这样的语言模型能够在正确的上下文中创造性地写作和回答事实性问题。以下是我们创建高效有效的训练提示的五步公式:
1. 确定你要解决的问题以及这是什么类型的自然语言处理任务,比如分类、问答、文本生成或创意写作。
2. 问问自己是否有零追问解决方案。如果你需要外部示例来为你的使用案例引导模型,就要认真思考。
3. 现在考虑一下,通过 GPT-3 的“文本输入,文本输出”界面,您可能如何以文本方式遇到问题。考虑表示问题的所有可能情景。例如,您想构建一个广告文案助手,它可以通过查看产品名称和描述来生成创意文案。要将此目标框定为“文本输入,文本输出”格式,您可以将输入定义为产品名称和描述,输出为广告文案:
输入:贝蒂自行车,适用于价格敏感的购物者
输出:低价和丰富选择。免费快速送货。今天在线订购!
4. 如果您最终使用外部示例,请尽可能少地使用,并尝试包含多样性,捕捉所有表示以避免过度拟合模型或偏倚预测。
这些步骤将成为每当您从头开始创建培训提示时的标准框架。在您可以为您的数据问题构建端到端解决方案之前,您需要更多了解 API 的工作方式。让我们通过查看其组件来深入了解。
拆解 OpenAI API
图 2-4. API 的组件
表格 2-1 显示了 OpenAI API 中组件的概述。
|
组件
|
功能
|
|
执行引擎
|
确定用于执行的语言模型
|
|
响应长度
|
设置 API 在其完成中包含的文本量的限制
|
|
温度和 Top P
|
温度控制响应的随机性,表示为 0 到 1 的范围。
Top P 控制模型应考虑的随机结果数量,正如
温度;它决定了随机性的范围。
|
|
频率惩罚和
存在惩罚
|
频率惩罚减少了模型完全重复相同行的可能性
“惩罚”它。
存在惩罚增加了它谈论新话题的可能性。
|
|
最佳完成
|
允许您指定要在服务器端生成的完成数量(n),并返回“n”个完成中的最佳完成
|
|
停止序列
|
指定一组字符,表示 API 停止生成完成
|
|
注入起始和重启
文本
|
注入起始文本允许您在完成的开头插入文本。
注入重启文本允许您在完成的末尾插入文本。
|
|
显示概率
|
通过显示模型可以为给定输入生成的令牌的概率来调试文本提示。
|
表 2-1. OpenAI API 中的组件
这是 GPT-3 API 组件的概述。我们将在整章中更详细地讨论所有这些组件。
执行引擎
执行引擎决定了用于执行的语言模型。选择正确的引擎是确定模型能力并获得正确输出的关键。GPT-3 具有四种不同尺寸和能力的执行引擎:达芬奇、艾达、巴贝奇和居里。达芬奇是最强大的,也是 Playground 的默认引擎。
响应长度
响应长度限制了 API 在其完成中包含的文本量。因为 OpenAI 根据每次 API 调用生成的文本长度收费(值得注意的是,这被转换为标记或单词的数值表示),响应长度对于预算有限的任何人来说都是至关重要的参数。较高的响应长度将使用更多的标记并且成本更高。例如,假设您做一个分类任务。在这种情况下,将响应文本调节器设置为 100 不是一个好主意:API 可能会生成无关的文本并使用额外的标记,这将导致您的账户产生费用。 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 的位置。
大型语言模型依赖概率方法而不是传统逻辑。根据您设置模型的参数方式,它们可以为相同的输入生成各种响应。模型试图在其被训练的数据宇宙中找到最佳的概率匹配,而不是每次寻求完美的解决方案。
正如我们在第一章中提到的,GPT-3 的大量训练数据宇宙包括各种公开可用的书籍,互联网论坛和由 OpenAI 专门策划的维基百科文章,使其能够根据提示生成各种完成。这就是温度和 Top P,有时被称为“创造力旋钮”的地方:您可以调整它们以产生更自然或抽象的响应,并带有一些俏皮的创造力。
假设你要使用 GPT-3 为你的创业公司创建名字。你可以将温度设置更高以获得最有创意的回应。当我们日日夜夜地努力想出我们创业公司的完美名称时,我们拨动了温度。GPT-3 挺身而出,帮助我们找到了一款我们喜欢的名字:Kairos Data Labs。
在其他情况下,你的任务可能需要很少或没有创造力:例如分类和问答任务。对于这些任务,要将温度设置较低。
让我们看一个简单的分类例子,根据他们的名字将公司分为常规的类别或类别。
图 2-5. 温度组件
正如您在图 2-5 中所看到的,我们再次使用温度来控制随机程度。您也可以通过更改 Top P 来实现此目的,同时将温度旋钮设置为 1。
频率和存在惩罚
就像温度和 Top P 旋钮一样,频率惩罚和存在惩罚旋钮考虑文本提示(先前完成加上新的输入)而不是内部模型参数来决定输出。现有文本因此会影响新的完成。频率惩罚通过“惩罚”来减少模型重复相同行的可能性。存在惩罚增加了它会谈论新主题的可能性。
这在防止完全完成文本在多个完成中重复出现时非常有用。虽然这些刻度类似,但有一个关键区别。如果建议的文本输出重复(例如,模型在以前的完成中使用了相同的标记或在同一会话期间选择旧的输出),则应用频率惩罚。如果一个标记在给定文本中存在,则应用存在惩罚。
最佳
GPT-3 使用最佳功能在服务器端生成多个完成,并在幕后评估它们,然后为您提供最佳的概率结果。使用“最佳”参数,您可以指定在服务器端生成的完成次数(n)。模型将返回 n 次完成中的最佳完成(每个标记的对数概率最低的那个)。
这使您可以在单个 API 调用中评估多个提示完成,而不是重复调用 API 来检查相同输入的不同完成的质量。但是,“最佳”使用是昂贵的:它的成本是输入提示中的标记的 n 倍。例如,如果您将“最佳”值设置为 2,那么您将被收取输入提示中标记数量的两倍,因为在后台,API 将生成两个完成,并显示给您最佳的一个。
“最佳”值可以从 1 到 20 不等,具体取决于您的用例。如果您的用例为客户提供需要一致质量的输出,那么可以将“最佳”值设为更高的数字。另一方面,如果您的用例涉及太多的 API 调用,那么将“最佳”值设为更低的数字可以避免不必要的延迟和成本。我们建议在使用“最佳”参数生成多个提示时,尽量保持响应长度最小,以避免额外收费。
停止序列
停止序列是一组字符,用于通知 API 停止生成完成。这有助于避免不必要的标记,是常规用户不可或缺的节省成本的功能。
您可以为 API 提供最多 4 个序列,以停止生成进一步的标记。
让我们来看看图 2-6 中的示例语言翻译任务,以了解停止序列的工作原理。在这个示例中,英文短语被翻译成法语。我们使用重新启动序列“English:”作为停止序列:每当 API 遇到该短语时,它将停止生成新的标记。
图 2-6. 停止序列组件
注入开始文本和注入重新启动文本
注入起始文本和注入重启文本参数允许您分别在完成的开头或结尾插入文本。您可以使用它们来保持所需的模式。通常,这些设置与停止序列一起工作,就像我们的示例中一样。提示具有模式,其中提供了一个带有前缀“英语:”(重启文本)的英语句子,并且生成的翻译输出具有前缀“法语:”(起始文本)。因此,任何人都可以轻松区分两者,并创建一个模型和用户都可以清楚理解的训练提示。
每当我们为这样的提示运行模型时,模型会自动在输出前注入一个起始文本“法语:”,在下一个输入前注入一个重启文本“英语:”,以便保持这种模式的持续性。
展示概率
“显示概率”参数位于 Playground 设置窗格的底部。在传统软件工程中,开发人员使用调试器来调试一段代码。您可以使用“显示概率”参数来调试您的文本提示。每当您选择此参数时,将会看到突出显示的文本。将鼠标悬停在上面,将显示一个列表,其中包含模型可以为特定指定输入生成的标记,以及它们各自的概率。
您可以使用此参数来检查您的选项。此外,它可以使更有效的替代方案更容易看到。 “显示概率”参数有三个设置:
最有可能
按概率降序列出最可能用于完成的标记。
最不可能
按概率降序列出最不可能用于完成的标记。
完整频谱
显示可以选择用于完成的所有标记的完整宇宙。
让我们在简单提示的上下文中查看此参数。我们想要以简单、众所周知的短语“从前有个人”开始输出句子。我们向 API 提供提示“从前有个” ,然后在显示概率选项卡中选择最有可能选项。
如图 2-7 所示,它生成“时间”作为响应。因为我们将“显示概率”参数设置为“最有可能”,所以 API 指示响应和可能的选项列表以及它们的概率。
现在您已经有了一个概述,让我们更详细地查看这些组件。
图 2-7. 展示概率组件显示最可能的标记
执行引擎
如图 2-7 所示,OpenAI API 提供了四种不同的执行引擎,通过参数和性能能力区分。执行引擎驱动 OpenAI API。它们作为“autoML”解决方案,提供自动化的 ML 方法和流程,使机器学习对非专家可用。它们易于配置,并适应给定的数据集和任务。
这四个主要的执行引擎按照字母顺序以著名科学家命名:艾达(以艾达·洛夫莱斯命名)、巴贝奇(以查尔斯·巴贝奇命名)、居里(以玛丽·居里夫人命名)和达芬奇(以莱昂纳多·达·芬奇命名)。让我们深入了解每个执行引擎,以便了解在使用 GPT-3 时何时使用哪个执行引擎:
达芬奇
达芬奇是最大的执行引擎,在您首次打开 Playground 时是默认选项。它可以做任何其他引擎可以做的事情,通常需要更少的指令并获得更好的结果。然而,这样做的代价是每次 API 调用的成本更高,而且比其他引擎更慢。您可能希望使用其他引擎来优化成本和运行时间。
提示:我们建议从达芬奇开始,因为它在测试新想法和提示时具有卓越的能力。尝试达芬奇是了解 API 能做什么的好方法。随着您对问题陈述的理解逐渐加深,您可以逐渐降低预算和运行时间以优化。一旦您确定了想要实现的目标,您可以选择继续使用达芬奇(如果成本和速度不是问题)或转向居里或其他成本较低的引擎,并尝试根据其能力优化输出。您可以使用OpenAI 的比较工具生成一个 Excel 电子表格,比较引擎的输出、设置和响应时间。
达芬奇应该是您处理需要理解内容的任务的首选,比如总结会议记录或生成创意广告文案。它擅长解决逻辑问题并解释虚构角色的动机。它可以编写故事。达芬奇也已经能够解决一些涉及因果关系的最具挑战性的 AI 问题。[7]
居里
居里旨在找到功率和速度之间的最佳平衡,这对于执行大规模分类或将模型投入生产等高频任务非常重要。
居里也非常擅长回答问题、执行问答和作为通用聊天机器人。例如,如果您构建了一个客服聊天机器人,您可能会选择居里来更快地处理高流量请求。
当涉及分析复杂文本时,达芬奇更擅长,而居里则能以低延迟和闪电般的速度执行任务。在选择在生产中使用达芬奇而不是居里之前,理清您的用例并进行成本效益分析总是明智的。
巴贝奇
巴贝奇比居里更快,但不能执行涉及理解复杂意图的任务。然而,它非常能干,且在语义搜索排名和分析文档与搜索查询匹配程度方面表现出色。它比居里和达芬奇便宜,并且在涉及频繁 API 调用的简单问题上更受欢迎。
艾达
Ada 是所有可用引擎中速度最快且价格最低的。它可以执行一些不需要细致理解上下文的简单任务,比如解析文本、纠正语法或简单分类。通过在输入中提供更多上下文,通常可以改善 Ada 的性能。Ada 可以成为频繁调用 API 的使用案例的首选模型,因为它可以通过合适的设置实现与更大模型类似的结果。您对 API 参数进行的实验越多,就越能理解哪些设置适用于您的使用案例。
指令系列
基于四个主要模型,OpenAI 推出了一系列InstructGPT 模型,它们在理解说明并遵循说明方面比原始的 GPT-3 更好,同时 less toxic and more truthful。它们是使用 OpenAI 对齐研究中的技术进行开发的。这些模型是在人类参与的情况下进行训练的,现在已经作为 OpenAI API 的默认语言模型部署。
图 2-8. InstructGPT Davinci 生成的输出
图 2-9. GPT Davinci 生成的输出
我们的输入:
“为一个 5 岁的孩子写一个关于人工智能的故事。”
InstructGPT 输出:
“机器人非常快乐。他刚刚出生,他已经是世界上最聪明的机器人了。他可以做任何其他机器人能做的事情,但他也可以为自己思考。”
GPT 输出:
“这个项目是尝试制造一个能够产生虚构故事的 AI。这是一个正在进行中的工作。虚构性这个项目的目标是创建一个可以创作虚构故事的 AI。”
为了使构建提示的过程更加高效,OpenAI 决定公开启动 text-davinci-001、text-curie-001、text-babbage-001 和 text-ada-001。通过清晰的说明,这些模型可以产生比它们的基本版本更好的结果,并且现在是 API 的默认模型 。这个系列对于弥合人类思维方式和模型操作方式之间的差距具有重要意义。
TIP: 我们建议将这个模型系列作为您所有与文本相关的任务的默认选择。GPT-3 模型的基本版本包括 davinci、curie、babbage 和 ada,它们的使用适用于微调、搜索、分类和答案终端。
终端点
游乐场是一个图形化的 web 接口,它在幕后调用 OpenAI API,但还有其他一些调用 API 的方式。为此,您需要熟悉其终端点:即在调用时来回通信的远程 API。本节将使您熟悉六个 API 终端点的功能和用法。
列出引擎
列出引擎端点,也称为“元数据 API”,提供了可用引擎的列表以及与每个引擎相关的特定元数据,例如所有者和可用性。要访问它,您可以使用 HTTP GET 方法命中以下 URI,而无需传递任何请求参数:
GET https://api.openai.com/v1/engines
检索引擎
当您向检索引擎端点提供引擎名称时,它将返回有关该引擎的详细元数据信息。要访问,请使用 HTTP GET 方法命中以下 URI,而无需传递任何请求参数:
GET api.openai.com/v1/engines/{engine_id
}
完成
完成是 GPT-3 最著名和广泛使用的端点。它只需将文本提示作为输入,并将完成的响应作为输出返回。它使用 HTTP POST 方法,并且作为 URI 路径的一部分需要一个引擎 ID。作为 HTTP Body 的一部分,完成端点接受在前一节中讨论的几个附加参数。其签名是:
POST https://api.openai.com/v1/engines/{engine_id}/completions
语义搜索
语义搜索端点使您能够提供自然语言查询以搜索一组文档,这些文档可以是单词、句子、段落,甚至更长的文本。它将根据文档与输入查询的语义相关性对文档进行评分和排名。例如,如果您提供文档[“学校”、“医院”、“公园”]和查询"医生",则每个文档将获得不同的相似性分数。
相似性分数是一个正分数,通常范围从 0 到 300(但有时可能更高),其中分数超过 200 通常表示文档在语义上与查询相似。相似性分数越高,文档与查询的语义相似性就越高(在此示例中,“医院”将与“医生”最相似)。您可以作为 API 请求的一部分提供最多 200 个文档。
以下是语义搜索端点的签名:
POST api.openai.com/v1/engines/{engine_id}/search
文件
文件端点可以用于不同的端点,如答案、分类和语义搜索。它用于将文档或文件上传到 OpenAI 存储,该存储可通过 API 功能访问。相同的端点可以使用不同的签名来执行以下任务:
列出文件
它简单地返回属于用户组织或链接到特定用户帐户的文件列表。这是一个 HTTP GET 调用,不需要传递任何请求参数。
GET https://api.openai.com/v1/files
上传文件
用于上传包含要在各种端点中使用的文档的文件。它将文档上传到 OpenAI 为用户组织分配的内部空间。它是一个需要将文件路径添加到 API 请求中的 HTTP POST 调用。
POST https://api.openai.com/v1/files
检索文件
仅通过提供文件 ID 作为请求参数即可返回关于特定文件的信息。以下是 Retrieve 端点的签名:
GET https://api.openai.com/v1/files/{file_id}
删除文件
通过提供文件作为请求参数来删除特定文件。以下是 Delete 端点的签名:
DELETE https://api.openai.com/v1/files/{file_id}
嵌入
API 的另一个实验性端点是嵌入。嵌入是任何机器学习模型的核心,并允许通过将其转换为高维向量从文本中捕获语义。目前,开发人员倾向于使用开源模型,如 BERT 系列,为其数据创建嵌入,这些数据可以用于各种任务,如推荐、主题建模、语义搜索等。
OpenAI 发现 GPT-3 具有驱动基于嵌入的用例并产生最先进结果的巨大潜力。为输入数据生成嵌入向量非常简单,只需通过 API 调用即可包装。要创建代表输入文本的嵌入向量,您可以使用以下 API 签名:
POST api.openai.com/v1/engines/{engine_id}/embeddings
要调用嵌入端点,您可以根据您的用例选择引擎类型,参考嵌入文档。每个引擎都有其特定的嵌入维度,Davinci 是最大的,而 Ada 是最小的。所有嵌入引擎都是从四个基本模型派生出来的,并根据用例进行分类,以允许高效和经济实惠的使用。
定制 GPT-3
OpenAI 的研究论文“适应社会的语言模型过程(PALMS)与面向价值的数据集”由 Irene Solaiman 和 Christy Dennison(2021 年 6 月)领导公司推出了一个首创的微调端点,该端点允许您定制模型以符合您特定的用例,从而使您能够从 GPT-3 中获得比以前更多的东西。定制 GPT-3 可以提高 GPT-3 能够执行的任何自然语言任务在您特定用例中的性能。
让我们首先解释它是如何工作的。
OpenAI 以半监督方式在一个 特别准备的数据集 上对 GPT-3 进行了预训练。当只提供了几个示例的提示时,它通常能直觉到你试图执行的任务,并生成一个合理的完成。这被称为"少样本学习",正如你在第一章中学到的。
通过在自己的数据上微调 GPT-3,用户可以创建一个根据其特定项目需求定制的模型版本。这种定制化使 GPT-3 在各种用例中更可靠和高效。微调模型涉及调整它以便始终以期望的方式执行。这可以使用任何大小的现有数据集完成,也可以根据用户反馈逐步添加数据完成。
调整模型的过程将专注于使模型的知识和能力集中于用于训练的数据的内容和语义,这将限制它可以生成的主题范围和创造力。对于需要专业知识的后续任务,如分类内部文件或处理内部行话,这可能很有用。对模型进行微调还将注意力集中在用于训练的具体数据上,限制其整体知识库。
一旦模型经过微调,就不再需要提示中的示例,这可以节省成本,并提高输出的速度和质量。以这种方式定制化 GPT-3 似乎比仅使用提示设计更有效,因为它可以使用更多的训练示例。
少于 100 个示例,你就可以开始看到微调模型的好处。随着添加更多数据,其性能将继续提高。在 PALMS 研究论文中,OpenAI 展示了如何使用少于 100 个示例进行微调可以提高模型在许多任务上的性能。他们还发现,将示例数量翻倍往往会线性提高输出的质量。
通过定制化 GPT-3 可以提高其输出的可靠性,并提供更一致的结果,可应用于生产用例。现有的 OpenAI API 客户发现,定制化 GPT-3 可以大大减少不可靠输出的频率 - 有越来越多的客户可以凭借他们的性能数据为此作证。
应用程序由定制化 GPT-3 模型提供支持
Keeper Tax 帮助独立承包商和自由职业者处理他们的税务。它使用各种模型来提取文本并分类交易,然后识别易被忽视的税务减免,从而帮助客户直接从应用程序中申报税款。通过定制化 GPT-3,Keeper Tax 的准确度由 85%提高到 93%。并且由于每周向他们的模型添加 500 个新的训练示例,所以它不断改进,导致每周约 1%的准确度提高。
Viable 帮助公司从客户反馈中获得洞察。通过定制 GPT-3,Viable 能够将海量非结构化数据转化为可读的自然语言报告。定制 GPT-3 提高了 Viable 报告的可靠性。通过使用定制版 GPT-3,总结客户反馈的准确性从 66%提高到 90%。要深入了解 Viable 的旅程,请参阅我们在第四章对 Viable 首席执行官的采访。
Sana Labs 是 AI 在学习领域开发和应用方面的全球领先者。他们的平台利用最新的机器学习突破技术为企业提供个性化学习体验。通过使用他们的数据定制 GPT-3,Sana 的问题和内容生成从语法正确但一般化的回答变得高度准确。这带来了 60%的改进,为他们的用户提供了更个性化的体验。
Elicit 是一个 AI 研究助手,可以使用学术论文的发现直接回答研究问题。助手从大量研究论文中找到最相关的摘要,然后应用 GPT-3 生成有关问题的论文所做声明。定制版 GPT-3 在三个方面优于提示设计,分别是结果更易于理解 24%,准确性提高了 17%,整体表现提高了 33%。
如何为您的应用定制 GPT-3
要开始,只需使用 OpenAI 命令行工具和您选择的文件。您的个性化版本将立即开始训练,并可立即通过我们的 API 访问。
从非常高的层面来看,为您的应用定制 GPT-3 包括以下三个步骤:
● 准备新的训练数据并将其上传到 OpenAI 服务器
● 使用新的训练数据对现有模型进行微调
● 使用经过微调的模型
准备并上传训练数据
训练数据是模型用作微调的输入。您的训练数据必须是一个 JSONL 文档,其中每一行都是一个与训练示例对应的提示-完成对。对于模型的微调,您可以提供任意数量的示例,强烈建议创建一个以价值为目标的数据集,以向模型提供优质且广泛代表性的数据。通过提供更多示例进行微调可以改进性能,因此您提供的示例越多,结果就会更好。
您的 JSONL 文档应该长这样:
{“prompt”: “<提示文本>”, “completion”: “<理想生成的文本>”}
{“prompt”: “<提示文本>”, “completion”: “<理想生成的文本>”}
{“prompt”: “<提示文本>”, “completion”: “<理想生成的文本>”}
…
在提示文本中,应包括您要完成的确切提示文本,而理想生成的文本应包括您希望 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)。运行此命令会执行几个操作:
● 使用文件端点上传文件(如本章前述);
● 使用命令中的请求配置精调模型;
● 流式传输事件日志,直到完成精调作业为止。
日志流式传输有助于实时了解发生的情况,并在发生任何事件/故障时做出响应。流式传输可能需要几分钟到几小时,具体取决于队列中的作业数量和您的数据集大小。
使用精调模型
一旦模型成功进行了精调,您就可以开始使用它!您现在可以将此模型指定为完成端点的参数,并使用 Playground 向其发出请求。
提示:在精调作业完成后,您的模型可能需要几分钟才能准备好处理请求。如果向您的模型发出的完成请求超时,则可能是因为您的模型仍在加载中。如果出现此情况,请稍后再试。
您可以通过以下命令将模型名称作为完成请求的模型参数来开始发出请求:
openai api completions.create -m <FINE_TUNED_MODEL> -p <YOUR_PROMPT>
FINE_TUNED_MODEL 是您的模型名称,YOUR_PROMPT 是您想要在此请求中完成的提示。
您可以继续在这些请求中使用本章讨论的所有完成端点参数,如温度、频率惩罚、存在惩罚等,也可以将这些请求用于新精调的模型。
注意:在这些请求中未指定引擎。这是预期的设计,也是 OpenAI 打算在将来标准化其他 API 端点的内容。
更多信息,请参阅 OpenAI 的精调文档。
Tokens
在深入了解不同提示如何消耗令牌之前,让我们更仔细地看一下令牌是什么。
我们告诉过你,标记是单词或字符的数值表示。使用标记作为标准度量,GPT-3 可以处理从几个词到整个文档的训练提示。
对于普通英文文本,1 个标记大约包含 4 个字符。这大致相当于 ¾ 个单词,因此 100 个标记大约包含 75 个单词。作为参考,莎士比亚的全部作品大约有 900,000 个词,大致翻译为 1.2M 个标记。
为了保持 API 调用的延迟,OpenAI 对提示和完成设置了 2,048 个标记(约 ~1,500 个词)的限制。
为了进一步理解标记在 GPT-3 上是如何计算/消耗的,并且要在 API 设置的限制内,让我们为你介绍以下几种衡量标记计数的方式。
在 Playground 中,当你在界面中输入文本时,你可以在右下角的页脚实时看到标记计数的更新。它显示在点击提交按钮后文本提示将要消耗的标记数量。你可以使用它来监视每次与 Playground 交互时的标记消耗(参见图 2-10)。
图 2-10. Playground 中的 Token 计数
衡量标记消耗的另一种方法是使用显式的 GPT-3 分词器工具(见图 2-11),它让你可以可视化地看到标记是如何从单词字符中形成的。你可以通过一个简单的文本框与分词器工具交互,在那里你写下提示文本,分词器会显示给你标记和字符的计数以及详细的可视化。
图 2-11. OpenAI 的分词器
为了在 API 调用中集成标记计数度量到不同端点,你可以在 API 请求中一并传递 logprobs 和 echo 属性,以获取已消耗的标记的完整列表。
在接下来的部分中,我们将介绍如何基于不同执行引擎定价标记。
定价
在上一节中,我们谈论了标记,它是 OpenAI 用来确定 API 调用定价的最小可交换单位。标记比测量训练提示中使用的单词或句子数量具有更大的灵活性,由于标记的极端细粒度,因此可以轻松处理并用于测量广泛范围的训练提示的定价。
每次从 Playground 或以编程方式调用 API 时,API 在后台计算训练提示和生成的完成中使用的标记数,并根据使用的标记总数收取每次调用的费用。
OpenAI 通常按每 1,000 个标记收取固定费用,费用取决于 API 调用中使用的执行引擎。Davinci 是最强大和最昂贵的,而 Curie、Babbage 和 Ada 则更便宜和更快。
表 2-2 显示了本章撰写时(2022 年 12 月)各种 API 引擎的定价。
|
模型
|
每 1k 令牌的价格
|
|
达芬奇(最强大的)
|
$0.0200
|
|
居里
|
$0.0020
|
|
巴贝奇
|
$0.0005
|
|
艾达(最快的)
|
$0.0004
|
表 2-2. 模型定价
该公司采用“按需付费”的云计价模式。有关最新价格,请查看在线定价计划。
OpenAI 提供了报告仪表板,用于监控每日累积令牌使用情况,而不是监视每个 API 调用的令牌。根据你的使用情况,它可能看起来像图 2-12。
图 2-12. API 使用仪表板
在图 2-12 中,你可以看到一个条形图,显示了来自 API 使用的每日令牌消耗量。该仪表板帮助你监控组织的令牌使用情况和定价。这有助于你调节 API 使用量,并保持预算内。还有一个选项可以监控累积使用量和每个 API 调用的令牌计数的细分。这应该给你足够的灵活性来围绕令牌消耗和定价为你的组织制定政策。现在你已经了解了 Playground 和 API 的方方面面,我们将看一下 GPT-3 在典型语言建模任务中的表现。
小贴士:对于刚开始使用 GPT-3 并且发现很难理解令牌消耗的初学者。许多用户输入了过长的提示文本,导致信用额度的过度使用,随后是不计划的费用。为了避免这种情况,在你的初始阶段尝试使用 API 仪表板观察令牌的消耗数量,并查看提示文本和完成的长度如何影响令牌使用情况。这可以帮助你防止信用额度的不受控制使用,并保持一切在预算范围内。
GPT-3 在标准 NLP 任务上的表现
GPT-3 是 NLP 领域的高度先进和复杂的继任者,使用核心 NLP 方法和深度神经网络构建和训练。对于任何基于 AI 的建模方法,模型性能都是通过以下方式评估的:首先,你使用训练数据为特定任务(如分类、问答、文本生成等)训练模型;然后,你使用测试数据(未见数据)验证模型性能。
类似地,有一套标准的 NLP 基准用于评估 NLP 模型的性能,并提供相对模型排名或比较。这种比较或相对排名,允许你为特定的 NLP 任务(业务问题)选择最佳模型。
在本节中,我们将讨论 GPT-3 在一些标准 NLP 任务中的表现,如图 2-13 所示,并将其与相似模型在相应 NLP 任务中的表现进行比较。
图 2-13. 传统的 NLP 任务
文本分类
NLP 强力文本分类涉及使用算法自动分析文本,并根据其上下文将其分配到预定义的类别或标签中。这个过程有助于组织和分类文本到相关的组。
文本分类涉及分析提供的文本并为其分配标签、分数或其他表征文本的属性。一些常见的文本分类例子包括情感分析、主题标注、意图检测等。你可以采用多种方法让 GPT-3 对文本进行分类,从零样本分类(不向模型提供任何示例)到单样本和少样本分类(向模型展示一些示例)都可以。
零样本分类
现代人工智能长期以来一直致力于开发能够在从未见过的数据上执行预测功能的模型。这一重要的研究领域被称为零样本学习。同样,零样本分类是一种分类任务,模型在对文本进行分类时无需进行先前的训练和在标记数据上的微调。GPT-3 目前为未见过的数据生成的结果要么优于要么与针对该特定目的进行微调的最先进的 AI 模型持平。为了使用 GPT-3 进行零样本分类,我们必须提供一个兼容的提示。在第二章中,我们将讨论提示工程。
这里是一个零样本分类的例子,目标是执行事实核对分析,以确定推文中包含的信息是否正确。图 2-14 展示了基于零样本示例的相当令人印象深刻的信息正确性分类结果。
图 2-14。零样本分类示例
这是我们的提示:
以信息正确性为标准分析推文。
推文:“全球超过 50% 的科学家不相信气候变化。”
分析:
并且输出为:
这条推文是错误的。
单样本和少样本文本分类
文本分类的另一种方法是通过在少量或单个训练示例上对 AI 模型进行微调,也称为单样本或少样本文本分类。当你提供如何对文本进行分类的示例时,模型可以根据你提供的样本学习对象类别的信息。这是零样本分类的超集,允许你通过向模型提供三到四个多样化的示例来对文本进行分类。这特别适用于需要一定程度上下文设置的下游用例。
让我们来看一个少样本分类的例子。我们要求模型执行推文情感分析分类,并给出三个推文示例来说明每个可能的标签:积极的、中立的和消极的。正如你在图 2-15 中所看到的,配备了这样详细的上下文的模型,基于少量示例,能够非常轻松地执行下一个推文的情感分析。
注意:当你从书中重新创建提示示例或创建你自己的示例时,确保在你的提示中有足够的行间距。段落之后的额外一行可能会导致完全不同的结果,因此你需要尝试并看看哪种方式最适合你。
图 2-15. few-shot 分类示例
这是我们的提示:
根据情感分析 tweet。根据情感,将它分类为积极、中性或消极。
Tweet:“我真的很担心超智能人工智能会对人类感到失望。”
情感分析(积极、中性、消极):消极
Tweet:“我迫不及待地希望超智能人工智能出现,并加深我们对宇宙的理解。”
情感分析(积极、中性、消极):积极
Tweet:“我认为超智能人工智能出现的可能性既不是很大,也不是很小。”
情感分析(积极、中性、消极):中性
Tweet:“超智能人工智能将是人类历史上最激动人心的发现。”
情感分析(积极、中性、消极):
这是输出:
积极
批量分类
在理解了 GPT-3 的 few-shot 分类之后,让我们更深入地探讨批量分类,它允许你以单个 API 调用的方式对批量输入样本进行分类,而不是仅仅对单个示例进行分类。它适用于你想一次性对多个示例进行分类的应用,就像我们所检验的 tweet 情感分析任务一样,但是分析一系列 tweet。
与 few shots 分类一样,你希望为模型提供足够的上下文以达到期望的结果,但是在批量配置格式中。在这里,我们使用批量配置格式定义了 tweet 情感分类的不同类别,然后要求模型分析下一批 tweet。
图 2-16. 批量分类示例(第一部分)
图 2-17. 批量分类示例(第二部分)
这是我们的提示:
根据它们的情感分析 tweet。根据情感,将它们分类为积极、中性或消极。
Tweet:“我真的很担心超智能人工智能会对人类感到失望。”
情感分析(积极、中性、消极):消极
Tweet:“我迫不及待地希望超智能人工智能出现,并加深我们对宇宙的理解。”
情感分析(积极、中性、消极):积极
Tweet:“我认为超智能人工智能出现的可能性既不是很大,也不是很小。”
情感分析(积极、中性、消极):中性
Tweet:“超智能人工智能将是人类历史上最激动人心的发现。”
情感分析(积极、中性、消极):积极
Tweet:
1. “我真的很担心超智能人工智能会对人类感到失望。”
2. “我迫不及待地等待超智能人工智能的出现,深化我们对宇宙的理解。”
3. “我认为超智能人工智能出现是既不太可能也不太不可能的。”
4. “超智能人工智能将是人类历史上最令人兴奋的发现”
5. “这是 AI 状况的最新报告”
推文情感:
1. 负面
2. 积极
3. 中性
4. 积极
5. 中性
推文:
1. “我受不了糟糕的电子音乐”
2. “这是一条推文”
3. “我迫不及待地去月球!!!”
4. “AI 太可爱了 ❤️”
5. “现在非常生气了! ��”
推文情感:
1.
并且输出:
1. 负面
2. 中性
3. 积极
4. 积极
5. 负面
如您所见,该模型还原了批量情感分析格式,并成功分类了推文。现在让我们继续看看它在命名实体识别任务中的表现如何。
命名实体识别
命名实体识别(NER)是一项涉及在非结构化文本中识别和分类命名实体的信息提取任务。这些实体可能包括人、组织、地点、日期、数量、货币值和百分比。这项任务有助于从文本中提取重要信息。
NER 有助于使回复更加个性化和相关,但当前的最先进方法要求在开始预测之前进行大量的训练数据。另一方面,GPT-3 可以直接识别人、地点和组织等一般实体,而无需人类提供任何训练示例。
在下面的示例中,我们使用了一种处于 beta 测试阶段的 davinci-instruct-series 版本的模型,该模型在撰写本书时处于 beta 测试阶段,并且该模型获取提示来训练和改进未来的 OpenAI API 模型。我们给了它一个简单的任务:从示例电子邮件中提取联系信息。它第一次尝试就成功完成了任务(图 2-18)。
图 2-18. NER 示例
这是我们的输入:
从这封电子邮件中提取姓名和邮寄地址:
Shubham,
很高兴前几天和你交谈!
我非常期待开始我们的书的工作。
这是我的地址:1307 Roosevelt Street, San Francisco CA94107
最好,
Sandra Kublik
姓名和邮寄地址:
并且输出:
Sandra Kublik
1307 Roosevelt Street, San Francisco CA 94107
文本摘要
文本摘要的目标是在准确表示原始内容并保持其整体含义的同时创建原始文本的缩短版本。这是通过识别和突出文本中最重要的信息来实现的。基于 GPT-3 的文本摘要旨在将长篇文本转化为简化的 tl;dr[10]版本。这样的任务通常难以且成本高昂。而 GPT-3 只需要一个输入和几秒钟!
NLP 模型可以训练以理解文档,并确定传达重要事实和信息的部分,然后才生成所需的摘要文本。然而,这样的模型在能够学习上下文并开始总结未见输入之前,需要大量的训练样本。
GPT-3 的抽象摘要是解决信息提取问题的关键。通过产生摘要而不仅仅提取关键信息,GPT-3 可以更全面和准确地理解文本。它采用零射击或少射击方法对文本进行摘要,使其适用于各种用例。使用 GPT-3,您可以根据您的用例以多种方式对文本进行摘要,包括基本摘要、一行摘要和年级摘要。让我们快速浏览这些方法。
大多数时候,该模型能够产生出色的审查摘要,但有时根据先前的上下文可能会输出不相关的结果。为了避免获得不想要的结果,您可以将 Best of 参数设置为 3,这将始终给您 API 生成的三个最佳结果之一。在图 2-18 所示的示例中,经过几次尝试和微小参数调整,我们得到了不错的结果。
这是我们的提示:
问题在于它工作时确实很有效,但当它不起作用时,它确实不起作用。幸运的是,游戏的低点,比如可怕的二进制潜行系统以及错误和缺乏 QoL,要么可以修复,要么被好东西远远超过,并且总体得分仍远高于其他许多游戏的平均水平。这在很大程度上得到了实时游戏性的帮助,这与故事情节一样有益;移动系统让您几乎可以爬上任何短物体,车辆驾驶沉重,并具有出色的内部和外部设计,枪支声音真实而沉重。它的故事和叙事让我沉迷于屏幕,而一切——从性场景和浪漫选择到基努·里维斯试图杀死你或在整个游戏中帮助你——都做得非常出色。《赛博朋克 2077》是一款用爱心打造的游戏,这一点是显而易见的。
简而言之:
输出结果如下:
《赛博朋克 2077》是一款用爱心打造的游戏,这一点是显而易见的。故事很棒,游戏很棒,世界构建很棒。它并不完美,但仍是我玩过的最好的游戏之一。
优点:
了不起的故事和角色
-
令人惊叹的世界构建
-
出色的枪战和移动系统
缺点:
- 二进制潜行系统(有时无论如何都会被发现)-错误
图 2-19. 文本摘要示例
由于许多人每天花费数小时阅读和写邮件,对其进行摘要是 GPT-3 广泛期待的用例。让我们看看 GPT-3 如何将三段邮件总结成一条简洁的句子(图 2-19)。
图 2-20. 电子邮件摘要示例
为了达到预期的结果,我们复制粘贴了完整的电子邮件,然后简单地在末尾添加了“一句总结:”,我们还包括了一个“。”停止序列,告诉模型在生成一句摘要后应该停止生成。
我们的提示:
嗨,格雷格,
我们是桑德拉和舒布汉。我们是一本以 GPT-3 为基础的书的合著者,旨在成为 API 用户的必备手册。它将为读者提供开始使用 GPT-3 以及围绕其不断增长的生态系统背景的知识。这本书将由 O’Reilly 出版社于 2022 年初出版。
我们希望能够与 OpenAI 建立联系,探讨与各种背景的人士推广 API 访问以及让他们能够利用 GPT-3 构建令人兴奋的新解决方案的可能性。我们将感谢您的意见,以确保我们准确地代表 OpenAI 对 GPT-3 的立场,并告知我们的读者 API 的即将推出的进展/功能。
如果我们能在本周某个时候见面讨论一下,那就太好了?
致敬,
S&S
一句总结:
并且输出:
我们正在撰写一本关于 GPT-3 的书,并希望与 OpenAI 建立联系,以更好地了解 API 和未来的发展。
文本生成
在引入 GPT-3 之前,人们普遍认为 AI 模型能够与人类进行短暂对话,回答特定问题或处理特定任务。然而,这些模型还不够复杂,无法处理复杂的文本生成任务,并且一旦遇到复杂或抽象的内容就开始失去跟踪。
在复杂的自然语言生成世界中,GPT-3 颠覆了语言模型仅限于琐碎任务的观念。文本生成是 GPT-3 的最大优势。它能够生成几乎和人类写的文本一样的文本内容。GPT-3 受训于来自训练数据集的数十亿字,以对各种提示生成文本。根据 OpenAI 的说法,它每天平均生成 45 亿字。
在接下来的两个示例中,我们尝试使用 GPT-3 为个人生产力应用创业公司和社交媒体发布内容。我们只给模型提供了最少的上下文,它在第一次尝试中就生成了图 2-21 和图 2-22 中许多响应中的大部分。
文章生成
图 2-21. 文章生成示例
我们的提示:
以下是个人生产力的前 5 个提示。
并且输出:
- 建立例行程序
工作可能会让人感到不堪重负。你不需要记住每一个小细节。通过建立一个例行程序,你将能够更有效地工作。
- 避免同时处理多项任务
如果你在同时做多项任务,你很可能会错过一些事情。最好一次只处理一个任务。
- 休息一下
诚然,如果不休息,你会更有效率。然而,如果你过于频繁地休息,你会感到疲劳和压力。如果你工作更有效率,你可以缩短完成任务所需的时间。
- 学习委派
如果你有很多工作要做,你不应该自己做完所有事情。将一些工作委派给他人。
- 优先排序
优先处理必须做的事情,并首先完成最重要的任务。不要担心小事情。
社交媒体帖子生成
图 2-22. 社交媒体帖子生成示例
这是我们的提示:
为 Facebook、Twitter 和 Instagram 编写关于发布个人生产力应用程序新测试版本的社交媒体帖子。
Facebook 帖子:
输出:
“经过广泛的用户测试,我们很高兴宣布我们的最新更新现已可以下载!我们的团队努力创造了迄今为止我们应用程序的最佳版本。立即免费下载 www.app.com。”
推特帖子:
“我们正在推出您最喜爱的生产力应用程序的更新版本!现在在 iOS 和 Android 上推出。#productivity #beta”
Instagram 帖子:
“我们刚刚发布了您最喜爱的生产力应用程序的新测试版本!今天在 iOS 和 Android 上免费下载。#productivity #beta”
结论
在本章中,我们介绍了 OpenAI Playground、提示工程以及 OpenAI API 的不同组件,然后通过覆盖主要 NLP 任务的 Playground 示例。现在,您已经了解了 API 如何与不同组件协同工作,以及如何使用 Playground 作为基础来设计和尝试不同的训练提示。
在下一章中,我们将带您了解如何使用 GPT-3 与不同编程语言协同工作,以将 API 集成到您的产品中或从头开始构建一个全新的应用程序。
第三章:GPT-3 与编程
几乎所有 GPT-3 的 NLP 功能都是使用 Python 编程语言创建的。但为了实现更广泛的可访问性,该 API 提供了对所有主要编程语言的预构建支持,因此用户可以选择自己喜欢的编程语言构建基于 GPT-3 的应用程序。
在本节中,我们将通过使用不同的编程语言复制一个示例来说明这是如何工作的。
提示:在每个特定于语言的章节中,我们假设您对所讨论的编程语言有基本的了解。如果您没有,您可以安全地跳过该部分。
如何使用 Python 与 OpenAI API?
Python 是数据科学和机器学习任务中最流行的语言。与传统的数据科学编程语言如 R 和 Stata 相比,Python 因其可扩展性和与数据库的良好集成而脱颖而出。它被广泛使用,并且有着发展壮大的开发者社区,使其生态系统保持最新。Python 易于学习,并且附带有像 Numpy 和 Pandas 这样的有用的数据科学库。
您可以使用名为Chronology的库将 GPT-3 与 Python 配对,该库提供了一个简单直观的接口。Chronology 可以缓解每次都从头开始编写所有代码的单调工作。它的功能包括:
● 它异步调用 OpenAI API,允许您同时生成多个提示完成。
● 您可以轻松地创建和修改训练提示;例如,修改不同示例使用的训练提示相当简单。
● 它允许您通过将一个提示的输出插入到另一个提示中来链接提示。
Chronology 托管在 PyPI 上,支持 Python 3.6 及以上版本。要安装库,您可以运行以下命令:
(基础)PS D:\GPT-3 Python> pip install chronological
通过 PyPI 安装 Python 库后,让我们看一个示例,说明如何使用 GPT-3 来以二年级阅读水平总结给定的文本文档。我们会展示如何调用 API,将训练提示作为请求发送,以及获取汇总的完成作为输出。我们已经将代码发布在Github 存储库中。
在本示例中,我们将使用以下训练提示:
我的二年级学生问我这段话是什么意思:
“”"
橄榄油是从橄榄(欧洲油橄榄的果实;橄榄科)中获取的液态脂肪…
“”"
我用浅显易懂的语言为他重新表述了一遍:
“”"
首先,导入以下依赖项:
导入依赖项
from chronological import read_prompt, cleaned_completion, main
现在我们可以创建一个函数,读取训练提示并提供完成的输出。我们将此函数设置为异步的,这样我们就可以进行并行函数调用。我们将使用以下配置进行 API 参数设置:
● 最大 token 数=100
● 执行引擎=“Davinci”
● 温度=0.5
● Top-p=1
● 频率惩罚 = 0.2
● 停止序列 = [“\n\n”]
接受训练提示并返回完成的响应
async def summarization_example():
接受一个文本文件(summarize_for_a_2nd_grader)作为输入提示
prompt_summarize = read_prompt(‘summarize_for_a_2nd_grader’)
调用 completion 方法以及特定的 GPT-3 参数
completion_summarize = await cleaned_completion(prompt_summarize, max_tokens=100, engine=“davinci”, temperature=0.5, top_p=1, frequency_penalty=0.2, stop=[“\n\n”])
返回完成的响应
返回完成的摘要
现在我们可以创建一个异步工作流程,使用库提供的 ‘main’ 函数调用该工作流程,并在控制台中打印输出:
设计端到端的异步工作流程,能够并行运行多个提示。
异步函数工作流程:
调用摘要函数进行异步调用
text_summ_example = await summarization_example()
在控制台中打印结果
print(‘-------------------------’)
print(‘基本示例响应: {0}’.format(text_summ_example))
print(‘-------------------------’)
使用主函数调用 Chronology 来运行异步工作流
main(workflow)
将其保存为名为 ‘text_summarization.py’ 的 Python 脚本,并从终端运行以生成输出。您可以从根目录运行以下命令:
(base) PS D:\GPT-3 Python> python text_summarization.py
执行脚本后,您的控制台应该打印出以下提示的摘要:
基本示例响应: 橄榄油是一种来自橄榄的液态脂肪。橄榄生长在一种叫做橄榄树的树上。橄榄树是地中海最常见的树。人们用这种油来烹饪,放在沙拉上,还用作灯的燃料。
如果您不熟悉 Python 并且想要在不编写代码的情况下链接不同的提示,您可以使用基于 Chronology library 构建的 无代码界面 来使用拖放创建提示工作流程。查看我们的 GitHub 仓库 获取更多关于如何使用 Python 编程与 GPT-3 交互的示例。
如何使用 Go 来调用 OpenAI API?
Go 是一个开源的编程语言,融合了其他语言的元素,创建了一个功能强大、高效且用户友好的工具。许多开发人员将其称为 C 的现代版本。
Go 语言是构建需要高安全性、高速度和高可扩展性的项目的首选语言。这使得它成为金融科技行业许多项目的吸引人选项。Go 语言的主要特点如下:
● 易用性
● 现代生产力
● 高级效率的静态类型
● 网络高级性能
● 充分利用多核能力
如果你完全不懂 Go 并且想试一试,你可以查阅文档开始入门。
安装完成并且了解了 Go 编程的基础知识后,你可以按照以下步骤使用Go 的 GPT-3 API 包装器。要了解更多有关创建 Go 模块的信息,请参阅本教程。
首先,您将创建一个模块来跟踪和导入代码依赖项。使用以下命令创建并初始化“gogpt”模块:
D:\GPT-3 Go> go mod init gogpt
创建“gogpt”模块之后,让我们将其指向此 GitHub 存储库,以下载处理 API 的必要依赖项和包。使用以下命令:
D:\GPT-3 Go> go get github.com/sashabaranov/go-gpt3
go get:添加了 github.com/sashabaranov/go-gpt3 v0.0.0-20210606183212-2be4a268a894
我们将使用与上一节相同的文本摘要示例。(你可以在以下存储库中找到所有代码。)
让我们首先导入必要的依赖项和包:
调用 package main
package main
导入依赖项
import (
“fmt”
“io/ioutil”
“context”
gogpt “github.com/sashabaranov/go-gpt3”
)
Go 编程将源文件组织成系统目录,称为包,这使得在 Go 应用程序中跨应用程序重用代码更加容易。在代码的第一行中,我们调用了包“main”,并告诉 Go 编译器,这个包应该编译为可执行程序,而不是共享库。
注意:在 Go 语言中,你可以创建一个可复用的共享库作为包,创建一个可执行程序的“main”包。包内的“main”函数作为程序的入口点。
现在,你将创建一个主函数,用于托管读取训练提示和提供完成输出的整个逻辑。使用以下配置设置 API 参数:
● 最大标记=100
● 执行引擎=“davinci”
● 温度=0.5
● Top-p=1
● 频率惩罚=0.2
● 结束序列= [“\n\n”]
func main() {
c := gogpt.NewClient(“OPENAI-API-KEY”)
ctx := context.Background()
prompt, err := ioutil.ReadFile(“prompts/summarize_for_a_2nd_grader.txt”)
req := gogpt.CompletionRequest{
MaxTokens: 100,
温度:0.5,
TopP: 1.0,
Stop: []string{“\n\n”},
频率惩罚:0.2,
提示:string(prompt),
}
resp, err := c.CreateCompletion(ctx, “davinci”, req)
如果出现错误 {
返回
}
fmt.Println(“-------------------------”)
fmt.Println(resp.Choices[0].Text)
fmt.Println(“-------------------------”)
}
此代码执行以下任务:
-
通过提供 API 令牌设置新的 API 客户端,然后将其留在后台运行。
-
以文本文件的形式读取提示“”从 prompts 文件夹。
-
通过提供训练提示并指定值 API 参数(如温度、顶部-p、停止序列等)创建完成请求。
-
调用 create completion 函数并提供 API 客户端、完成请求和执行引擎。
-
生成一个以完成形式的响应,最终在控制台朝着结尾打印。
然后,您可以将代码文件保存为’text_summarization.go’并从终端运行它以生成输出。 使用以下命令从您的根文件夹运行文件:
(base) PS D:\GPT-3 Go> go run text_summarization.go
一旦执行文件,您的控制台将打印以下输出:
橄榄油是一种来自橄榄的液态脂肪。 橄榄生长在一种被称为橄榄树的树上。 橄榄树是地中海最常见的树木。 人们用这种油来烹饪、放在沙拉上,还用作灯的燃料。
要了解如何使用 Go 编程与 GPT-3 进行交互的更多示例,请访问我们的 GitHub 仓库。
如何使用 Java 使用 OpenAI API?
Java 是用于开发传统软件系统的最古老和最流行的编程语言之一; 它还是一个带有运行时环境的平台。 它由 Sun Microsystems(现在是 Oracle 的子公司)在 1995 年开发,截至今日,超过 30 亿台设备运行在其上。 它是一种通用的、基于类的、面向对象的编程语言,旨在具有较少的实现依赖性。 其语法与 C 和 C++ 相似。 三分之二的软件行业仍然使用 Java 作为其核心编程语言。
让我们再次使用橄榄油文本摘要示例。 与我们在 Python 和 Go 中所做的一样,我们将向您展示如何调用 API,将训练提示作为请求发送,并使用 Java 将摘要完成作为输出。
要在本地计算机上逐步演示代码,请克隆我们的 GitHub 仓库。 在克隆的仓库中转到 Programming_with_GPT-3 文件夹,然后打开 GPT-3_Java 文件夹。
首先,导入所有相关的依赖项:
包示例;
// 导入依赖项
导入 java.util.*;
导入 java.io.*;
导入 com.theokanning.openai.OpenAiService;
导入 com.theokanning.openai.completion.CompletionRequest;
导入 com.theokanning.openai.engine.Engine;
现在,你将创建一个名为 OpenAiApiExample 的类。你所有的代码都将是它的一部分。在这个类下面,首先使用 API 令牌创建一个 OpenAiService 对象:
class OpenAiApiExample {
public static void main(String… args) throws FileNotFoundException {
String token = “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”;
OpenAiService service = new OpenAiService(token);
现在已经建立了与 OpenAI API 的连接,形成了一个服务对象。从 prompts 文件夹中读取训练提示:
// 从 prompts 文件夹中读取训练提示
File file = new File("D:\GPT-3 Book\Programming with GPT-3\GPT-3
Java\example\src\main\java\example\prompts\summarize_for_a_2nd_grader.txt");
Scanner sc = new Scanner(file);
// 我们只需要使用 \Z 作为分隔符
sc.useDelimiter(“\Z”);
// pp 是由训练提示组成的字符串
String pp = sc.next();
接下来,您可以使用以下配置为 API 参数创建完成请求:
● 最大标记=100
● 执行引擎=“Davinci”
● 温度=0.5
● Top-p=1
● 频率惩罚=0.2
● 停止序列 = [“\n\n”]
// 创建一个字符串列表,用作停止序列
List li = new ArrayList();
li.add(“\n\n’‘’”);
// 创建一个包含 API 参数的完成请求
CompletionRequest completionRequest = CompletionRequest.builder().prompt(pp).maxTokens(100).temperature(0.5).topP(1.0).frequencyPenalty(0.2).stop(li).echo(true).build();
// 使用服务对象获取完成响应
service.createCompletion(“davinci”,completionRequest).getChoices().forEach(System.out::println);
将代码文件保存为 ‘text_summarization.java’,并在终端中运行它以生成输出。你可以使用以下命令从根目录运行文件:
(base) PS D:\GPT-3 Java> ./gradlew example:run
你的控制台应该打印出与之前示例相同的摘要。要了解如何使用 Java 编程与 GPT-3 交互的更多示例,请参阅我们的 GitHub 仓库。
GPT-3 Sandbox Powered by Streamlit
在本节中,我们将带领您了解 GPT-3 Sandbox,这是一个我们创建的开源工具,可以帮助您只需几行 Python 代码就能将您的想法变成现实。我们将向您展示如何使用它以及如何为您的特定应用程序进行定制。
我们的沙箱的目标是让您能够创建酷炫的 Web 应用程序,无论您的技术背景如何。它建立在 Streamlit 框架之上。
为了配合本书,我们还创建了一个 视频系列,其中包含逐步说明如何创建和部署您的 GPT-3 应用的说明,您可以通过扫描第 3-1 图中的 QR 码来访问。请在阅读本章时参考它。
图 3-1. GPT-3 沙盒视频系列的 QR 码
我们在示例中使用 VSCode 作为 IDE,但请随意使用任何 IDE。在开始之前,你需要安装 IDE。请确保你正在运行 Python 版本 3.7 或更高版本。你可以通过运行以下命令确认你安装了哪个版本:
python --version
通过在你的 IDE 中打开新的终端并使用以下命令,从这个 仓库 克隆代码:
git clone github.com/Shubhamsaboo/kairos_gpt3
克隆仓库后,你的 IDE 中的代码结构现在应该如下所示:
图 3-2. 沙盒文件目录结构
你需要创建和部署 Web 应用所需的一切都已经在代码中了。你只需要调整一些文件以自定义沙盒以满足你特定的用例。
创建一个 Python 虚拟环境,你将其命名为 env。然后你可以安装所需的依赖项。
前往 email_generation 文件夹。你的路径应该像这样:
(env) kairos_gpt3\GPT-3 Sandbox\email_generation>
然后,运行以下命令:
(env) kairos_gpt3\GPT-3 Sandbox\email_generation> pip install -r requirements.txt
现在你可以开始定制沙盒代码了。你需要查看的第一个文件是 training_data.py。打开该文件并用你想要使用的训练提示替换默认提示。你可以使用 GPT-3 游乐场来尝试不同的训练提示(有关自定义沙盒的更多信息,请参见第二章以及我们的 视频)。
现在你可以根据你的应用用例的要求调整 API 参数(最大标记、执行引擎、温度、Top-p、频率惩罚、停止序列)。我们建议在游乐场中为给定的训练提示尝试不同的 API 参数值,以确定哪些值最适合你的用例。一旦你获得了满意的结果,然后你可以在 training_service.py 文件中更改值。
就这样!你的基于 GPT-3 的 Web 应用现在已经准备好了。你可以使用以下命令在本地运行它:
(env) kairos_gpt3\GPT-3 Sandbox\email_generation> streamlit run gpt_app.py
检查确保它能正常工作,然后你可以使用 Streamlit 分享将应用程序部署到互联网上,向更广泛的受众展示它。我们的 视频 提供了完整的部署步骤。
注意:本应用程序遵循简单的工作流程,其中训练提示从 UI 接收单个输入并生成响应。如果您的应用程序需要更复杂的工作流程,其中训练提示接收多个输入,请通过查看脚本 app1.py、app2.py 和 gpt_app.py 来自定义 UI 元素。有关详细信息,请参阅Streamlit 文档。
在接下来的几章中,我们将探索 GPT-3 的不同应用,并利用这个沙箱创建易于部署的 Web 应用程序。
结论
在本章中,我们学习了如何使用编程语言 Python、Go 和 Java 与 OpenAI API。我们还通过使用 Streamlit 创建的低代码沙箱环境进行了演示,这将帮助您快速将您的想法转化为应用程序。最后,我们看了一下上线 GPT-3 应用程序的关键要求。本章为您提供了 API 的编程视角;未来我们将深入探讨由 GPT-3 赋能的蓬勃发展的生态系统。
第四章:GPT-3 作为下一代初创公司的推动器
在 GPT-3 发布之前,大多数人与 AI 的互动局限于特定的任务,比如让 Alexa 播放您喜欢的歌曲或使用 Google 翻译以不同语言交流。研究人员已成功开发出能够执行平凡任务的 AI,但到目前为止,AI 尚未在执行没有明确、清晰定义的抽象任务时达到人类的创造潜力。
随着 LLMs 时代的临近,我们正在迎来一个重大的范式转变。LLMs 向我们展示,通过增加模型的大小,它们可以执行类似于人类的创造性和复杂任务。现在最大的问题是:AI 能够执行创造性活动吗?
AI 的创造潜力一直是一个令人兴奋的研究领域,尽管大多数都隐藏在像 Google 和 Facebook 这样的公司世界的严密研发墙后。GPT-3 正在改变我们与 AI 互动的方式,并赋予人们建立下一代应用程序的权力,这在其发布之前似乎是一个遥不可及的想法。
模型即服务
在本章中,我们将向您展示 GPT-3 如何通过为创造性企业家提供正确的技术来推动下一波初创公司的浪潮。我们还将探讨 AI 研究在几个领域中的商业化进展。我们还将与支持这些倡议的风险投资家之一交谈,以了解蓬勃发展的 GPT-3 经济的财务方面。
OpenAI API 的诞生故事与本章中许多初创公司的故事相似。我们采访了 OpenAI 的产品与合作伙伴副总裁彼得·韦林德。他告诉我们的是一个大胆尝试、快速迭代、以及利用智能设计实现规模经济的故事(尽可能以最低的成本提供强大的模型)。
韦林德用三个关键点总结了 OpenAI 的使命:“发展 AGI(人工通用智能),确保其安全,然后最后将其部署到世界上,使其最大化地惠及全人类。”因此,公司正在专注于开发可应用于越来越广泛需求的 AI。
希望尽快且安全地实现 AGI,OpenAI 决定押注的技术之一是大型语言模型,具体来说是 GPT-3。韦林德谈到尝试 GPT-3 时说:“那是我们第一次觉得,‘实际上,这似乎相当有用,它在许多学术基准任务中都取得了最先进的结果,等等。’”
对于可能性感到兴奋的韦林德和其他四位同事辩论着如何最好地使用这一算法:构建翻译引擎?写作助手?客户服务应用程序?然后他们想到了。韦林德说:“为什么不直接将这项技术提供为 API,让任何开发者在其基础上构建自己的业务呢?”
API 的方法与 OpenAI 的目标和使命相契合,通过最大化技术的采用和影响,赋予社区成员发明应用程序的能力,这是 OpenAI 团队无法预测的。这也将产品开发留给全球技术开发人员,让 OpenAI 团队可以专注于他们真正擅长的事情:开发强大、开创性的模型。
到这一点,研究人员一直致力于设计可扩展、高效的训练系统,以最大程度地提高 GPU 的效率。但实际上在实际数据上运行这些模型并为现实应用获取实际结果的关注却很少。因此,OpenAI 团队决定加倍核心 API 体验,专注于快速推理和低延迟等方面。
在计划推出 API beta 版本的六个月前,他们根据韦林德的说法,将延迟降低到约十倍,吞吐量提高了数百倍:“我们花了大量的工程技术来确保这些模型,使它们的 GPU 尽可能高效,以及以极低的延迟调用它们,并且使其具有可扩展性。”通过 API 使用模型而不需要自己的 GPU 使其具有成本效益,并且普通开发人员可以玩转应用案例并尝试新事物。非常低的延迟也很重要,以便轻松迭代。“你不想输入东西,然后等几分钟才能收到响应,这在 API 最早期确实是这样的情况。现在你可以实时看到模型输出的东西,”韦林德说。
OpenAI 认为这些模型将会增长,这会使开发人员难以部署它们;团队希望消除这一障碍。“这只会使您花费太多,因为您需要大量的 GPU 和 CPU 来玩转一个用例。如果您自己部署这个模型,这将毫无经济意义,”韦林德说。相反,公司决定通过 API 与开发人员分享模型。“成千上万的开发人员正在使用相同的模型,这是您可以实现规模经济的方式,”韦林德补充说。“这降低了每个人访问这些模型的价格并进一步扩大了分发,因此更多的人可以尝试这些模型。”
在私人 beta 版本发布 OpenAI API 带来了许多惊喜。他们之前的标志性模型 GPT-2 让很少实现真实世界用例,因此团队希望 GPT-3 会更有用。确实,很快就实现了。
韦林德表示,另一个惊喜是,“我们平台上许多人并不是程序员。他们是各种作者、创意人士、设计师和产品经理等。” GPT-3 在某种程度上改变了成为开发人员意味着什么:突然间,结果表明要构建一个 AI 应用程序,并不需要知道如何编程。你只需要擅长使用提示描述你希望 AI 执行的任务(如第二章所讨论)。
Welinder 和他的团队发现,“很多时候,真正擅长使用它的人并没有机器学习背景”——而那些有机器学习背景的人必须放弃他们对许多问题的思考方式才能使用 GPT-3。许多用户构建了基于 GPT-3 的应用程序而无需编写代码。OpenAI 团队实际上降低了创建应用程序的障碍:这是向 AI 民主化迈出的第一步。“核心策略是使 API 对尽可能多的人可用,” Welinder 说:“确保我们技术的使用门槛低是我们使命的核心。这就是为什么我们构建了这个 API。” GPT-3 的另一个意想不到的用例是编码。模型编码潜力的早期迹象促使 OpenAI 加倍努力设计编码用例。他们的努力导致了 Codex 的发布,于 2021 年年中发布。
API 的使用案例多种多样,同时也催生了一整个新的创业生态系统:“在推出 API 几个月后,已有数家公司完全建立在 OpenAI API 之上。其中许多公司现在已经以相当高的估值融资,” Welinder 说道。
OpenAI 的核心原则之一是与客户密切合作。Welinder 表示:“每当我们有新的产品功能时,我们都会尝试找到那些我们知道会发现这些功能有用的客户,并创建直接的沟通渠道,向他们提供早期访问。”例如,他们在发布该功能之前与几个客户合作进行了搜索功能的微调。
OpenAI 主要关注确保 AI 的安全和负责任使用。除了许多积极的结果外,随着 AI 对一般公众的可及性增加,他们也看到了滥用的潜在可能性正在增长。他们选择以私人测试版形式推出 API 的主要原因之一是为了了解人们如何使用这些模型并检查它们的滥用潜力。他们尽可能多地检查不良模型行为的实例,利用他们所学到的东西来指导他们的研究和模型训练。
Welinder 对 API 推动的项目的广度和创造力感到鼓舞。“未来十年将会非常激动人心,因为人们将会在这项技术的基础上构建出许多事情。我认为通过共同努力,我们可以创建一些真正有利于我们社会的良好防护措施。”
新创业环境的近距离观察:案例研究
就在 OpenAI 发布 API 不久后,创业公司开始利用它来解决问题。这些创业者是最先进的自然语言处理产品的先驱,他们的经历对于那些计划基于 OpenAI API 的未来商业应用的人来说尤为有益。本章的其余部分通过与一些以 GPT-3 为核心产品架构的顶级创业公司领导人的访谈,描绘了这个充满活力的景观,涉及到他们在创意艺术、数据分析、聊天机器人、文案撰写和开发工具等领域的一些所学所思。
GPT-3 的创造性应用:Fable Studio
GPT-3 最令人兴奋的能力之一是讲故事。您可以给模型一个主题,并要求它在零样本设置中编写故事。
这些可能性使作家们扩展了他们的想象力,并产生了非凡的作品。例如,由 Jennifer Tang 执导,并与 Chinonyerem Odimba 和 Nina Segal 共同开发的话剧 AI,描绘了人类和计算机思维之间的独特合作关系,借助 GPT-3 的帮助。作家 K. Allado McDowell 将 GPT-3 视为他的书 PHARMAKO-AI 的合作者,McDowell 表示,这本书“重新构想了一个面临多重危机的世界的控制论,对于我们如何看待自己、自然和 21 世纪的技术都具有深远的影响。”
我们与 Fable Studio 的联合创始人兼首席执行官 Edward Saatchi,以及 Fable Studio 的首席技术官 Frank Carey 坐下来,了解了他们使用 GPT-3 创造一种新型互动故事体裁的旅程。Fable 将 Neil Gaiman 和 Dave McKean 的儿童书《The Wolves in the Walls》改编成了一部获得艾美奖的 VR 电影体验。由于 GPT-3 生成的对话,电影的主人公 Lucy 可以与人们进行自然对话。Lucy 作为嘉宾出现在 2021 年的圣丹斯电影节上,并展示了她的电影《Dracula: Blood Gazpacho》。
Saatchi 和 Carey 注意到他们的观众与 Lucy 建立了情感联系。这促使他们专注于利用人工智能来创建虚拟人物,以及与之相关的一种新的叙事和娱乐类别,这种叙事和娱乐类别将人工智能和叙事编织在一起。正如 Awan 所说,“我们将会有全新类型的电影和体裁:我们将会有互动、融合的体验。”
Carey 解释说,观众通常认为 AI 扮演一个角色的角色,就像一个演员一样:一个 AI 对应一个角色。相反,Fable 的 AI 是一个讲故事者,它的剧目中有各种各样的角色。Carey 认为,可能会开发出一个与最优秀的人类作家一样技艺娴熟和富有创造力的 AI 讲故事者。
虽然 Lucy 的对话大多是通过文字和视频聊天进行的,但 Fable 还在 3D 模拟世界中进行了对 GPT-3 的实验,以实现沉浸式 VR 体验。团队利用 AI 生成音频和手势,并同步唇部动作。他们使用 GPT-3 来生成人物与观众互动的大部分内容。其中一些内容可以是预先创作的,但很多内容必须即兴创作。Lucy 的合作者们在她在圣丹斯露面期间以及电影创作过程中广泛使用了 GPT-3。就像 Lucy 在 Twitch 上露面一样,Carey 说:“80%以上的内容都是使用 GPT-3 生成的。”
这与团队早期仅限于文本的实验有了明显的变化,那些实验在很大程度上是由人工创作的,并且遵循了更线性的叙事。Fable 工作室团队通常不会现场使用 GPT-3 来处理观众不可预测的回应;他们早在 GPT-3 之前就已经具备了这方面的技术。然而,他们有时会将 GPT-3 用作创作伙伴或者为观众在可能的回应中担当替身。
Carey 解释说,GPT-3 也是人类作者的一个有用工具:“对于即兴创作的内容,我们使用 GPT-3 来进行测试,这样你就可以把 GPT 看作是人类,而你自己就是在扮演这个角色。与 GPT-3 来回交流有助于你想出在这种情况下会有什么样的问题?接下来会是什么?”这有助于作者们尽可能多地覆盖对话结果。“有时它是一个创作伙伴,有时它可以填补正在发生的事情周围的空白,”Saatchi 说。“所以我们可能会思考:这个角色本周会发生什么?下周会发生什么?GPT-3 会填补其中的一些空白。”
Fable 小组在 2021 年圣丹斯电影节上利用 GPT-3 进行了一次实验,Lucy 与电影节参与者现场合作创作了自己的短片,而 Fable 工作室和参与者们则在策划她所生成的创意,与参与者们交流,将观众的创意反馈到 GPT-3 中。
用 GPT-3 给一个连贯的角色赋予生命是一个特别的挑战。Saatchi 解释说,GPT-3 在重定向角色到参与者的用例(如治疗会话)以及那些“关于他们有着非常丰富知识基础的角色,比如名人或者具有原型化特征的角色,如耶稣、圣诞老人或者德古拉。”都表现得非常出色。但显然,“这在已经被写入的信息上达到了某种极限。”他指出,任何与 GPT-3 驱动的角色进行广泛交互的人都会很快达到 GPT-3 的限制。“它试图给你所提出的故事找到一个好答案。但如果你在提示中讲一个奇幻故事,它也会提供奇幻的答案。对吧?所以它不是一个说真话的机器。我会说,它天生就是一个讲故事的机器;它只是试图在语言中找到模式。”许多人没有意识到的是,关于 GPT-3 的底线任务是讲故事,而不是“真相”,Carey 表示。
Carey 补充道:“仅仅使用 GPT-3 生成一堆随机场景是一回事,但确保它符合角色的语气是完全不同的事情。”“所以我们有一些技巧,用来创建那些提示,以便角色对 GPT3 有明确的定义。”他承认,团队付出了额外的努力,确保 GPT-3 理解角色的语气并保持在其可能回应范围内。他们还必须避免让参与者影响角色,因为 GPT-3 可以捕捉到微妙的信号。Carey 解释说,如果 Lucy 与成年人互动,“它会跟着气氛一起玩,但如果 Lucy 是一个八岁的孩子,它可能会从参与者身上捕捉到更多的成人气氛,并将其反馈给他们。但我们实际上希望 [Lucy] 说话的声音是像一个八岁的孩子一样”。
说服 OpenAI 允许他们使用 GPT-3 创建虚拟存在是需要一些技巧的。“我们非常有兴趣让我们的角色以角色的身份与人们交谈,”Carey 说。“你可以想象这可能是他们的一个问题领域,对吧?[它]肯定有可能被某人假装成人类恶意使用。”在 OpenAI 批准 Fable 的用例之前,Fable Studio 和 Open AI 团队花了一些时间解决了创建逼真角色和模仿人类之间的差异。
OpenAI 还有另一个要求:在任何虚拟存在在观众面前“真实”假装的叙事实验中,Fable Studio 的 Fable 团队必须在人类中保持一个循环。根据 Carey 的说法,使 GPT-3 与任何旨在针对数千人的体验合作是具有挑战性的。尽管如此,他仍然认为大型语言模型将会是一种福音,“即使是用于预先撰写内容,或者在更宽松的领域中,如果没有限制地‘实时’使用。”
Carey 认为,GPT-3 创作最好是一个知道讲故事艺术并希望获得更好结果的人手中的协作工具,而不是期望它完成所有工作。
说到价格问题,他看到讲故事的用例面临的挑战是,每次与 GPT-3 的 API 请求保持一致以呈现故事情节时,必须“提供所有细节并生成一些内容来补充。所以,为了生成几行内容,你将被收取整套代币。”这可能是一个挑战。
Fable 工作室如何解决定价的问题?他们成功地大致避开了这一问题,主要是通过对预生成的尝试,即“你预先生成一堆选项,然后可以使用搜索找到正确的选项作为回应,”Carey 解释道。
他们还找到了降低 API 用户数量的方法:与其让大量观众通过他们的 AI 与 Lucy 互动,“我们有点转变为 Lucy 实际上正在进行一对一的对话,但是是在 Twitch 直播中。”观众通过 Twitch 观看而不是发出 API 调用,这缓解了带宽问题,限制了 Lucy 与任何特定时间和人互动的数量,并扩大了观众群体。
Saatchi 提到了一个传言,即 GPT-4 正在探索对虚拟空间的空间理解,他认为这比仅使用语言的聊天机器人有更多潜力。他建议探索这一用例的人们专注于在虚拟世界中创造角色。Saatchi 指出,已经创建了虚拟 AI 朋友角色的公司Replika现在正在探索扩展到元宇宙,其中虚拟存在将拥有自己的公寓,可以相遇和互动,最终还可以与人类用户互动。“重点是创造一个有生命感的角色,而 GPT-3 是众多工具中的一个。为这些角色提供对于它们正在航行的空间的真正理解可能为这些角色的学习打开大门。”
未来会发生什么?Carey 认为,在构建元宇宙(一个平行的数字现实,人类可以像在现实世界中一样自由互动和进行活动)中,将有未来的 GPT-3 版本的位置。他设想它生成想法,并将人类置于循环之中来策划这些想法。
Saatchi 相信,将语言作为唯一交互模式的重要性降低,有潜力创造更有趣和复杂的人工智能交互。“我确实认为,3D 空间使我们有机会赋予 AI 空间理解能力,”他继续说道。Saatchi 设想的元宇宙赋予了 AI 四处行走和探索的能力,并赋予人类成为循环的一部分并帮助训练虚拟存在的机会。他总结说,我们需要激进的新思维,而元宇宙为将 AI 置于 3D 空间提供了重大机会,并“允许它们与人类一起过上模拟生活。”
GPT-3 的数据分析应用:可行
创业公司Viable的故事是一个很好的例子,说明从你开始着手一个商业想法到实际找到产品市场适配和客户群之间事物可以发生多大变化。Viable 利用 GPT-3 来总结客户反馈,帮助公司更好地了解他们的客户。
Viable 聚合了诸如调查、帮助台票、实时聊天记录和客户评论等反馈。然后,它识别主题、情绪和情感,从这些结果中得出见解,并在几秒钟内提供摘要。例如,如果问:“我们的客户对结账体验感到沮丧吗?”Viable 可能会回答:“客户对结账流程感到沮丧,因为加载时间太长。他们还希望在结账时编辑地址并保存多种付款方式。”
Viable 最初的商业模式涉及帮助早期创业公司通过调查和产品路线图找到产品市场适配。从大公司开始寻求帮助分析大量文本,例如“支持票据、社交媒体、应用商店评论和调查响应”开始改变了一切,Daniel Erickson 说。Erickson 是 Viable 的创始人兼 CEO,也是 OpenAI API 的早期采用者。他解释说:“实际上我花了大约一个月的时间进行实验,简直就是把我们的数据放进游乐场,尝试不同的提示等等。最终,我得出结论,[GPT-3]可以支持一个非常强大的问答系统。”
Erickson 及其同事开始使用 OpenAI API 与大型数据集交互并生成见解。他们最初使用另一个自然语言处理模型,取得了一般的结果,但当他们开始使用 GPT-3 时,团队看到了“至少各方面 10%的增长。当我们谈论从 80%到 90%时,对我们来说这是一个巨大的增长”。
在此成功的基础上,他们使用 GPT-3 结合其他模型和系统创建了一个问答功能,允许用户用简单的英语提问并得到答案。Viable 将问题转换为一个复杂的查询,可以从数据库中提取所有相关反馈。然后,它通过另一系列的摘要和分析模型运行数据以生成一个精炼的答案。
此外,Viable 的系统每周为客户提供“12 段摘要,概述了他们的主要投诉、主要赞扬、主要请求和主要问题。”正如你可能期望的,作为客户反馈专家,Viable 在软件生成的每个答案旁边都有点赞和点踩按钮。他们利用这些反馈进行再培训。
人也参与其中:Viable 有一个注释团队,他们负责构建训练数据集,既用于内部模型,也用于 GPT-3 的微调。他们使用当前版本的经过微调的模型生成输出,然后人类评估质量。如果输出没有意义或不准确,他们会重新编写。一旦他们有了一份满意的输出列表,他们就将该列表反馀到下一个迭代的训练数据集中。
Erickson 指出 API 是一个巨大的优势,因为它将托管、调试、扩展和优化都交给了 OpenAI:“对于几乎任何不是我们技术的核心的东西,我更愿意购买而不是建造。即使它是我们技术的核心,我们也有理由用 GPT-3 来做。”因此,他们理想的解决方案将是对他们的整个过程使用 GPT-3。但由于成本问题,他们不得不优化他们的使用:“我们有一些公司向我们提供了数十万个数据点,每个数据点的字数在五到一千字之间。”把所有东西都用 GPT-3 可能会变得昂贵。
相反,Viable 主要使用内部模型来构建数据,他们在 BERT 和 ALBERT 之上开发了这些模型,并使用 GPT-3 的输出进行训练。这些模型目前在主题提取、情感分析和许多其他任务方面达到或超过了 GPT-3 的能力。Viable 还改用了基于 OpenAI 的 API 定价模型的使用量定价模型。
Erickson 认为 GPT-3 在两个方面为 Viable 提供了优势:准确性和可用性。我们已经提及 Viable 实现了令人印象深刻的 10%准确度提升。但可用性呢?Viable 的大多数竞争对手都是专门为专业数据分析师设计的工具。Viable 认为这个目标受众太狭窄:“我们不想要构建一个只有分析师可以使用的软件,因为我们觉得那样会限制价值。我们想要的是帮助团队使用定性数据做出更好的决策。”
相反,Viable 的软件本身就是“分析师”。用户可以通过反馈循环更快地迭代,这使他们能够用自然语言回答关于他们数据的问题,并获得快速准确的回应。
Erickson 分享了 Viable 的下一步计划:他们将很快引入定量数据和处理产品分析。最终,Erickson 希望给用户能力进行全面的客户洞察分析,并提出问题,比如“有多少客户在使用功能 X?”和“使用功能 X 的客户中,他们认为应该如何改进?”
最终,Erickson 得出结论:“我们销售的是生成的洞察力。因此,我们使这些洞察力更加深入和强大,以及更快地交付这些洞察力,我们就创造了更多的价值。”
聊天机器人 GPT-3 的应用:Quickchat
GPT-3 在语言交互方面非常擅长,是增强现有聊天机器人体验的明显选择。虽然许多应用程序通过 AI 聊天机器人角色来娱乐用户,比如 PhilosopherAI 和 TalkToKanye,但两家公司专门利用这种能力来开发他们的业务应用:Quickchat 和 Replika。Quickchat 因其 AI 聊天机器人角色 Emerson AI 而闻名,可通过 Telegram 和 Quickchat 移动应用程序访问。Emerson AI 具有广泛的世界知识,包括对更多最新信息的访问,甚至在 GPT-3 的训练时间之后;支持多种语言;能够处理连贯的对话,并且很有趣。
Quickchat 的联合创始人 Piotr Grudzień 和 Dominik Posmyk 对 GPT-3 从一开始就充满兴奋,并且有很多利用它开发新产品的想法。在他们早期对 OpenAI API 进行的实验中,他们一直固守着“人与机器之间的界面不断演变”的概念。Grudzień 解释说,由于人与计算机之间的互动不断演变,自然语言将是逻辑的下一步:毕竟,人们更喜欢通过对话进行沟通。他们得出结论,GPT-3 似乎有潜力实现与计算机的类人对话体验。
Grudzień 表示,两位创始人以“初学者的心态”来解决问题有助于他们保持新鲜和开放。与其他聊天机器人公司不同,他们并没有开始时就雄心勃勃地成为最佳客户支持或营销工具。他们开始的是:“如何让人类与机器对话,以一种令人敬畏且是他们尝试过的最好的东西?” 他们想要创建一个聊天机器人,不仅可以完成简单的功能,如收集客户数据和提供答案,还可以准备回答未经脚本的客户问题或进行愉快的闲聊。“Grudzień 补充说,它可以“利用对话式 API 并继续对话,而不是说:‘我不知道。’”
Posmyk 补充道:“我们的使命是通过人工智能赋能人们,而不是取代他们。我们相信,在未来的十年里,人工智能将加速教育、法律和医疗等关键行业的数字化,并提高我们在工作和日常生活中的生产力。” 为了展示这个遥远的使命,他们创建了 Emerson AI,这是一个由 GPT-3 提供支持的智能通用聊天机器人应用程序。
尽管 Emerson AI 拥有不断增长的用户群体,但它的真正目的是展示由 GPT-3 驱动的聊天机器人的能力,并鼓励用户与 Quickchat 合作为他们的公司实现这样的角色。Quickchat 的产品是一个通用的对话型 AI,可以谈论任何主题。大多数是已经建立的公司的客户,可以通过添加特定于他们的产品(或任何他们想要的主题)的额外信息来定制聊天机器人。Quickchat 已经看到了多种应用,例如自动化典型的 FAQ 客户支持问题解决以及实现一个 AI 角色来帮助用户搜索内部公司知识库。
与典型的聊天机器人服务提供商不同,Quickchat 不建立任何对话树或刚性场景,也不需要教导聊天机器人以某种方式回答问题。相反,格鲁季安解释说,客户只需遵循一个简单的流程:“你复制粘贴包含所有你想要你的 AI 使用的信息的文本 [然后] 点击重新训练按钮,它只需几秒钟就能吸收知识,然后就完成了。” 现在在你的数据上训练好的聊天机器人已经准备好进行测试对话了。
关于开源模型和 OpenAI API 之间的权衡,格鲁季安(Grudzień)分享道:“OpenAI API 很好用,因为你不需要担心基础设施、延迟或模型训练。只需调用一个 API 就能得到答案。它非常可靠。”然而,他认为你要为质量付出相当高的代价。相比之下,开源模型似乎是一个很好的免费选择。在实践中,“你确实需要付云计算的成本。它需要 GPU 和设置 GPU 以使这些模型快速工作,然后对你自己进行微调,” 格鲁季安承认,这不是一个琐碎的过程。
像 Viable 的 Ericksen 一样,格鲁季安和 Posmyk 努力在每个 API 调用中提供价值。但他们也希望随着越来越多竞争性模型的发布,OpenAI 的 API 定价会“下降或会稳定在某个水平上,仅仅因为竞争的压力。”
那么,Quickchat 学到了什么?首先,建立一个盈利的业务需要的不仅仅是炒作。像 GPT-3 推出时引起的大规模媒体轰动,可以为兴奋的爱好者带来一波初期的涌入,“但随后人们会厌倦,等待下一个大事件。唯一能够生存下来的产品是真正解决了人们关心的问题的产品,” 格鲁季安说道。“没有人会仅仅因为它是 GPT-3 而使用你的产品。它需要提供一些价值,无论是有用的、有趣的,还是解决了一些问题。GPT-3 不会替你做到这一点。所以你需要把它当作又一个工具来对待。”
另一个重要的教训是制定可靠的性能指标。“每当你在构建一个机器学习产品时,总是很棘手去评估,”Grudzień说。在他看来,因为 GPT-3 稳健并且运作在难以量化的自然语言领域,评估其输出质量是复杂且繁琐的。正如突破性的一刻可能会令人兴奋一样,他说,“用户最好会根据你的最差情况表现来评判你,或者至少会根据你的平均性能来评判。”因此,Quickchat 优化了用户满意度。对于他们来说,设计一个能捕捉与快乐用户和高持续率相关的变量的指标至关重要,这两者直接转化为更高的收入。
另一个挑战,也许令人意外的是,GPT 对创造力的嗅觉。“即使你把温度设得很低,无论你给它什么提示,它依然会使用那微小的提示然后基于它拥有的广泛知识生成一些东西,” Grudzień解释道。这使得它容易生成诗歌、营销文案或幻想故事等创意文本。但大多数聊天机器人都是用来解决客户问题的。“它需要具有可预测的、重复的性能,同时还需要有对话性和到某种程度上的创造性,但不要过分推动。”
大型语言模型有时会输出“奇怪”、“空洞”或者“不太好”的文本,所以人类确实需要介入。“如果你开始测量它是否满足了某些条件或完成了任务,那结果是它确实很有创意,但在 10 次尝试中只成功了六次——这在面对真正付费客户的业务时,就相当于零。”因此,为了一个成功的业务应用,你需要很多内部系统和模型来约束那种创造性并增强可靠性。“为了为我们的客户创建这个工具,在 99%的情况下都有效,我们开发了许多防御机制,” Grudzień说。
如今,Quickchat 专注于与客户深入合作,确保他们的 API 性能让他们在使用中获得成功。Grudzień最兴奋的是看到客户所构建的东西:“我们真的非常希望看到我们的聊天引擎在成千上万种不同的方式在不同的产品中被使用。”
GPT-3 的营销应用:Copysmith
GPT-3 能消除写作困境吗?Kilcher 认为是的:“如果你有写作障碍,你只需向模型提问,它就会从这样的模型中给你提供一千种创意辅助工具。”让我们来看看这样一个工具:Copysmith。
GPT-3 最受欢迎的应用之一是即时生成创意内容。Copysmith 是市场上领先的内容创作工具之一。“Copysmith 是一种能够通过强大的人工智能让用户在网上任何地方创建和部署内容的工具,比其他方式快 100 倍,” 联合创始人兼首席技术官安娜·王说道。它使用 GPT-3 进行电子商务和营销文案创作,以便以闪电般的速度生成、协作和发布优质内容。王和首席执行官 Shegun Otulana 分享了两姐妹是如何将她们的小型艰难电商店转变为成功的科技公司,以及 GPT-3 在其中发挥的关键作用。
在 2019 年 6 月,安娜·王和她的姐妹茉莉花·王共同创立了一个基于 Shopify 的精品店。但她们缺乏营销经验,“生意完全崩溃了,”安娜·王说。当姐妹俩在 2020 年得知 OpenAI API 时,王说:“我们开始探索它用于写诗、试图模仿书籍和电影中的角色。有一天,我们意识到,如果在努力经营电商店时有这个工具,我们就能够写出更好的号召行动和产品描述,并提升我们的营销能力,让事业更上一层楼。”
受启发,他们于 2020 年 10 月推出了 Copysmith,受到了热烈的欢迎。安娜·王说:“一切都从那里开始。我们开始与用户交流,并根据反馈对产品进行迭代。” 她指出,GPT-3 允许您在没有任何先前知识的情况下快速迭代,而其他开源模型如 BERT 和 RoBERTa 则需要对每个下游任务进行显着的微调。“在它能执行的任务方面非常灵活,”她补充道,“它是目前最强大的模型。” 此外,GPT-3 对开发人员和用户非常友好,其简单的文本输入-文本输出接口使您能够使用简单的 API 执行各种任务。相对于托管专有模型所需的努力来说,它的另一个优势在于 API 调用的简单性。
至于基于 GPT-3 构建产品的挑战,Otulana 表示:“你通常受限于 OpenAI 的限制。因此,为了克服这一点,您必须为 API 添加自己的企业家风格,以创建一些出色的东西。另一个局限是对控制的轻微损失,你的进步基本上受 OpenAI 进度的限制。”
安娜·王对想要使用 GPT-3 的产品设计师提出了两点建议。首先,她说:“确保您正在解决一个真正的问题……考虑您的用户,因为使用 GPT-3 的一大困难之一就是陷入仅在安全准则限制内构建事物的思维方式,而不允许自己变得创造性。”
第二,王建议,“非常注意你向模型提供的输入。对于提示的标点、语法和措辞要小心。我保证你会得到更好的模型输出体验。”
GPT-3 的编码应用:Stenography
随着 GPT-3 及其后代模型 Codex 展现出越来越多与编程和自然语言交互的能力,新的潜在用例正在积累。
Bram Adams,一位以其对 GPT-3 和 Codex 算法进行创意实验而闻名的 OpenAI 社区大使,在 2021 年底推出了一个产品:Stenography,它利用了 GPT-3 和 Codex 来自动化写代码文档这一烦人的任务。Stenography 迅速取得了成功,在流行的产品发布门户 Product Hunt 上成为当天的第一产品。
Adams 在 API 中尝试了几个潜在的用例,然后将他的想法缩小到了成为他的新业务的那一个。“我认为很多这些实验都是我在潜意识中对 GPT-3 这样的语言模型能处理的边界进行测试。” Adams 的搜索始于这样一个想法:“如果我可以让计算机做任何事情,我会做什么?”他开始探索,“探索 OpenAI API 的边缘,并看看它能走多远。” 他想出了一个生成 Instagram 诗歌的机器人;尝试了一个自我播客的日记项目,用户会与自己的数字版本交谈;根据用户的偏好在 Spotify 上制作音乐播放列表的项目;并为了满足他的好奇心而创建了许多其他项目。多亏了这种好奇心,“我很早就擅长了解 GPT-3 的不同引擎。”
那么为什么选择 Stenography 呢?“我从外界得到了一个很好的信号,这可能对很多人都很有帮助。”虽然 Adams 喜欢精心编写的代码的优雅之处,但大多数 GitHub 用户只是下载已发布的代码并使用:“没有人真的会欣赏你在代码库中所付出的美。”他还注意到,GitHub 上优秀的程序如果没有良好的文档通常不会得到应有的关注:“自述文件是每个人都能看到的第一件事。他们立刻就会滚动到它。” Stenography 是一种思考文档如何发展以减少开发者烦恼的尝试:“这很难,因为,特别是文档,你必须证明你做了什么。所以你说,‘我使用了这个库来做这件事。然后我决定使用这个东西,然后我添加了这个功能来做这件事。’”
亚当斯将文档视为人们与团队中的其他人、他们的未来自己,或者只是偶然找到项目的感兴趣的人交流的一种方式。其目标是使项目可以被他人理解。“我对 GPT-3 能否创建易懂的注释很感兴趣。” 他同时尝试了 GPT-3 和 Codex,并对两种模型的解释水平印象深刻。他接下来提出的问题是,“如何使开发者非常容易和愉快地使用它?”
Stenography 是如何工作的,以及它的组件如何利用 OpenAI API?在高层次上,亚当斯表示,有两个主要过程,解析和解释,每个过程都需要不同的策略。“对于解析过程,我花了很多时间去理解代码的复杂性,因为并不是代码中的每一行都值得记录。” 一些代码可能有明显的目的,没有运行价值,或者已经不再有用。
此外,大型的代码块,超过 800 行,对于模型来说太复杂了。“你需要将这种逻辑分解为多种不同的步骤,才能准确地说出这个东西是做什么的。一旦我理解到这一点,我开始思考,‘我如何利用解析来找到足够复杂但不太复杂的代码块?’” 由于每个人编写代码的方式都不同,所以尝试连接到抽象语法树,并与你所拥有的最好的东西一起工作。这成为了解析层的主要架构挑战。
至于解释层,“这更多的是让 GPT-3 和 Codex 说出你想让它们说的内容”,亚当斯解释道。处理方式是找到创造性的方式来理解代码的受众,并让 GPT-3 与之交流。这一层“可以尝试解答任何问题,但可能不像使用计算器那样百分之百准确。如果你输入两加二等于四,偶尔会得到五,但你不需要为乘法、除法和减法编写所有函数。这些都是免费的。” 这就是概率系统的权衡:有时它们有效,有时它们无效,但它们总是返回一个答案。亚当斯建议保持足够的灵活性,以便在必要时改变你的策略。
亚当斯强调在开始使用 OpenAI API 之前真正理解问题的重要性。“在我的办公时间里,人们会来,他们会有这些巨大的问题。他们会说,‘我如何使用提示从头开始建造火箭?’然后我就会说,‘嗯,火箭有很多组件。GPT-3 不是万能药。它是一台非常强大的机器,但只有你知道你要用它来做什么的时候才是。’”他将 GPT-3 比作 JavaScript、Python 和 C 等编程语言:“它们很吸引人,但只有你了解递归、for 循环和 while 循环,以及什么工具会帮助你解决你的特定问题时,它们才是有用的。”对于亚当斯来说,这意味着提出许多“技术元问题”,比如“AI 文档有助于什么?”和“文档究竟是什么?”处理这些问题对他来说是最大的挑战。
“我认为很多人立刻就去用达芬奇解决他们的问题。但如果你能用一个更小的引擎,比如 Ada、巴贝奇或居里,解决问题,你实际上会比只是试图用达芬奇的整个 AI 来解决问题更深入地了解问题,”他声称。
当涉及使用 OpenAI API 构建和扩展产品时,他建议使用“小引擎或低温度”,因为你无法预测最终提示会是什么样子(或者它是否会随着时间的推移而不断发展),你试图做什么,以及谁是最终用户,但是使用更小的引擎和更低的温度,你将更快地找到对真正困难的问题的答案。”他告诉我们。
另一个挑战是从他自己的独立实验转移到考虑用户可能面临的所有不同条件和工作方式。现在他正在努力“找到所有不同的边缘情况”,以更好地理解设计层的 API 需要多快、以多高的频率响应特定请求以及它如何与不同的语言交互。
对于速记技术的未来是什么?现在亚当斯已经建立了一个他非常满意的产品,在 2022 年,他计划专注于销售并与用户群体交流。“速记技术不再只是关于建设,而是真正完善产品并将其推向人们面前。”
投资者对 GPT-3 初创公司生态系统的展望
为了理解支持基于 GPT-3 的公司的投资者的视角,我们与 Wing VC 的 Jake Flomenberg 进行了交谈,他是一家全球知名的风险投资公司,是几家使用 GPT-3 的初创公司(包括 Copy.AI 和 Simplified)的领头投资人。
正如任何市场观察者可能想象的那样,风险投资家正在密切关注像 GPT-3 这样的新兴人工智能技术。弗洛门伯格总结了其吸引力:GPT-3“不同于我们以往所见的任何其他自然语言处理模型。这是朝着构建更加通用的人工智能迈出的重要一步。”他认为,其未开发的潜力是巨大的,商业世界仍然“低估了,因此未充分利用了大型语言模型的能力”。
但是潜在投资者应该如何评估如此新颖和不同的事物?弗洛门伯格说:“我们看重具有对问题、领域和技术的深刻理解的初创公司,以及产品和市场之间的良好匹配。”他说,评估建立在 GPT-3 上的东西的微妙之处在于,问自己,“秘密武器是什么?公司在技术方面构建了怎样深入的知识?公司是否正在使用 GPT-3 解决实际问题,还是只是利用炒作将他们的产品推向市场?为什么现在?为什么这个团队最适合执行这个想法?这个想法在现实世界中是否具有可捍卫性?”如果一个初创公司无法捍卫其存在,那对投资者来说是一个巨大的红旗。
投资者还密切关注 OpenAI 及其 API,因为基于 GPT-3 的企业完全依赖于其能力。弗洛门伯格将 OpenAI 的尽职调查审查流程作为建立在信任基础上的关系的主要因素:“通过生产审查并引起 OpenAI 关注的初创公司自动成为投资热点。”
投资者通常在做出投资决策时会深入了解创始人的背景和专业知识。然而,GPT-3 是不同寻常的,因为它允许来自任何背景的人,而不仅仅是程序员,来构建最前沿的自然语言处理产品。弗洛门伯格强调了市场的重要性:“通常情况下,对于深科技初创公司,我们会寻找具有出色技术和人工智能领域理解的创始人。但对于基于 GPT-3 的初创公司,我们更关注市场是否与创始人的愿景产生共鸣,以及他们是否能够识别和解决最终用户的需求”。他以 Copy.AI 为例,“这是一个基于 GPT-3 构建的产品导向增长模型的典型例子。他们与用户找到了非凡的共鸣,并对技术有了深入的了解,为市场带来了深度和价值。”成功的初创公司,他说,“将人工智能融入其中”,更专注于通过使用合适的工具解决用户的问题和满足他们的需求。
结论
看到这些使用案例,以及更多的案例,都是在 GPT-3 的基础上如此迅速而又成功地建立起来,真是令人叹为观止。截至 2021 年底,当这一章节被写作时,OpenAI 社区中已经有几家初创公司已经筹集了大额融资,并计划快速扩张。这个市场潮流似乎也唤醒了更大型企业的胃口。越来越多的企业开始考虑在其组织内实施实验性的 GPT-3 项目。在第五章中,我们将看到这个市场细分,包括诸如 GitHub Copilot 和特别是新的微软 Azure OpenAI 服务等大规模产品,它们旨在满足大型组织的需求。
这篇关于GPT3 终极指南(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!