GPT-3,或称为生成式预训练转换器3,是由OpenAI开发的基于转换器的大型语言模型。它由惊人的1750亿参数组成。任何人都可以通过OpenAIAPI访问这个大型语言模型,这是一个简单易用的“文本输入、文本输出”用户界面,不需要任何技术先决条件。这是历史上第一次将像GPT-3这样的大型AI模型远程托管并提供给普通大众,只需简单的API调用。这种新的访问模式称为模型即服务。由于这种前所未有的访问方式,包括本书作者在内的许多人认为GPT-3是向人工智能(AI)民主化迈出的第一步。
随着GPT-3的推出,构建AI应用比以往任何时候都更容易。本书将向您展示如何轻松使用OpenAIAPI入门。此外,我们还将向您介绍利用此工具解决您的用例的创新方法。我们将审视建立在GPT-3之上的成功初创企业以及在其产品领域利用它的企业,并研究其发展中的问题和潜在未来趋势。
本书面向所有背景的人,而不仅仅是技术专业人士。如果您是以下人士,本书对您应该很有用:
本书的第一部分涵盖了OpenAIAPI的基础知识。在书的第二部分,我们探索了围绕GPT-3自然形成的丰富生态系统。
第一章概述了在这些主题中移动所需的上下文和基本定义。在第二章中,我们深入探讨了API,将其分解为最重要的元素,如引擎和端点,描述了它们的目的以及希望与之更深层次交互的读者的最佳实践。第三章为您的第一个GPT-3动力应用提供了一个简单而有趣的配方。
接下来,将焦点转移到令人兴奋的人工智能生态系统,在第四章中,我们采访了一些最成功的基于GPT-3的产品和应用的创始人,了解他们在商业规模上与模型互动的经历和挑战。第五章着眼于企业如何看待GPT-3及其采用潜力。我们在第六章讨论了更广泛采用GPT-3的问题,如误用和偏见,以及解决这些问题的进展。最后,在第七章中,我们展望未来,为您介绍GPT-3在更广泛的商业生态系统中定位时所带来的最令人兴奋的趋势和可能性。
本书中使用以下排版惯例:
斜体
表示新术语、URL、电子邮件地址、文件名和文件扩展名。
等宽
用于程序清单,以及在段落内引用程序元素,如变量或函数名称、数据库、数据类型、环境变量、语句和关键字。
等宽粗体
显示用户应该直接键入的命令或其他文本。
此元素表示提示或建议。
此元素表示一般注意事项。
我要感谢RebeccaNovak,她为我们提供了撰写本书的独特机会,以及我的合著者Shubham,他邀请我与他合作,并在整个过程中始终是一个极具支持和积极性的合作伙伴。
我们的书如果没有我们出色的编辑SarahGrey,就不会成为今天的样子,她总是督促我们对读者更具移情力。我还要向我们的技术编辑DanielIbáez和MatteusTanha表示深深的感谢,他们帮助我们使书籍在概念上更加坚实,还要感谢VladimirAlexeev和NataliePistunovich,他们为我们提供了很好的技术编辑建议。
我也想感谢我的母亲Teresa,我的姐姐Paulina,我的爷爷Tadeusz,我的表姐Martyna,以及在我忙于写作时陪伴我的朋友和同事。
这本书是RebeccaNovack找到我的博客并邀请我讨论在大型语言模型领域写一本独特的书的结果。接下来,我要感谢我的合作者Sandra,她像一个完美的伙伴一样填补了空白并补充了我的技能。尽管在写这本书时我们面临了许多挑战,但由于Sandra能够将即使是最紧张的情况转变为有趣的情景,我们还是玩得很开心。
我很感激能与像SarahGrey这样优秀的编辑一起合作。她在塑造这本书的最终形式上做得很好。编辑后,这本书就像是活过来了一样。还要特别感谢NicoleButterfield在Rebecca在书的制作过程中不得不离开后承担责任。
感谢我的妈妈Gayatri,我的爸爸Suresh,我的哥哥Saransh,以及在写作过程中一直支持我的所有朋友和同事。另外,还要感谢Plaksha大学的教师和创始人们,他们给了我超越常规思维、挑战现状的机会。我在Plaksha的TechLeaders计划中的教育和经验使我能够高效地完成这本书。
想象一下醒来时美丽的阳光明媚的早晨。今天是星期一,你知道这个星期会很忙碌。你的公司即将推出一款新的个人生产力应用程序Taskr,并开始社交媒体宣传,让全世界都知道你们的创新产品。
你开始制作一个待办事项清单:
这不是一个遥远的、未来的幻想,而是一瞥新现实的可能性,这得益于人工智能的进步。当我们写下这本书时,许多这样的应用正在被创建并向更广泛的受众部署。
GPT-3能够以前所未有的轻松程度执行通用的基于语言的任务,比如生成和分类文本,自由地在不同的文本风格和目的之间移动。它能解决的问题范围广泛。
自然语言处理是语言学、计算机科学和人工智能的一个子领域,涉及计算机和人类语言之间的交互。NLP的目标是构建能够处理人类语言的系统。自然语言指的是人类相互交流的方式。
NLP将计算语言学(基于规则的人类语言建模)与机器学习相结合,创建出能够识别上下文并理解自然语言意图的智能机器。机器学习(ML)是人工智能的一个子领域,涉及研究能够从经验中学习并执行任务而无需明确编程的机器。深度学习是机器学习的一个子集,灵感来自人脑的工作方式。它是一个神经网络,或者说是一个由成千上万个神经元组成的大型网络,它们相互交互以执行具有极小干预的显著复杂任务。
NLP是许多现实世界人工智能应用的核心,例如:
垃圾邮件检测
你的电子邮件收件箱中的垃圾邮件过滤器将一部分收到的邮件分配到垃圾邮件文件夹中,使用NLP来评估哪些邮件看起来可疑。
机器翻译
GoogleTranslate、DeepL和其他机器翻译程序使用NLP来评估由不同语言对的人类说话者翻译的数百万句子。
虚拟助手和聊天机器人
世界上所有的Alexa、Siri、GoogleAssistant和客户支持聊天机器人都属于这一类别。它们使用NLP来理解、分析和优先处理用户的问题和请求,并快速正确地做出响应。
社交媒体情感分析
市场营销人员收集有关特定品牌、谈话主题和关键词的社交媒体帖子,然后使用NLP来分析用户对每个主题的感受,以及个人和集体的感受。这有助于品牌进行客户研究、形象评估和社交动态检测。
文本摘要
对文本进行摘要意味着减少其大小,同时保留关键信息和基本含义。一些日常的文本摘要示例包括新闻标题、电影预告片、新闻简报制作、金融研究、法律合同分析和电子邮件摘要,以及提供新闻订阅、报告和电子邮件的应用程序。
语义搜索
语义搜索利用深度神经网络智能搜索数据。每当您在Google上搜索时,您都在与它进行交互。在您想要基于上下文而不是特定关键字搜索时,语义搜索非常有用。
语言建模是将概率分配给特定语言文本中的一系列单词的任务。简单的语言模型可以查看一个词,并基于对现有文本序列的统计分析,预测接下来最有可能跟随它的单词(或单词)。要创建一个成功预测单词序列的语言模型,您需要在大量数据集上对其进行训练。
语言模型是自然语言处理应用程序的关键组件。您可以将它们视为统计预测机器,其中您将文本作为输入并获得预测作为输出。您可能已经从智能手机上的自动完成功能熟悉了这一点。例如,如果您键入“good”,自动完成可能会建议“morning”或“luck”。
GPT-3这个名字代表“生成预训练变换器3”。让我们逐个解释这些术语,以了解GPT-3的制作过程。
GPT-3是生成模型,因为它生成文本。生成建模是统计建模的一个分支。它是一种数学近似世界的方法。
我们周围有大量易于获取的信息——无论是在物理世界还是数字世界中。棘手的部分是开发智能模型和算法,可以分析和理解这些数据宝库。生成模型是实现这一目标最有前途的方法之一。
要训练一个模型,你必须准备和预处理一个数据集,这是一组示例,帮助模型学习执行给定任务。通常,数据集是某个特定领域的大量数据:比如数百万张汽车图像,以教会模型汽车是什么,例如。数据集也可以是句子或音频样本的形式。一旦你向模型展示了许多示例,你必须训练它生成类似的数据。
你听说过10000小时理论吗?在他的书Outliers中,马尔科姆·格拉德威尔(MalcolmGladwell)建议,练习任何技能10000小时足以使你成为专家。这种“专家”知识体现在你的人脑发展的神经元之间的连接上。实际上,AI模型也在做类似的事情。
要创建一个表现良好的模型,你需要使用一组特定的变量来训练它,称为参数。确定模型的理想参数的过程称为训练。模型通过连续的训练迭代吸收参数值。
在机器学习中,模型是在数据集上训练的。数据样本的大小和类型取决于你想要解决的任务。GPT-3是在五个数据集的文本语料库上预先训练的:CommonCrawl、WebText2、Books1、Books2和Wikipedia:
CommonCrawl
共同抓取语料库(文本集合)包括了在八年的网络爬虫过程中收集的原始网页数据、元数据和文本数据的大量数据。OpenAI研究人员使用这个数据集的经过筛选和精心策划的版本。
WebText2
WebText2是WebText数据集的扩展版本,它是由OpenAI内部爬取高质量网页而创建的一个语料库。为了对质量进行审核,作者们从Reddit上爬取了所有获得至少三个赞(指示其他用户是否发现链接有趣、教育性或只是有趣)的外部链接。WebText2包含了来自这4500万链接的40GB文本,超过800万个文档。
Books1和Books2
Books1和Books2是两个包含数以万计各种主题书籍文本的语料库。
维基百科
这个语料库总共包括了近万亿个词。
表1-1.GPT-3数据集中排名前十的语言
虽然英语和其他语言之间的差距巨大——英语排名第一,占据数据集的93%;而德语排名第二,仅占1%——但是这1%足以创建完美的德语文本,包括风格转换和其他任务。其他语言也是如此。
由于GPT-3是在广泛而多样的文本语料库上进行预训练的,所以它可以成功地执行令人惊讶的数量的自然语言处理任务,而无需用户提供任何额外的示例数据。
神经网络构成深度学习的核心。它们的名称和结构受到人类大脑的启发,模仿生物神经元相互传递信号的方式。神经网络是一组或一系列协同工作的神经元网络或电路。神经网络的创新可以提高模型在下游任务上的性能,因此AI科学家不断致力于为神经网络开发新的架构。其中一项发明彻底改变了我们今天所知的NLP:Transformer。Transformer是一个机器学习模型,它一次性处理一个文本序列(而不是一个词),并且具有强大的机制来理解单词之间的关联。
Google和多伦多大学的研究人员在2017年的一篇论文中介绍了Transformer模型的概念:
Transformer模型的骨架是序列到序列的架构。序列到序列(Seq2Seq)将给定的元素序列,例如句子中的单词,转换为另一个序列,例如另一种语言中的句子;句子是依赖序列的,因为单词顺序对于理解句子至关重要。
Seq2Seq模型特别擅长翻译,其中一个语言的单词序列被转换为另一种语言的不同单词序列。谷歌翻译在2016年底开始使用基于Seq2Seq的模型进行生产。
Seq2Seq模型由两部分组成:编码器和解码器。想象一下编码器和解码器就像是只能说两种语言的人类翻译员,每个人都有不同的母语。举个例子,我们假设编码器是以法语为母语的人,解码器是以英语为母语的人。他们有一个共同的第二语言:我们假设它是韩语。为了将法语翻译成英语,编码器将法语句子转换为韩语(称为上下文)并将上下文传递给解码器。由于解码器理解韩语,他或她现在可以从韩语翻译成英语。通过共同合作,他们可以将法语翻译成英语,如图1-1所示。
Transformer架构被发明用于改进机器翻译任务中的AI性能。“Transformer最初是作为语言模型的,”基尔切解释说,“甚至不是那么大,但后来它们变得很大。”
要使用transformer模型,你需要了解另一个技术概念:attention。注意机制是一种模仿认知注意力的技术:它逐步查看输入序列,并根据概率决定每一步哪些序列的其他部分是重要的。
例如,看看这个句子“猫吃了老鼠之后,坐在垫子上。”这个句子中的“它”指的是“猫”还是“垫子”?transformer模型可以将“它”与“猫”强烈联系起来。这就是注意力。
回到我们的编码器和解码器示例,想象一下编码器写下了对句子语义重要的关键词,并将它们连同翻译一起给解码器。这些关键词使解码器的翻译变得更容易,解码器现在知道了句子中哪些部分是重要的,哪些术语给出了句子的上下文。
Transformer模型有两种注意力类型:自注意力(句子内单词的连接)和编码器-解码器注意力(源句子中的单词与目标句子中的单词之间的连接)。
Transformer模型受益于更大的架构和更多的数据。在大型数据集上进行训练并针对特定任务进行微调可以改善结果。transformer比任何其他类型的神经网络更擅长理解句子中词语的上下文。GPT只是transformer的解码器部分。
现在你知道了GPT的含义,让我们谈谈那个“3”——以及1和2。
GPT-1作为通向具有一般语言能力的语言模型的重要里程碑。它证明了语言模型可以有效地进行预训练,这有助于它们良好地泛化。该架构可以进行各种NLP任务,只需进行很少的微调。
其成就之一是在各种NLP任务上具有良好的零样本性能,如问答(Q&A)和情感分析,这归功于预训练。零样本学习是指模型在过去没有看到任何该类示例的情况下执行任务的能力;模型应该在没有查看任何示例的情况下理解任务。零样本任务转移是一种设置,在该设置中,模型被呈现给少量甚至没有示例,并被要求基于示例和说明理解任务。
GPT-2表明,训练更大的数据集并拥有更多参数会提高语言模型理解任务并在零样本设置下超越许多任务的最新技术的能力。它还表明,甚至更大的语言模型在自然语言理解方面表现会更好。
GPT-2在多个数据集上进行了评估,包括阅读理解、摘要、翻译和问答等下游任务。
在构建更加健壮和强大的语言模型的过程中,OpenAI构建了GPT-3模型。它的数据集和模型都比用于GPT-2的数据集和模型大约大两个数量级:GPT-3具有1750亿个参数,并且在训练过程中使用了五种不同文本语料库的混合数据,这是比GPT-2更大的数据集。GPT-3的体系结构与GPT-2基本相同。它在零样本和少样本设置下在下游NLP任务上表现良好。
少样本、一样本和零样本设置是零样本任务转移的专业案例。在少样本设置中,模型提供了一个任务描述和尽可能多的与模型上下文窗口相匹配的示例。在一样本设置中,模型提供了确切的一个示例,而在零样本设置中,则没有提供示例。
OpenAI研究人员在研究GPT-3时尝试了不同的模型大小。他们采用了现有的GPT-2结构并增加了参数数量。作为实验结果,产生了具有新的和非凡能力的模型——GPT-3。虽然GPT-2在下游任务中显示出了一些零样本能力,但当提供示例上下文时,GPT-3可以执行更多的新任务。
Viable的CEODanielErickson,其公司拥有一款由GPT-3提供支持的产品,赞扬该模型通过他所称的提示驱动式开发从大型数据集中提取见解的能力。
Erickson认为,这一类使用案例的问题在于已经过度拥挤,吸引了许多雄心勃勃的初创企业创始人竞相提供类似的服务。相反,Erickson建议转而考虑另一类使用案例,就像Viable所做的那样。基于数据驱动的使用案例没有提示生成使用案例那样拥挤,但它们更有利可图,并且可以轻松地创建一个安全的“壕沟”。
Erickson表示,关键在于建立一个大型数据集,并不断添加数据,以提供潜在的见解。GPT-3将帮助您从中提取有价值的见解。在Viable,这就是让他们轻松实现盈利的模型。“人们为数据付的钱比为提示输出付的钱要多得多,”Erickson解释道。
需要注意的是,技术革命也带来了争议和挑战。对于试图塑造叙事的任何人来说,GPT-3是一个强大的工具。如果没有足够的关怀和善意,我们将面临的一个挑战是遏制试图利用该算法传播虚假信息的企图。另一个挑战将是消除其用于生成大量低质量数字内容的用途,这些内容将污染互联网上可用的信息。还有一个挑战是其数据集的局限性,这些数据集充满了各种各样的偏见,而这些偏见可能会被这项技术放大。我们将在第六章中更详细地探讨这些挑战,同时讨论OpenAI为解决这些挑战所做的各种努力。
截至2021年,市场已经产生了几种拥有比GPT-3更多参数的专有AI模型。然而,对它们的访问仅限于公司研发部门内的少数人,这使得不可能评估它们在现实世界NLP任务中的性能。
公司决定最初以有限的beta用户列表的形式发布对API的访问权限。申请过程要求人们填写一份详细说明他们背景和请求API访问权限的原因的表格。只有批准的用户才被授予访问名为Playground的API的私人beta权限。
在早期,GPT-3beta访问的等待列表中有数万人。OpenAI迅速处理了开始涌入的申请,分批添加开发者,但也密切监控他们对API用户体验的活动和反馈,以持续改进它。
新用户最初会获得一定数量的免费信用额,可以自由地尝试API。信用额相当于创建长度为三本普通长度小说的文本内容。免费信用额用完后,用户开始支付使用费用,或者如果有需要,他们可以向OpenAIAPI客户支持申请额外的信用额。
一旦您注册了OpenAI账户,您可以继续阅读第二章,我们将讨论API的不同组件、GPT-3Playground,以及如何针对不同的用例最大限度地利用API的能力。
^(1)马尔科姆·格拉德威尔,《异类:成功的故事》(小布朗,2008年)。
即使GPT-3是世界上最复杂和复杂的语言模型,其功能也被抽象为一个简单的“文本输入,文本输出”的接口提供给最终用户。本章将带您开始使用该接口、Playground,并涵盖OpenAIAPI的技术细节,因为细节总是揭示真正的精华。
您的OpenAI开发者账户提供了访问API和无限可能性的权限。我们将从Playground开始,这是一个基于Web的沙盒环境,允许您尝试API,了解其组件的工作原理,并访问开发者文档和OpenAI社区。然后,我们将向您展示如何构建强大的提示,以生成您应用程序的良好响应。最后,我们将通过GPT-3执行四个自然语言处理任务的示例来结束本章:分类、命名实体识别(NER)、摘要和文本生成。
在一次与OpenAI产品和合作副总裁彼得·韦林德(PeterWelinder)的采访中,我们询问了如何为首次使用Playground的用户提供关键建议。他告诉我们,他的建议取决于用户的角色。如果用户具有机器学习背景,彼得鼓励他们“首先忘记他们已经知道的东西,然后只需进入Playground,尝试让GPT-3做你希望它做的事情,只需询问它。”他建议用户“把GPT-3想象成你要求做某事的朋友或同事。你会如何描述你希望他们做的任务?然后,看看GPT-3如何回应。如果它的回应不符合你的要求,就修改你的指令。”
这里是开始使用Playground的步骤:
这是您可以在图2-2中看到的提示:
Iamahighlyintelligentquestionansweringbot.Ifyouaskmeaquestionthatisrootedintruth,Iwillgiveyoutheanswer.Ifyouaskmeaquestionthatisnonsense,trickery,orhasnoclearanswer,Iwillrespondwith"Unknown".Q:WhatishumanlifeexpectancyintheUnitedStatesA:HumanlifeexpectancyintheUnitedStatesis78years.Q:WhowaspresidentoftheUnitedStatesin1955A:DwightD.EisenhowerwaspresidentoftheUnitedStatesin1955.Q:WhichpartydidhebelongtoA:HebelongedtotheRepublicanParty.Q:WhatisthesquarerootofbananaA:UnknownQ:HowdoesatelescopeworkA:Telescopesuselensesormirrorstofocuslightandmakeobjectsappearcloser.Q:Wherewerethe1992Olympicsheld这是完成:
A:The1992OlympicswereheldinBarcelona,Spain.现在您已经了解了Playground的基本概述,让我们深入了解提示工程和设计的细节。
OpenAIAPI彻底改变了我们与AI模型互动的方式,剥离了复杂的编程语言和框架。特斯拉人工智能总监AndrejKarpathy在GPT-3发布后开玩笑地说,编程3.0就是关于提示设计的(他发布的表情包在图2-3)。您提供的训练提示与您获得的完成质量之间存在直接关系。您的文字结构和排列方式会严重影响输出。了解提示设计是释放GPT-3真正潜力的关键。
写好提示的秘诀在于了解GPT-3对世界的了解。正如Awan指出的那样:“它只看过文本。这意味着你不应该期望它了解物理世界,尽管它显然了解。它可以描述《蒙娜丽莎》,[可能]告诉你[关于]它的意义,重要性,历史[的],但它从未见过[这幅画],因为它只受过文本训练。”
你的工作是让模型利用它已有的信息生成有用的结果。在字谜游戏中,表演者给其他玩家足够的信息来猜出秘密单词。同样,对于GPT-3,我们只给模型足够的上下文(以训练提示的形式)来找出模式并执行给定的任务。
在设计训练提示时,目标是从模型中获得一个零-shot的响应:也就是说,看看你是否可以在没有引导模型的外部训练示例的情况下获得你想要的响应。如果不能,那么向前移动,而不是向它展示整个数据集,而是向它展示一些例子。设计训练提示的标准流程是首先尝试零-shot,然后是几-shot,然后是基于语料库的微调(稍后在本章中描述)。
GPT-3是通向通用人工智能的第一步,因此它也有其局限性。它并不知道一切,也无法以人类的方式推理,但是当你知道如何与它交流时,它是非常有能力的。这就是提示工程艺术的地方。
GPT-3并非真相说者,但它是一位出色的故事讲述者。它接受文本输入,并试图以它认为最佳完成输入的文本来回应。如果你给它几行你最喜欢的小说,它会试图以相同风格继续。它通过导航上下文来工作,没有适当的上下文,它会生成不一致的回应。让我们看一个例子,以了解GPT-3是如何处理输入提示并生成输出的:
Q:WhatishumanlifeexpectancyintheUnitedStatesA:如果你向GPT-3提供这样的提示而没有任何上下文,你实际上是在要求它从其训练数据宇宙中寻找一般性答案。结果将是一般化和不一致的回应,因为模型不知道使用哪部分训练数据来回答问题。
另一方面,提供正确的上下文将会极大地提高回应的质量。它简单地限制了模型必须检查以回答问题的训练数据的宇宙,从而产生更具体和切题的回应:
Iamahighlyintelligentquestionansweringbot.Ifyouaskmeaquestionthatisrootedintruth,Iwillgiveyoutheanswer.Ifyouaskmeaquestionthatisnonsense,trickery,orhasnoclearanswer,Iwillrespondwith"Unknown".Q:WhatishumanlifeexpectancyintheUnitedStatesA:你可以把GPT-3处理输入的方式想象成人类大脑的处理方式。当有人向我们提出任何没有适当上下文的问题时,我们往往会给出随机的回应。这是因为没有任何适当的方向或上下文,很难得到精确的回应。GPT-3也是如此;它的训练数据宇宙如此之大,以至于在没有任何外部上下文或方向的情况下,很难导航到正确的响应。
像GPT-3这样的LLM在给定正确上下文的情况下能够进行创意写作和回答事实性问题。以下是我们用于创建高效和有效的训练提示的五步公式:
这些步骤将作为每次从零开始创建训练提示时的标准框架。在您可以为数据问题构建端到端解决方案之前,您需要更多地了解API的工作原理。让我们通过查看其组件来深入了解。
我们将在章节中更详细地讨论图2-4中的所有这些组件。
表2-1显示了OpenAIAPI中组件的概述。
表2-1.OpenAIAPI中的组件
执行引擎确定用于执行的语言模型。选择正确的引擎是确定您模型能力的关键,从而获得正确输出。GPT-3提供了四种大小和功能各异的执行引擎:Davinci、Ada、Babbage和Curie。Davinci是最强大的,也是Playground的默认引擎。
响应长度设置了API在其完成中包含多少文本的限制。因为OpenAI按API调用生成的文本长度收费(如前所述,这转化为令牌,或者是单词的数字表示),响应长度(也以令牌表示)对于预算有限的人来说是一个关键参数。更高的响应长度将使用更多的令牌并且成本更高。例如,如果进行分类任务,将响应文本调节器设置为100不是一个好主意:API可能会生成无关的文本并使用额外的令牌,这将在您的账户上产生费用。由于技术限制,API支持最多2048个令牌的提示和完成的组合。因此,在使用API时,您需要小心,确保提示和预期完成不超过最大响应长度,以避免突然完成。如果您的用例涉及大文本提示和完成,解决方法是想出在令牌限制内解决问题的创造性方法,例如缩短提示,将文本分成较小的片段,并链接多个请求。
温度调节器控制响应的创造性,表示为从0到1的范围。温度值较低意味着API将预测模型看到的第一件事情,导致最正确但可能枯燥,变化较小的文本。另一方面,温度值较高意味着模型在预测结果之前评估可能适合上下文的响应。生成的文本将更加多样化,但语法错误和无意义生成的可能性更高。
TopP控制模型应考虑的随机结果数量,如温度调节器所建议的;它确定了随机性的范围。TopP的范围是从0到1。接近零的值意味着随机响应将受到限制:例如,如果值为0.1,则只有10%的随机响应将被视为完成。这使得引擎确定性,这意味着它将始终为给定的输入文本生成相同的输出。如果值设置为1,API将考虑所有响应以完成,冒险并提出创造性的响应。较低的值限制了创造力;较高的值扩展了视野。
我们始终建议更改TopP或温度,并将另一个设置为1。
大型语言模型依赖概率方法而不是传统逻辑。它们可以为相同输入生成各种响应,具体取决于您设置模型参数的方式。模型试图在其训练的数据宇宙中找到最佳的概率匹配,而不是每次都寻找完美解决方案。
假设你要使用GPT-3为你的初创公司生成名称。您可以将温度调节旋钮设置为较高水平,以获得最具创意的响应。当我们日夜努力寻找我们初创公司的完美名称时,我们调高了温度。GPT-3出手相助,帮助我们找到了一个我们喜欢的名字:Kairos数据实验室。
在其他情况下,您的任务可能需要很少或根本不需要创造力:例如分类和问答任务。对于这些任务,请保持较低的温度。
让我们看一下图2-5,使用一个简单的分类示例,根据它们的名称将公司归类为一般的桶或类别。
我们的提示:
Thefollowingisalistofcompaniesandthecategoriestheyfallinto:Facebook:SocialMedia,TechnologyLinkedIn:SocialMedia,Technology,Enterprise,CareersUber:Transportation,Technology,MarketplaceUnilever:Conglomerate,ConsumerGoodsMcdonalds:Food,FastFood,Logistics,RestaurantsFedEx:以及输出:
Logistics,Shipping正如您在图2-5中看到的那样,我们再次使用温度来控制随机性的程度。您还可以通过将温度旋钮保持设置为1而更改TopP来做到这一点。
与温度和TopP调节旋钮一样,频率惩罚和存在惩罚调节旋钮考虑的是文本提示(前一个完成加上新输入),而不是内部模型参数,当决定输出时,现有文本因此影响新的完成。频率惩罚通过“惩罚”它来减少模型完全重复相同行的可能性。存在惩罚增加了它谈论新话题的可能性。
当您希望防止相同的完成文本在多个完成之间重复时,这些就派上用场了。尽管这些旋钮相似,但有一个重要区别。如果建议的文本输出重复(例如,模型在之前的完成或同一会话期间使用了完全相同的标记),并且模型选择旧输出而不是新输出,则会应用频率惩罚。如果给定文本中存在标记*,则将应用存在惩罚。
GPT-3使用最佳选择功能在服务器端生成多个完成,对它们进行幕后评估,然后为您提供最佳的概率结果。使用“最佳选择”参数,您可以指定要在服务器端生成的完成数(n)。模型将返回n个完成中的最佳完成(每个标记的最低对数概率)。
这使您能够在单个API调用中评估多个提示完成,而不是重复调用API来检查相同输入的不同完成的质量。但是,使用“最佳选择”是昂贵的:它花费了n倍于提示中的标记。例如,如果您将“最佳选择”值设置为2,则将收取输入提示中标记的两倍的费用,因为在后台,API将生成两个完成并显示给您最佳的一个。
“最佳选择”根据您的使用情况可以从1到20不等。如果您的使用情况为为客户提供一致的输出质量,则可以将“最佳选择”值设置为较高的数字。另一方面,如果您的使用情况涉及太多的API调用,则将“最佳选择”值设置为较低的数字是有意义的,以避免不必要的延迟和成本。我们建议在使用“最佳选择”参数生成多个提示时保持响应长度最小,以避免额外收费。
停止序列是一组字符,用于指示API停止生成完成。这有助于避免使用不必要的标记,对于常规用户来说,这是一项重要的节省成本功能。
您可以为API提供最多四个序列,以停止生成进一步的标记。
让我们看看图2-6中的示例语言翻译任务,以了解停止序列的工作原理。在此示例中,将英语短语翻译为法语。我们使用重启序列“英语:”作为停止序列:每当API遇到该短语时,它将停止生成新的标记。
注入开始文本和注入重启文本参数允许您分别在完成的开始或结束处插入文本。您可以使用它们来保持所需的模式。通常,这些设置与停止序列一起使用,就像我们的示例中一样。提示具有模式,其中提供了一个带有前缀“英语:”(重启文本)的英语句子,然后生成带有前缀“法语:”(开始文本)的翻译输出。因此,任何人都可以轻松区分两者,并创建一个模型和用户都可以清楚理解的训练提示。
每当我们为此类提示运行模型时,它会自动在输出之前注入开始文本“法语:”,并在下一个输入之前注入重启文本“英语:”,以便可以保持这种模式。
显示概率参数位于Playground设置窗格的底部。在传统软件工程中,开发人员使用调试器来调试(调试)一段代码。您可以使用显示概率参数来调试您的文本提示。每当您选择此参数,您将看到突出显示的文本。将光标悬停在上面将显示模型可以为指定的特定输入生成的标记列表,以及它们的相应概率。
您可以使用此参数来检查您的选项。此外,它可以帮助您看到可能更有效的替代方案。显示概率参数有三个设置:
最有可能
列出最有可能被考虑作为完成的标记,按概率递减的顺序。
最不可能
列出最不可能被考虑作为完成的标记,按概率递减的顺序。
完整光谱
显示可能被选择完成的整个标记宇宙。
让我们在一个简单提示的情境下看看这个参数。我们想要用一个简单、众所周知的短语开头输出句子:“从前有一天。”我们向API提供提示“从前有一”,然后我们在显示概率选项中选中“最有可能”选项。
如图2-7所示,它将“time”作为响应生成。因为我们将“显示概率”参数设置为最有可能,API不仅显示响应,还显示可能的选项列表以及它们的概率。
现在您已经有了一个概述,让我们更详细地看看这些组件。
如图2-7所述,OpenAIAPI提供四个执行引擎,通过参数数量和性能能力进行区分。执行引擎驱动OpenAIAPI。它们是“autoML”解决方案,提供自动化的ML方法和流程,使机器学习可用于非专家。它们易于配置并适应给定的数据集和任务。
四个主要的执行引擎按字母顺序命名,分别是:Ada(以埃达·洛夫莱斯命名)、Babbage(查尔斯·巴贝奇)、Curie(居里夫人玛丽·居里)和Davinci(列奥纳多·达·芬奇)。让我们深入了解每个执行引擎,以了解在使用GPT-3时何时使用哪个引擎,首先从达芬奇开始。
Curie旨在找到功率和速度之间的最佳平衡,这对于执行大规模分类等高频任务或将模型投入生产非常重要。
Curie在执行问答和作为通用聊天机器人方面也表现不错。例如,如果您正在构建客户支持聊天机器人,您可能会选择Curie来更快地服务高容量请求。
虽然Davinci在分析复杂文本方面更强大,但Curie可以以低延迟和闪电般的速度执行。在选择Davinci还是Curie投入生产之前,弄清楚您的用例并进行成本效益分析是明智的。
Babbage比Curie更快,但无法执行涉及理解复杂意图的任务。然而,它非常能干,并且在语义搜索排名和分析文档与搜索查询匹配程度方面是首选。它比Curie和Davinci便宜,并且是涉及频繁API调用的简单问题的首选选择。
Ada是可用引擎中最快且成本最低的。它可以执行不需要细微理解背景的简单任务,例如解析文本、纠正语法或简单分类。通过提供更多输入上下文,可以提高Ada的性能。对于涉及频繁API调用的用例,Ada可以是首选模型;通过正确配置设置,它可以实现与更大模型类似的结果。您对API参数进行的实验越多,您就会对适用于您的用例的设置有更多了解。
图2-8和2-9展示了InstructGPT和GPT系列Davinci引擎针对相同输入生成的两个输出。
我们的输入:
WriteastoryaboutAIfora5yearold.InstructGPT输出:
Robotwasveryhappy.Hehadjustbeenborn,andhewasalreadythesmartestrobotintheworld.Hecoulddoanythingthatanyotherrobotcoulddo,buthecouldalsothinkforhimself.GPT输出:
Playground是一个图形化的Web界面,它在幕后调用OpenAIAPI,但还有其他几种调用API的方式。要做到这一点,您需要熟悉其端点:在调用时相互通信的远程API。在本节中,您将熟悉八个API端点的功能和用法。
相似度分数是一个正分数,通常范围从0到300(但有时可能更高),其中分数大于200通常表示文档在语义上与查询相似。相似度分数越高,文档与查询的语义相似度就越高(在此示例中,“医院”将与“医生”最相似)。您可以作为API请求的一部分提供高达两百个文档。^(1)
以下是语义搜索端点的签名:
列出文件
返回属于用户组织或与特定用户帐户链接的文件列表。这是一个HTTPGET调用,不需要传递任何参数:
上传包含要在各种端点之间使用的文档的文件。它将文档上传到OpenAI为用户组织已分配的内部空间中。这是一个HTTPPOST调用,需要在API请求中添加文件路径:
通过提供文件ID作为请求参数,返回关于特定文件的信息:
通过提供文件ID作为请求参数,删除特定文件:
此端点提供了一个易于配置的“autoML”解决方案,可轻松适应不断变化的标签模式。您可以作为请求的一部分提供高达两百个带标签的示例,或者在查询期间提供预先上传的文件。除了提供URI路径外,此端点还需要模型和查询以及示例。其签名为:
OpenAI意识到GPT-3具有驱动基于嵌入的用例的巨大潜力,并提供了最先进的结果。为输入数据生成嵌入向量非常简单,可以通过API调用的形式来实现。要创建代表输入文本的嵌入向量,您可以使用以下签名:
让我们首先解释一下这是如何工作的。
用户现在可以根据自己的数据对GPT-3进行微调,创建适合其项目的定制版本。定制使GPT-3对各种用例可靠,并使运行模型更便宜、更高效和更快速。微调是调整整个模型,使其每次表现都符合您的期望。您可以使用任何形状和大小的现有数据集,或根据用户反馈逐步添加数据。
模型的能力和知识将被狭窄化并集中在用于微调的数据集的内容和语义上。这反过来将限制创造力和主题选择的范围,这对于诸如分类内部文件之类的下游任务或涉及内部行话的任何用例都是有利的。它通过将GPT-3的注意力集中在微调数据上并限制其知识库来实现。
使用不到一百个示例,您就可以开始看到微调GPT-3的好处,随着您添加更多数据,性能将继续提高。在PALMS研究论文中,OpenAI展示了如何使用不到一百个示例对GPT-3的性能进行改进。OpenAI还发现,示例数量加倍通常会线性提高质量。
定制GPT-3改善了输出的可靠性,提供了更一致的结果,您可以依赖它来进行生产用例。现有的OpenAIAPI客户发现,定制GPT-3可以显着减少不可靠输出的频率,并且有一个日益增长的客户群可以通过其性能数据为此作证。让我们来看看定制了GPT-3的四家公司。
KeeperTax帮助独立承包商和自由职业者处理税务。它使用各种模型来提取文本和分类交易,然后识别易于忽视的税收减免,以帮助客户直接从应用程序申报税款。通过定制GPT-3,KeeperTax的准确率从85%提高到了93%。并且,由于每周向模型添加500个新的训练示例,这一持续改进正在导致准确率每周提高约1%。
Viable帮助公司从客户反馈中获得见解。通过定制GPT-3,Viable能够将大量的非结构化数据转化为可读的自然语言报告,并提高报告的可靠性。因此,总结客户反馈的准确性提高了从66%到90%。想要深入了解Viable的旅程,请参考我们在第四章中与Viable首席执行官的访谈。
SanaLabs是人工智能在学习领域开发和应用的全球领导者。该公司的平台利用最新的机器学习突破,为企业提供个性化学习体验。通过使用自己的数据定制GPT-3,Sana的问题和内容生成从语法上正确但泛泛的响应变为高度准确的响应。这带来了60%的改进,为他们的用户提供了更个性化的体验。
要开始定制GPT-3,你只需在OpenAI命令行工具中运行一个命令,并提供一个文件。你定制的版本将开始训练,然后立即在OpenAIAPI中可用。
在非常高层次上,为你的应用程序定制GPT-3涉及以下三个步骤:
训练数据是模型接受的微调输入。你的训练数据必须是一个JSONL文档,其中每一行是一个与训练示例相对应的提示-完成对。对于模型微调,你可以提供任意数量的示例。强烈建议你创建一个以价值为目标的数据集(我们将在第六章中定义和讨论),以提供高质量且广泛表达的数据给模型。微调通过提供更多示例来改善性能,所以你提供的示例越多,结果就越好。
你的JSONL文档应如下所示:
{"prompt":"prompttext","completion":"idealgeneratedtext"}{"prompt":"prompttext","completion":"idealgeneratedtext"}{"prompt":"prompttext","completion":"idealgeneratedtext"}...在提示文本中应包括你想完成的确切提示文本,而理想生成的文本应包括你想要GPT-3生成的期望完成文本的示例。
你可以使用OpenAI的CLI数据准备工具轻松地将数据转换成这种文件格式。CLI数据准备工具接受不同格式的文件;唯一要求是它们包含提示和完成列/键。你可以传递CSV、TSV、XLSX、JSON或JSONL文件,该工具将将输出保存到一个准备进行微调的JSONL文件中。要执行此操作,请使用以下命令:
openaitoolsfine_tunes.prepare_data-fLOCAL_FILE其中LOCAL_FILE是你准备用于转换的文件。
一旦按上述方法准备好训练数据,你就可以借助OpenAICLI开始微调作业。为此,你需要以下命令:
openaiapifine_tunes.create-tTRAIN_FILE_ID_OR_PATH-mBASE_MODEL其中BASE_MODEL是你正在使用的基础模型名称(Ada、Babbage、Curie或Davinci)。运行此命令会执行几件事:
一旦模型成功微调,你就可以开始使用它了!你现在可以将这个模型指定为完成端点的参数,并使用Playground向其发出请求。
你可以通过使用以下命令将模型名称作为完成请求的模型参数来开始发送请求:
openaiapicompletions.create-mFINE_TUNED_MODEL-pYOUR_PROMPT其中FINE_TUNED_MODEL是你的模型名称,YOUR_PROMPT是你想在此请求中完成的提示。
你可以继续在这些请求中使用在本章中讨论的所有完成端点参数,如温度、频率惩罚、存在惩罚等,对新微调的模型进行请求。
这些请求未指定引擎。这是故意设计的,OpenAI计划在将来对其他API端点进行标准化。
在深入研究不同提示如何消耗令牌之前,让我们更仔细地看看什么是令牌。
我们告诉过你,令牌是单词或字符的数值表示。使用令牌作为标准度量,GPT-3可以处理从几个单词到整个文档的训练提示。
对于常规英文文本,1个令牌大约包含4个字符。这大致相当于三分之四个单词,因此一百个令牌大约会有大约75个单词。作为参考,莎士比亚的作品约有900,000个单词,这大致相当于120万个令牌。
为了保持API调用的延迟,OpenAI对提示和完成设置了2,048个令牌(大约1,500个单词)的限制。
为了进一步了解在GPT-3的背景下如何计算和消耗令牌,并保持API设定的限制之内,让我们逐步了解您可以衡量令牌计数的方式。
在Playground中,当您将文本输入界面时,您可以看到右下角页脚实时更新令牌计数。点击生成按钮后,它将显示由文本提示消耗的令牌数量。您可以使用它来监控每次与Playground交互时的令牌消耗情况(参见图2-10)。
衡量令牌消耗的另一种方法是使用GPT-3Tokenizer工具(图2-11),该工具允许您可视化从字符到令牌的形成过程。您可以通过一个简单的文本框与Tokenizer交互,在其中键入提示文本,Tokenizer会显示令牌和字符计数以及详细的可视化。
要将令牌计数指标集成到您对不同端点的API调用中,您可以通过API请求补丁logprobs和echo属性,以获取所消耗的完整令牌列表。
在下一节中,我们将介绍基于不同执行引擎定价令牌的方式。
在上一节中,我们谈到了令牌,这是OpenAI用来确定API调用定价的最小可互换单元。令牌比测量训练提示中使用的单词或句子的数量具有更大的灵活性,由于令牌的粒度,它们可以很容易地被处理和用于衡量各种训练提示的定价。
每次你从Playground或以编程方式调用API,API在幕后计算用于训练提示和生成完成的令牌数量,并根据使用的总令牌数量收取每次调用的费用。
OpenAI通常每1,000个令牌收取固定费用,费用取决于API调用中使用的执行引擎。Davinci是最强大且最昂贵的,而Curie、Babbage和Ada则更便宜且更快。
表2-2显示了本章撰写时(2021年12月)各种API引擎的定价。
表2-2.模型定价
在图2-12中,你可以看到一个条形图显示了每日token的消耗量。该仪表板帮助你监控组织的token使用情况和成本,以便你可以调节API使用情况,并保持在预算范围内。还有一个选项可以监控累积使用量,并获取每个API调用的token计数的细分。这应该为你提供足够的灵活性,以制定围绕token消耗和定价的政策。现在你已经了解了Playground和API的方方面面,我们将看一下GPT-3在典型语言建模任务上的表现。
刚开始接触GPT-3的初学者可能会发现很难理解token的消耗。许多用户输入的提示文本过长,导致信用额度的过度使用,随后产生意外费用。为了避免这种情况,在最初的几天里,使用API使用仪表板观察token消耗量,并了解提示文本和完成的长度如何影响token使用情况。这可以帮助防止信用额度的不受控制使用,并保持一切在预算范围内。
GPT-3是自然语言处理领域的一个高度先进和复杂的继任者,采用核心自然语言处理方法和深度神经网络构建和训练。对于任何基于人工智能的建模方法,模型性能是通过以下方式评估的:首先,你使用训练数据为特定任务(如分类、问答、文本生成等)训练模型;然后,使用测试数据(新的、之前未见的数据)验证模型性能。
类似地,有一套用于评估自然语言处理模型性能并制定相对模型排名或比较的标准自然语言处理基准。这种比较,或相对排名,使你可以为特定的自然语言处理任务(业务问题)选择最佳模型。
在本节中,我们将讨论GPT-3在一些标准自然语言处理任务中的表现,如图2-13中所示,并将其与类似模型在相应自然语言处理任务中的表现进行比较。
文本分类是将文本分类到组织好的群组中的过程。通过使用自然语言处理,文本分类可以自动分析文本,然后根据其上下文分配一组预定义的标签或类别。
文本分类涉及分析提供的文本并为其分配标签、分数或其他属性来描述它。一些常见的文本分类示例包括情感分析、主题标记和意图检测。您可以使用多种方法让GTP-3对文本进行分类,从零样本分类(不给模型任何示例)到单样本和少样本分类(向模型展示一些示例)。
现代人工智能长期以来一直致力于开发能够对它们从未见过的数据执行预测功能的模型。这个重要的研究领域被称为零样本学习。同样,零样本分类是一种分类任务,其中模型在对一段文本进行分类时不需要在标记数据上进行先前训练或微调。GPT-3目前在对未见过的数据产生的结果上要么优于,要么与针对特定目的进行微调的最先进的AI模型相媲美。要使用GPT-3执行零样本分类,我们必须为其提供兼容的提示。以下是一个零样本分类的示例,目标是执行事实核查分析,以确定推文中包含的信息是否正确或不正确。图2-14显示了一个基于零样本示例的信息正确性分类结果,相当令人印象深刻。
这是我们的提示:
Analyzethetweetintermsofinformationcorrectness.Tweet:"Morethan50%ofglobalscientistsdon'tbelieveinclimatechange."Analysis:和输出结果:
Thetweetisincorrect.单样本和少样本分类文本分类的另一种方法是通过对单个或少数训练示例对AI模型进行微调,分别称为单样本或少样本文本分类。当您提供如何对文本进行分类的示例时,模型可以根据这些示例学习有关对象类别的信息。这是零样本分类的超集,它允许您通过向模型提供三到四个多样化的示例来对文本进行分类。这对于需要一定程度的上下文设置的下游用例特别有用。
让我们来看一个少样本分类的例子。我们要求模型执行推文情感分析分类,并给出三个推文示例来说明每个可能的标签:积极的、中性的和消极的。正如你在图2-15中所看到的,配备了这样详细的上下文的模型,能够非常容易地对下一个推文进行情感分析。
当你重新创建书中的提示示例,或者创建自己的示例时,请确保你的提示中有足够的行间距。段落之后的额外一行可能会导致非常不同的结果,所以你需要尝试一下,看看哪种效果最好。
Analyzethetweetintermsofitssentiment.Dependingonthesentiment,classifyitaspositive,neutral,ornegative.Tweet:"I'mseriouslyworriedthatsuperintelligentAIwillbedisappointedinhumans."Sentimentanalysis(positive,neutral,negative):negativeTweet:"IcannotwaitforsuperintelligentAItoemergeanddeepenourunderstandingoftheUniverse."Sentimentanalysis(positive,neutral,negative):positiveTweet:"IthinkitisneithersuperlikelynorsuperunlikelythatthesuperintelligentAIwillemergeoneday."Sentimentanalysis(positive,neutral,negative):neutralTweet:"SuperintelligentAIisgoingtobethemostexcitingdiscoveryinhumanhistory."Sentimentanalysis(positive,neutral,negative):以下是输出:
positive批量分类在了解了GPT-3的少量样本分类后,让我们深入了解批量分类,它使您能够在单个API调用中对输入样本进行批量分类,而不是每次只对一个示例进行分类。它适用于您想要一次性分类多个示例的应用程序,就像我们检查的推文情感分析任务一样,但是分析一系列推文。
与少量样本分类类似,您希望提供足够的上下文以使模型实现期望的结果,但以批量配置格式提供。在这里,我们使用批量配置格式中的不同示例定义了不同类别的推文情感分类(图2-16和2-17)。然后我们要求模型分析下一批推文。
1.negative2\.neutral3\.positive4\.positive5\.negative如您所见,模型重新创建了批量情感分析格式并成功对推文进行了分类。现在让我们看看它在命名实体识别任务中的表现。
在以下示例中,我们使用了此书编写时处于测试版状态的davinci-instruct-series模型版本,该模型收集提示以训练和改进未来的OpenAIAPI模型。我们给它一个简单的任务:从示例电子邮件中提取联系信息。它在第一次尝试时成功完成了任务(图2-18)。
这是我们的输入:
Extractthenameandmailingaddressfromthisemail:Shubham,Itwasgreattotalktoyoutheotherday!I'mSOlookingforwardtostartworkingonourbook.Here'smyaddress1307RooseveltStreet,SanFranciscoCA94107Best,SandraKublikNameandmailingaddress:以下是输出:
NLP模型可以被训练以理解文档,并识别传达重要事实和信息的部分,然后生成摘要文本。然而,这样的模型在它们能够学习上下文并开始总结未见输入之前,需要大量的训练样本。
GPT-3的抽象总结是解决信息提取问题的关键。通过生成摘要而不仅仅是提取关键信息,GPT-3可以提供对文本的更全面和准确的理解。它采用零样本或少样本方法进行文本摘要,因此适用于各种用例。使用GPT-3,您可以根据用例的不同方式进行文本摘要:基本摘要、一行摘要或年级摘要。让我们快速浏览一下这些方法。
Theproblemisthatwhenitworks,itworks,butwhenitdoesn't,itreallydoesn't.Luckily,thegame'slowpointslikethehorriblebinarystealthsystemandthebugsandlackofQoLareeitherfixableorvastlyoutweighedbythegoodbits,andtheoveralltallystillendsupbeingmuchhigherthantheaverageofmanyothergamesoutthere.That'shelpedalotbythemoment-to-momentgameplay,whichpaysoffjustasmuchasthestorybeats;themovementsystemletsyouclimbalmostanyshortobject,vehiclesareweightytodrive,andhavefantasticinteriorandexteriordesigns,andgunsfeelproperlyloudandheavy.Itsstoryandnarrativekeptmegluedtothescreen,andeverything–fromsexscenesandromanceoptionstoKeanuReevestryingtokillyouorhelpyouthroughoutthegame–areremarkablywelldone.Cyberpunk2077isagamecraftedwithlove,anditshows.tl;dr:输出结果:
Cyberpunk2077isagamecraftedwithlove,anditshows.Thestoryisgreat,thegameplayisgreat,theworldbuildingisgreat.It'snotperfectbyanymeans,butit'sstilloneofthebestgamesI'veplayedinyears.TheGood:-Greatstoryandcharacters-Amazingworldbuilding-ExcellentgunplayandmovementsystemTheBad:-Binarystealthsystem(sometimesyou'reseennomatterwhat)-Bugs由于许多人每天花费数小时阅读和撰写电子邮件,将它们进行摘要是GPT-3的一种广泛期望的用例。让我们看看GPT-3如何将三段邮件摘要为一行简洁的句子(参见图2-20)。
为了达到期望的结果,我们粘贴了完整的电子邮件,然后简单地在末尾添加了“一句话摘要:”。我们还包括了一个“.”停止序列,告诉模型在生成摘要后应该停止其摘要生成。
HeyGreg,WeareSandraandShubham.Wearetheco-authorsofaGPT-3basedbookthataimstobeago-tomanualforAPIusers.ItwillprovidethereaderswiththeknowledgetogetstartedwithGPT-3aswellasthecontextofthegrowingecosystemsurroundingit.ThebookwillbereleasedbyO'Reillypublishinghousebyearly2022.We'dliketoconnectandexplorethepossibilityofcollaborationwithOpenAItoevangelizeaccesstoAPIforpeoplefromallbackgroundsandenablethemtobuildexcitingnewsolutionsusingGPT-3\.WewouldappreciateyourinputtoensureweaccuratelyrepresentOpenAI'sstanceonGPT-3andinformourreadersontheupcomingadvancements/featuresoftheAPI.ItwillbegreatifwecancatchupsometimethisweektodiscussitfurtherBest,S&Sone-sentencesummary:输出结果:
We'rewritingabookonGPT-3andwouldliketoconnectwithOpenAItogetabetterunderstandingoftheAPIandthefuturedevelopments.文本生成在引入GPT-3之前,人们普遍认为AI模型能够与人类进行短暂的对话,回答特定问题或处理特定任务。然而,这些模型还不够复杂,无法处理复杂的文本生成任务,一旦遇到复杂或抽象的内容,它们就开始失去对话的脉络。
在接下来的两个示例中,我们尝试使用GPT-3为个人生产力应用创业公司和社交媒体帖子创建内容。我们只给模型提供了最少的上下文,它在第一次尝试时就生成了图2-21和2-22中的许多响应。
Herearethetop5tipsforpersonalproductivity.输出结果如下:
WriteasocialmediapostforFacebook,Twitter,andInstagramaboutlaunchinganewbetaversionofthepersonalproductivityapp.Facebookpost:输出结果如下:
"Afterextensiveusertesting,wearehappytoannouncethatourlatestupdateisavailablefordownload!Ourteamhasworkedhardtocreatethebestversionofourappyet.Downloaditnowforfreeatwww.app.com."Twitterpost:"We'rerollingoutanupdatedversionofyourfavoriteproductivityapp!NowavailableoniOSandAndroid.#productivity#beta"Instagrampost:"Wejustreleasedanewbetaversionofyourfavoriteproductivityapp!DownloadittodayforfreeoniOSandAndroid.#productivity#beta"结论在本章中,我们介绍了OpenAIPlayground,提示工程以及OpenAIAPI的不同组件,接着是覆盖主要NLP任务的Playground示例。到目前为止,你应该已经了解了API是如何与不同组件配合工作的,以及如何使用Playground作为设计和尝试不同训练提示的基础。
在下一章中,我们将指导您如何使用GPT-3与不同的编程语言结合使用API来将其整合到您的产品中或从头开始构建全新的应用程序。
^(2)一个长期存在的互联网缩写,意思是“太长,没看”。
几乎所有GPT-3的NLP功能都是使用Python编程语言创建的。但为了实现更广泛的可访问性,API内置支持所有主要的编程语言,因此用户可以使用他们选择的编程语言构建基于GPT-3的应用程序。
在本节中,我们将通过复制一个示例来说明这是如何工作的,该示例涉及三种常见的编程语言:Python、Go和Java。
提醒一下:在每个特定语言的部分中,我们假设你对所讨论的编程语言有基本的了解。如果没有,你可以安全地跳过该部分。
Python是数据科学和机器学习任务中最流行的语言。与传统的数据科学编程语言(如R和Stata)相比,Python的优势在于其可扩展性和与数据库的良好集成。它被广泛使用,并有一个蓬勃发展的开发者社区,使其生态系统保持更新。Python容易学习,并且带有诸如NumPy和pandas等有用的数据科学库。
Chronology托管在PyPI上,并支持Python3.6及以上版本。要安装该库,请运行以下命令:
在此示例中,我们将使用以下训练提示:
Mysecond-graderaskedmewhatthispassagemeans:"""Oliveoilisaliquidfatobtainedfromolives(thefruitof*Oleaeuropaea*;familyOleaceae)..."""Irephraseditforhim,inplainlanguageasecond-gradercanunderstand:"""首先,导入以下依赖项:
#ImportingDependenciesfromchronologicalimportread_prompt,cleaned_completion,main现在我们可以创建一个函数,该函数读取训练提示并提供完成输出。我们将此函数异步化,这允许我们进行并行函数调用。我们将使用以下API参数配置:
#Takesinthetrainingpromptandreturnsthecompletedresponseasyncdefsummarization_example():#Takesinatextfile(summarize_for_a_2nd_grader)astheinputpromptprompt_summarize=read_prompt('summarize_for_a_2nd_grader')#CallingthecompletionmethodalongwiththespecificGPT-3parameterscompletion_summarize=awaitcleaned_completion(prompt_summarize,max_tokens=100,engine="davinci",temperature=0.5,top_p=1,frequency_penalty=0.2,stop=["\n\n"])#Returnthecompletionresponsereturncompletion_summarize现在我们可以创建一个异步工作流,使用库提供的main函数调用该工作流,并在控制台中打印输出:
#Designingtheend-to-endasyncworkflow,capableofrunningmultipleprompts#inparallelasyncdefworkflow():#Makingasynccalltothesummarizationfunctiontext_summ_example=awaitsummarization_example()#Printingtheresultinconsoleprint('-------------------------')print('BasicExampleResponse:{0}'.format(text_summ_example))print('-------------------------')#invokeChronologybyusingthemainfunctiontoruntheasyncworkflowmain(workflow)将其保存为名为text_summarization.py的Python脚本,并从终端运行以生成输出。您可以从根目录运行以下命令:
pythontext_summarization.py执行脚本后,您的控制台应打印出以下提示的摘要:
Go是一种开源编程语言,结合了其他编程语言的最佳特性,将解释的、动态类型的语言的编程便利性与静态类型的、编译的语言的效率和安全性结合在一起。开发人员通常称其为“21世纪的C语言”。
Go是构建需要高安全性、高速度和高模块化的项目的首选语言。这使得它成为金融科技行业许多项目的有吸引力的选择。Go的主要特点如下:
首先,您将创建一个模块来跟踪和导入代码依赖项。使用以下命令创建并初始化gogpt模块:
让我们首先导入必要的依赖和包:
#Callingthepackagemainpackagemain#ImportingDependenciesimport("fmt""io/ioutil""context"gogpt"github.com/sashabaranov/go-gpt3")Go编程将源文件组织成称为包的系统目录,这使得在Go应用程序之间重用代码变得更容易。在代码的第一行中,我们调用main包,告诉Go编译器该包应该编译为可执行程序,而不是共享库。
在Go语言中,每当你构建可重用的代码片段时,你会开发一个作为共享库的包。但是当你开发可执行程序时,你将使用main包来使包成为可执行程序。因为我们将在该包中调用主函数,main将被设置为我们可执行程序的入口点。
现在,你将创建一个main函数,它将承载读取训练提示和提供完成输出的整个逻辑。使用以下配置作为API参数:
funcmain(){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,Temperature:0.5,TopP:1.0,Stop:[]string{"\n\n"},FrequencyPenalty:0.2,Prompt:string(prompt),}resp,err:=c.CreateCompletion(ctx,"davinci",req)iferr!=nil{return}fmt.Println("-------------------------")fmt.Println(resp.Choices[0].Text)fmt.Println("-------------------------")}该代码执行以下任务:
然后,你可以将代码文件保存为text_summarization.go并从终端运行它以生成输出。使用以下命令从你的根文件夹运行该文件:
goruntext_summarization.go一旦你执行了该文件,你的控制台将打印出以下输出:
Java是用于开发传统软件系统的最古老和最流行的编程语言之一;它还是一个带有运行时环境的平台。它是由SunMicrosystems(现在是Oracle的子公司)于1995年开发的,截至今天,超过三十亿台设备都在运行它。它是一种通用的、基于类的、面向对象的编程语言,旨在具有较少的实现依赖性。其语法与C和C++类似。三分之二的软件行业仍然将Java作为其核心编程语言。
让我们再次使用橄榄油文本摘要示例。与Python和Go一样,我们将向你展示如何调用API、将训练提示作为请求发送,并使用Java获取摘要完成作为输出。
packageexample;//ImportingDependenciesimportjava.util.*;importjava.io.*;importcom.theokanning.openai.OpenAiService;importcom.theokanning.openai.completion.CompletionRequest;importcom.theokanning.openai.engine.Engine;现在,你将创建一个名为OpenAiApiExample的类。你的所有代码都将成为它的一部分。在该类下,首先使用API令牌创建一个OpenAiService对象:
classOpenAiApiExample{publicstaticvoidmain(String...args)throwsFileNotFoundException{Stringtoken="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";OpenAiServiceservice=newOpenAiService(token);现在OpenAIAPI的连接已经建立成一个serviceobject的形式。从prompts文件夹中读取训练提示:
//ReadingthetrainingpromptfromthepromptsfolderFilefile=newFile("D:\\GPT-3Book\\ProgrammingwithGPT-3\\GPT-3Java\\example\\src\\main\\java\\example\\prompts\\summarize_for_a_2nd_grader.txt");Scannersc=newScanner(file);//wejustneedtouse\\Zasdelimitersc.useDelimiter("\\Z");//ppisthestringconsistingofthetrainingpromptStringpp=sc.next();然后,您可以使用以下配置创建一个API参数的完成请求:
//CreatingalistofstringstousedasstopsequenceList
在这一节中,我们将带您了解GPT-3沙盒,这是我们创建的一个开源工具,提供样板代码,帮助您只需几行Python代码就能将您的想法变为现实。我们将向您展示如何使用它,以及如何根据您的特定应用进行自定义。
我们沙盒的目标是让您能够创建酷炫的Web应用程序,无论您的技术背景如何。它是建立在Streamlit框架之上的。
我们在示例中使用VisualStudioCode作为IDE,但您可以随意使用任何IDE。在开始之前,您需要安装IDE。请确保您正在运行Python版本为3.7或更高版本。您可以通过运行以下命令确认已安装的版本:
您所需要创建和部署Web应用程序的一切都已经在代码中存在。您只需要调整一些文件,以定制沙盒以适应您的特定用例。
转到email_generation文件夹。你的路径应该像这样:
(env)kairos_gpt3\GPT-3Sandbox\email_generation>从那里,运行以下命令:
您现在可以根据应用程序用例的要求调整API参数(最大标记数、执行引擎、温度、TopP、频率惩罚、停止序列)。我们建议您在Playground中尝试不同的参数值以确定哪些值适用于您的用例。一旦您获得满意的结果,那么您就可以在model_training_service.py文件中更改值。
就是这样!您的基于GPT-3的Web应用程序现在已准备就绪。您可以使用以下命令在本地运行它:
在接下来的几章中,我们将探讨GPT-3的不同应用以及成功的企业是如何基于它构建的。
您准备好将基于GPT-3的应用程序投入生产了吗?
在本章中,我们学习了如何使用OpenAIAPI来编程使用Python、Go和Java语言。我们还介绍了使用Streamlit创建的低代码沙盒环境,它将帮助你快速将你的想法变成应用程序。最后,我们查看了上线GPT-3应用程序的关键要求。这一章节为你提供了API的编程前景;未来我们将更深入地探讨GPT-3赋能的蓬勃生态系统。
在发布GPT-3之前,大多数人与人工智能的互动局限于某些特定任务,比如要求Alexa播放你喜欢的歌曲或使用Google翻译与不同语言交流。研究人员已成功开发出能够执行日常任务的人工智能,但到目前为止,人工智能尚未能够像人类一样在没有清晰、明确定义的指令的情况下发挥抽象任务方面的创造潜力。
随着LLM时代即将来临,我们正在目睹一个重大的范式转变。LLM向我们展示了,通过增加模型的规模,它们可以执行类似于人类的创造性和复杂的任务。现在最大的问题是:人工智能能够执行创造性活动吗?
人工智能的创造潜力一直是一个令人兴奋的研究领域,尽管大部分隐藏在像Google和Facebook这样的公司的紧密研发墙后。GPT-3正在改变我们与人工智能的互动方式,并赋予人们建立下一代应用的能力,这些应用在其发布之前似乎是一个遥不可及的想法。IBM研究的多媒体和视觉经理约翰·史密斯指出:“对于人工智能来说,随机提出新颖的东西很容易。但要提出新颖、意外且有用的东西却很难。”而Somatic的CEO杰森·托伊则问道:“我们能否将人类认为美丽和富有创意的东西放入算法中?”^(1)
在本章中,我们将向您展示GPT-3如何通过为创意企业家提供正确的技术,激发他们的想象力,推动下一波创业浪潮。我们还将探讨人工智能研究在多个领域的商业化进展。我们将与支持这些倡议的风险投资家之一交谈,以了解蓬勃发展的GPT-3经济的财务方面。
OpenAIAPI的创建故事与本章中许多创业公司的故事类似。我们采访了OpenAI的彼得·韦林德。他告诉我们的是一个大胆实验、快速迭代和利用智能设计实现规模经济的故事(以尽可能低的成本为条件提供大规模的强大模型)。
Welinder概括了OpenAI的使命,提出了三个关键点:“开发通用人工智能,确保其安全,然后最后将其部署到世界上,以使其最大程度地造福所有人类。”因此,公司正在致力于开发可以应用于越来越广泛需求的人工智能。
希望尽快且安全地实现通用人工智能,OpenAI决定押宝的技术之一是大型语言模型,具体是GPT-3。Welinder提到尝试GPT-3时说:“这是我们第一次感觉到,‘实际上,这似乎相当有用,它在许多学术基准任务上取得了最先进的结果等等。’”
对于可能性感到兴奋的Welinder和四位同事进行了讨论,讨论如何最好地利用这个算法:建立一个翻译引擎?一个写作助手?一个客户服务应用?然后Welinder说,“为什么不直接将这项技术提供为API,让任何开发人员在其基础上构建自己的业务呢?”
API的方法与OpenAI的目标和使命相一致,最大程度地促进了技术的采用和影响,赋予社区成员发明应用程序的能力,这些应用程序OpenAI团队无法预测。这也使产品开发交给了全球技术开发人员,释放出OpenAI团队专注于其真正擅长的事情:开发健壮、开创性的模型。
另一个惊喜,Welinder说,“我们平台上很多人不是程序员。他们是各种类型的作者、创作者,是设计师和产品经理等。”在某种程度上,GPT-3改变了成为开发者的意义:突然之间,建立人工智能应用程序,你不需要知道如何编程。你只需要擅长使用提示来描述你想让人工智能做什么(如第二章中所讨论的)。
Welinder和他的团队发现,“很多擅长的人根本没有机器学习背景”,而那些有机器学习背景的人则必须放弃以往对许多问题的思考方式才能使用GPT-3。许多用户构建了基于GPT-3的应用程序而不需要编码。OpenAI团队,无意中,降低了创建应用程序的障碍:这是迈向普及人工智能的第一步。“核心战略是使API对尽可能多的人可用,”Welinder说:“确保使用我们的技术的门槛低是我们使命的核心。这就是我们建立这个API的原因。”GPT-3的另一个意外用途是编码。模型的编码潜力的早期迹象促使OpenAI加倍努力设计编码用例。他们的努力导致了Codex,在2021年中期发布。^(2)
除了惊人多样的用例,API还孕育了一个全新的创业生态系统:“在发布API几个月后,就有几家公司完全建立在OpenAIAPI之上。其中许多公司现在已经以相当高的估值融资,”Welinder表示。
OpenAI的核心原则之一是与客户密切合作。Welinder表示:“每当我们有新的产品功能时,我们都会尝试找到我们知道会发现这些功能有用的客户,并创建直接的沟通渠道,在那里我们提供他们早期访问权限。”例如,在更广泛地在API中发布该功能之前,OpenAI与几个客户合作对搜索功能进行了优化。
Welinder从API驱动的项目的广度和创造力中获得了灵感。“未来十年将是令人兴奋的,因为人们将在这项技术基础上构建的所有东西。我认为通过共同努力,我们可以创建一些真正良好的防范措施,以确保这些技术、这些即将构建的应用对我们的社会将会非常非常积极。”
GPT-3最令人兴奋的能力之一是讲故事。您可以给模型一个主题,并要求它在零-shot情境下撰写故事。
我们与FableStudio联合创始人兼首席执行官EdwardSaatchi,以及FableStudio首席技术官FrankCarey坐下来,了解他们在使用GPT-3创造新型互动故事类型的过程。Fable将NeilGaiman和DaveMcKean的儿童书TheWolvesintheWalls改编成了一部获得艾美奖的虚拟现实(VR)电影体验。Lucy,电影的主角,可以通过GPT-3生成的对话与人进行自然交流。Lucy甚至于2021年亮相于圣丹斯电影节。
Saatchi和Carey注意到他们的观众正在与露西建立情感联系。这促使他们专注于使用AI创建虚拟存在,以及一种将AI和叙事编织在一起的新类型的叙事和娱乐。正如YouTuberBakzAwan所说,“我们将拥有全新类型的电影和体裁:我们将拥有交互式、综合体验。”
Carey解释说,观众通常认为AI承担了角色的角色,就像演员一样:一个AI对应一个角色。相反,Fable的AI是一个讲故事者,它拥有各种各样的角色。Carey相信可以开发出一个与最优秀的人类作家一样熟练和有创造力的AI讲故事者。
这与团队早期的纯文本实验形成了鲜明对比,这些实验在很大程度上是由人为撰写的,并且遵循了更线性的叙事。FableStudio团队通常不会使用GPT-3实时处理观众的不可预测的回应;他们处理这些的技术早于GPT-3。但是,他们有时会将GPT-3用作写作伙伴或观众的替代者,以考虑观众可能给出的潜在回应。
Carey解释道,GPT-3对于人类作者来说也是一个有用的工具:“对于即兴内容,我们正在使用GPT-3进行测试,这样你就可以将GPT视为人类,你就像在扮演角色一样。与GPT-3来回交流有助于你想出,比如说,在这种情况下,某人会问什么?接下来会有什么?这有助于作者尽可能多地涵盖对话的结果。”这有助于作者涵盖尽可能多的对话结果。“有时它曾是一个写作伙伴,有时它是一些能填补正在发生的事情周围空白的东西,”Saatchi说。“所以我们可能会想:这个角色这周会发生什么?下周这个角色会发生什么?GPT-3[填补了]其中一些空白。”
Fable团队在2021年圣丹斯电影节上充分利用了GPT-3的实验,在那里Lucy与节日参与者实时合作创作了她自己的短片德古拉:血色冷汤[3],而FableStudio和参与者则在策划她产生的想法,与参与者交流,并将观众的想法反馈到GPT-3中。
用GPT-3给一个一致的角色赋能是一个特殊的挑战。Saatchi解释说,GPT-3非常适用于从角色转向参与者的用例,比如疗法会话,以及对于那些对它们有“非常丰富的关于它们的知识库,比如名人或者像耶稣、圣诞老人或者德古拉这样的原型角色。但显然,它的使用范围会受到已经写入的信息的限制,”他指出,任何与使用GPT-3动力驱动角色进行广泛互动的人很快就会达到GPT-3的限制。“它试图给你提出的故事找到一个好的答案。但如果你在提示中讲述一个荒诞的故事,它也会提出荒诞的答案。对吧?所以它不是一个讲真话的人。我会说它天生就是一个讲故事的人;它只是试图在语言中找到模式。”关于GPT-3,许多人没有意识到的一点是,它的底线任务是讲故事,而不是“真相”,Carey说。
“仅仅使用GPT-3生成一堆随机情景是一回事,但确保它是以那个角色的语调发言是另一回事,”Carey补充道。“因此,我们有一些技巧用来创建那些提示,以便角色对GPT-3有明确的定义。”他承认团队在确保GPT-3理解角色的语音并保持在角色可能的回应范围内方面付出了额外的努力。他们还必须避免让参与者影响角色,因为GPT-3可以捕捉到微妙的信号。Carey解释说,如果Lucy与成年人互动,“它只会配合气氛,但如果Lucy是一个八岁的孩子,它可能会从参与者那里捕捉到更多的成年人气息,并将其反馈给他们。但我们实际上希望[Lucy]以八岁孩子般的语气说话。”
OpenAI还有另一个要求:在任何虚拟实体在观众面前假装“真实”进行叙述实验时,Fable团队必须在过程中保持人类参与其中。根据Carey的说法,让GPT-3在面向数千人的体验中发挥作用是具有挑战性的。尽管如此,他仍然认为大型语言模型将会是一个福音,“即使用于预先撰写内容或在更宽容的领域中‘实时’使用且没有限制。”
Carey认为,GPT-3作者最好将其作为协作工具交到擅长讲故事艺术的人手中,这样可以获得更好的结果,而不是期望GPT-3完成所有工作。
谈及成本时,他认为故事讲述用例面临的挑战是,每次API请求都要保持GPT-3与发展中的故事一致,必须“提供所有细节并生成一些补充内容。所以仅仅生成几行,你就被收取了整个token集的费用。这可能是一个挑战。”
FableStudio如何应对定价问题?工作室成功地大部分避开了这个问题,主要是通过预生成进行实验,“你预生成了一堆选项,然后可以使用搜索找到正确的选项来回复,”Carey说。
Saatchi提到了一个传闻,即GPT-4正在探索对虚拟空间的空间理解,他认为这比仅限于语言的聊天机器人具有更多潜力。他建议探索这种用例的人们专注于在虚拟世界中创建角色。Saatchi指出,Replika是一个创建了虚拟AI朋友角色的公司,现在正在探索进入元宇宙,其中虚拟实体将拥有自己的公寓,可以相遇并与其他人类用户以及最终与人类用户进行交互。“重点是要创造一个感觉活生生的角色,而GPT-3只是众多工具中的一种。为这些角色提供对他们正在导航的空间的真正理解可能会为这些角色带来学习的机会。”
未来会有什么?Carey觉得未来版本的GPT-3在构建元宇宙方面有一席之地,元宇宙是一个平行的数字现实,人类可以像在真实世界中一样自由地交互和进行活动。他设想它能够生成想法,并让人参与其中以进行策划。
Saatchi认为,将语言减弱为唯一的交互模式具有创造更有趣和复杂的与AI互动的潜力。“我确实认为3D空间为我们提供了让AI具有空间理解的机会,”他继续说道。Saatchi所展望的元宇宙赋予了AI走动和探索的能力,同时也给了人类成为循环的一部分并帮助训练虚拟存在的机会。他总结道我们需要激进的新思维,并且元宇宙提供了在3D空间中放置AI角色和“允许它们与人类一起过模拟生活”的重大机会。
Erickson和他的同事们开始使用OpenAIAPI与大型数据集进行交互并生成见解。他们最初使用了另一个自然语言处理模型,取得了平平的结果,但当他们开始使用GPT-3时,团队看到“在各方面至少有10%的增长。当我们说从80%提升到90%时,对我们来说是一个相当大的提升。”
此外,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总结道:“我们销售的是生成的见解。因此,我们使这些见解越加深入和强大,以及我们越快地传递这些见解,我们就创造了越多的价值。”
Quickchat的联合创始人PiotrGrudzień和DominikPosmyk对GPT-3从一开始就充满了兴奋,并且对在新产品中利用它充满了想法。在他们早期对OpenAIAPI进行的实验中,他们一直在思考“机器和人之间的界面的演变”这个概念。Grudzień解释说,由于人与计算机之间的交互不断发展,自然语言将是合乎逻辑的下一步:毕竟,人们更喜欢通过对话进行交流。他们得出结论,GPT-3似乎有潜力实现与计算机进行类似人类的聊天体验。
格鲁吉涅说,创始人中没有一个人曾经构建过传统的聊天机器人应用程序。以“初学者的心态”对待这项任务帮助他们保持清新,并对解决问题持开放态度。与其他聊天机器人公司不同,他们并没有开始时就有成为最佳客户支持或营销工具的野心。他们最初思考的是:“如何让一个人以令人敬畏的方式与机器交谈,并且是他们尝试过的最好的事情?”他们想要制作一个不仅完成简单功能(如收集客户数据和提供答案),而且还能准备回答非脚本化的客户问题或进行愉快的闲聊的聊天机器人。“而不是说‘我不知道’,”格鲁吉涅补充道,它可以“借助对话API并继续对话。”
波斯米克补充道:“我们的使命是赋予人们人工智能,而不是取代他们。我们相信,在未来的十年里,人工智能将加速教育、法律、[和]医疗等关键行业的数字化,并提高我们在工作和[日常生活中]的生产力。”为了展示这个遥远的使命,他们创建了EmersonAI,一款由GPT-3提供支持的智能通用聊天机器人应用程序。
尽管EmersonAI拥有日益壮大的用户社区,但其真正目的是展示由GPT-3提供支持的聊天机器人的能力,并鼓励用户与Quickchat合作为其公司实施这样的角色。Quickchat的产品提供是一款通用的对话人工智能,可以谈论任何主题。客户,主要是成立已久的公司,可以通过添加特定于其产品(或任何他们想要的主题)的额外信息来定制聊天机器人。Quickchat已经看到了多样的应用,例如自动化典型的FAQ客户支持问题解决以及实施一个AI角色来帮助用户搜索内部公司知识库。
与典型的聊天机器人服务提供商不同,Quickchat不会构建任何对话树或刚性场景,也不需要教导聊天机器人以特定方式回答问题。相反,格鲁吉涅解释说,客户遵循一个简单的流程:“您复制粘贴包含您希望您的AI使用的所有信息的文本[然后]点击重新训练按钮;[它]需要几秒钟来吸收知识,就这样。”现在经过数据训练的聊天机器人已经准备好进行测试对话了。
像Viable的Erickson一样,Grudzień和Posmyk努力在每一个API调用中提供价值。但他们也希望随着越来越多的竞争性模型的发布,OpenAI的API定价会“下降或者会达到某个水平,仅仅是因为竞争的压力。”
Quickchat学到了什么?首先,要建立一个盈利的业务,需要的不仅仅是炒作。像推出GPT-3那样的大型媒体轰动可以为激动人心的爱好者提供初步的涌入,"但是人们会感到厌倦,等待下一个大事件。唯一能生存下来的产品是那些真正解决了人们关心的问题的产品,"Grudzień说。“没有人会仅仅因为它是GPT-3就使用你的产品。它需要提供一些价值,无论是有用的还是有趣的,或者解决一些问题。GPT-3不会为你做到这一点。所以你需要把它当作又一个工具来对待。”
另一个挑战,也许出乎意料的是GPT-3对创造力的嗅觉。“即使你将温度设定得非常低,你给它提供的提示它仍然会使用非常小的提示,然后基于它拥有的广泛知识生成一些东西,”Grudzień解释道。这使得它很容易生成诸如诗歌、营销文案或幻想故事等创意文本。但大多数聊天机器人都是用来解决客户问题的。“它需要有可预测的、重复的性能,同时还需要有对话性和在某种程度上的创造性,但不要推得太远。”
这些天,Quickchat致力于与客户深入合作,确保他们的API性能使他们在使用案例中取得成功。格鲁吉尼最兴奋的是看到客户构建的东西:“我们真的非常希望看到我们的聊天引擎在成千上万种不同的方式中被用于不同的产品中。”
GPT-3能消除写作困境吗?YouTuber亚尼克·基尔彻认为可以:“如果你遇到写作困难,只需向模型询问,它会提供数百个想法作为倾听板。”让我们来看看一个这样的工具:Copysmith。
2019年6月,安娜·王和她的姐姐茉莉花·王共同创立了一个基于Shopify的精品店。但她们缺乏营销经验,“生意彻底垮了,”安娜·王说。当姐妹俩在2020年了解到OpenAIAPI时,王说:“我们开始探索它用于写作诗歌、模仿书籍和电影中的人物等创意追求。有一天我们意识到,如果我们在尝试建立电子商务店时有了这个工具,我们就能写出更好的行动号召和产品描述,提升我们的营销水平,让其起步。”
受启发,他们于2020年10月推出了Copysmith并受到热烈欢迎。在王的话中,“一切都从那里开始。我们开始与用户交流,并根据反馈迭代产品。”她指出,GPT-3使得你可以在没有任何先前知识的情况下迅速进行迭代,而其他开源模型,比如BERT和RoBERTa,需要针对每个下游任务进行大量微调。她补充说:“它在执行任务方面极其灵活”,还说“它是目前最强大的模型。”此外,GPT-3对开发人员和用户来说“非常友好”,其简单的“留言输入,留言输出”接口允许你使用一个简单的API执行各种任务。”它的另一个优点是API调用的简单性,与承载专有模型的努力相比要简单得多。
关于基于GPT-3构建产品的挑战,Otulana表示:“通常情况下,你受限于OpenAI的限制。因此,要克服这一点,你必须为API加入自己的创业元素,以创建出与众不同的东西。另一个限制是稍微失去控制,你的进展实质上受到OpenAI进展的限制。”
王对想要使用GPT-3的产品设计师有两条建议。首先,她说:“确保你正在解决一个真正的问题……考虑你的用户,因为使用GPT-3的一个容易出现的问题是陷入只在安全准则的限制内构建东西的思维定式,而不允许自己有创意。”
随着GPT-3及其后代模型Codex展现出与编程和自然语言交互的能力,新的潜在用例正在堆积起来。
Adams在缩小想法范围之前尝试了API的几个潜在用例,其中一个成为了他的新业务。“我认为很多这些实验都是我无意识地对GPT-3这样的语言模型能处理什么进行边缘测试。”Adams的搜索始于这样一个想法:“如果我可以让计算机做任何事情,我会怎么做?”他开始探索,“触摸OpenAIAPI的边缘,看看它能走多远。”他开发了一个生成Instagram诗歌的机器人;尝试了一个自我播客日记项目,用户可以与自己的数字版本交谈;基于用户偏好,在Spotify上构建音乐播放列表的项目;以及在满足好奇心的过程中创建了许多其他项目。由于这种好奇心,“我很早就擅长理解GPT-3的不同引擎。”
此外,“大”代码块,超过800行,对模型来说太棘手了。“你必须将逻辑拆分成许多不同的步骤,才能准确地说出这个东西是干什么的。一旦我理解了这一点,我就开始思考,‘我该如何利用解析来找到足够复杂但又不太复杂的块?’”由于每个人的代码编写方式都不同,所以问题在于试图连接到抽象语法树,并尽力利用你所拥有的最好的东西。这成为了解析层的主要架构挑战。
至于解释层,“这更像是让GPT-3和Codex说出你想要它们说的话的一个功能,”Adams解释道。解决这个问题的方法是找到创造性的方式来理解你代码的受众,并让GPT-3向他们表达。这个层面“可以尝试解答任何问题,但可能不会像使用计算器那样百分之百准确。如果你输入两加二等于四,偶尔会得到五,但你不需要编写所有的乘法、除法和减法函数。这些是免费的。”这就是概率系统的取舍:有时候它们有效,有时候不行,但它们总会返回一个答案。Adams建议保持足够灵活,以便在必要时调整你的策略。
“我认为很多人会立刻求助达芬奇来解决问题。但如果你能用一个较小的引擎解决问题,比如Ada、Babbage或者Curie,你实际上会比仅仅试图用达芬奇的整个AI来解决问题更深入地了解问题。”他声称。
另一个挑战是从他自己的独立实验转变为一个应用程序,考虑到用户可能面临的所有不同条件和工作方式。现在,他正在致力于“找到所有不同的边缘情况”,以更好地了解API的设计层必须有多快,它必须以多频繁地响应特定请求,以及它如何与不同的语言交互。
为了了解支持基于GPT-3的公司的投资者的观点,我们与WingVentureCapital的JakeFlomenberg进行了交流,该公司是一家著名的全球风险投资公司,也是几家以GPT-3为动力的初创企业,包括CopyAI和Simplified的主要投资者。
那么潜在投资者应该如何评估这么新颖和不同的东西呢?Flomenberg说:“我们看重对问题、领域和技术的深入理解的初创企业,以及展示产品与市场之间良好契合度的初创企业。”“评估建立在GPT-3上的东西的微妙之处在于,询问,秘密酱是什么?公司是否在技术上对某事有深入的了解?公司是在使用GPT-3解决了一个真正的问题,还是只是利用炒作将其产品推向市场?为什么现在?为什么这个团队是最适合执行这个想法的?这个想法在现实世界中是可防御的吗?”如果一个初创企业无法为自己的存在辩护,那对投资者来说是一个巨大的警告信号。
看到这些用例以及许多其他用例如此迅速地以及如此成功地构建在GPT-3之上,令人惊叹。到2021年末,即写作本章时,开放AI社区中已经有几家初创公司筹集了大量资金,并且正在考虑快速扩张计划。这股市场潮流似乎也唤醒了更大型企业的胃口。越来越多的企业开始考虑在其组织内实施实验性的GPT-3项目。在第五章中,我们将研究这个由像GitHubCopilot和特别是新的MicrosoftAzureOpenAIService这样的大规模产品组成的市场细分,该服务旨在满足大型组织的需求。
^(4)Metaverse在这个语境中指的是一个未来主义概念,即由填满了社交连接的虚拟头像的3D虚拟世界网络。这个更广泛的概念独立于马克·扎克伯格关于元宇宙的愿景。
当新的创新或技术转变发生时,大型企业通常是最后采用的。它们的等级结构由各种专制级别组成,而法律批准和文书工作的标准流程通常限制了试验自由,使得企业难以成为早期采用者。但是对于GPT-3来说似乎并非如此。一旦API发布,企业就开始尝试使用它。然而,它们遇到了一个重大障碍:数据隐私。
在其最简单的形式中,语言模型所做的就是预测下一个单词,给定一系列先前的单词。正如你在第二章中学到的那样,OpenAI已经设计了几种技术,将语言模型(如GPT-3)的功能从简单的下一个单词预测转变为更有用的NLP任务,如回答问题、摘要文件和生成特定上下文的文本。通常,通过微调语言模型或使其模仿特定行为来实现最佳结果,方法是使用领域特定数据提供几个示例来对其进行条件化。您可以使用训练提示提供示例,但更健壮的解决方案是使用微调API创建定制训练模型。
OpenAI回应了客户关于数据处理和隐私的担忧和问题,提供了安全审查、企业合同、数据处理协议、第三方安全认证工作等。一些客户和OpenAI讨论的问题包括客户的数据是否可以用于改善OpenAI模型,这可能会提高客户期望用例的性能,但会引发有关数据隐私和内部合规义务的担忧;关于客户数据的存储和保留限制;以及关于数据安全处理和处理的义务。
本章的其余部分将深入探讨三个案例研究,展示了像GitHub、Microsoft和Algolia这样的全球企业如何处理这些问题,并且如何规模化使用GPT-3。您还将了解到OpenAI如何通过与MicrosoftAzureOpenAI服务的合作来适应企业级产品的需求。
正如Awan告诉我们的:“我很兴奋能够在更多的副业项目上工作,因为我知道我将得到GitHubCopilot的帮助。现在我几乎就像有了一个联合创始人。Codex和Copilot大约写了我的代码的2到10%,类似这样。所以它已经让我加速了2到10%。而且所有这些都是呈指数增长的。那么明年GPT-3会是什么样子?明年Codex会是什么样子?我可能会加速30%。”
让我们深入了解Copilot的内部工作原理。
GitHubCopilot根据您正在处理的代码提取上下文,基于诸如文档字符串、注释和函数名称等内容。然后,它会在编辑器内自动建议下一行,甚至整个函数,以生成样板代码并建议匹配代码实现的测试用例。它通过使用用户代码编辑器的插件与广泛的框架和编程语言一起工作,使其几乎与语言无关,同时轻量且易于使用。
OpenAI研究科学家哈里·爱德华兹指出,Copilot对于在新语言或框架中工作的程序员也是一个有用的工具:“试图通过搜索一切来编写不熟悉的语言的代码,就像只带着一本短语书在陌生的国家里导航。使用GitHubCopilot就像雇佣了一名翻译。”
GitHubCopilot由OpenAI的Codex提供支持,这是GPT-3模型的后裔,正如我们在Chapter4中所述,它专门设计用于解释和编写代码。“GitHub是超过7300万开发者的家园,[包括]包含了社区集体知识的大量公开数据,”德莫尔说。这意味着Codex有数十亿行可供训练的公开可用代码。它理解编程语言和人类语言。
托管和管理像GPT-3这样的模型需要在许多不同层面上的精湛技术,包括模型架构的优化、其部署以及公众如何访问它。德·莫尔告诉我们:“当我们推出Copilot时,它在最初阶段使用的是OpenAIAPI基础设施,然后在推出后,我们迎来了大量的回应,有那么多人注册并想要使用这个产品。”
尽管API能够处理大量的请求,但实际的请求数量及其频率仍然让OpenAI团队感到惊讶。德·莫尔和他的团队“意识到需要一个更高效、更大的基础设施来进行部署,幸运的是,微软AzureOpenAI正好在那个时候浮出水面”,使他们能够进行所需的Azure部署基础设施转换。
一般来说,深度学习模型的层数越多,它的准确性就越高。然而,更多的层也意味着运行速度会变慢。Copilot团队不得不在两者之间找到平衡,正如德·莫尔所解释的那样:“我们的用例要求模型以闪电般的速度提供响应,并提供多个备选建议;如果速度不够快,用户很容易就会超过模型并自己编写代码。因此,我们发现一个略微弱一些的模型,可以快速给出响应,同时保持结果的质量”是答案。
对GitHubCopilot的快速用户采用和兴趣让团队中的每个人都感到惊讶,但事情并没有结束。由于产品的实用性和代码建议的质量,团队看到使用Copilot生成的代码量呈指数增长,平均“35%的新编写代码是由Copilot提出的。随着我们在模型能力和建议速度之间找到正确平衡的不断接近,这个数字将继续增加。”德摩尔说。
德摩尔认为Copilot在代码审查和编写方面有很大潜力。他说:“想象一下自动化的代码审查器,它自动查看您的更改并提出建议,使您的代码更好、更高效。如今GitHub的代码审查过程由人工审阅者进行,我们也正在探索Copilot审查的想法。”
探索中的另一个功能是代码解释。德摩尔解释说,用户可以选择一段代码片段,“Copilot可以用简单的英语解释它。”这有潜力作为一个有用的学习工具。此外,德摩尔表示,Copilot希望提供帮助工具,用于“将代码从一种编程语言翻译成另一种编程语言”。
Copilot为开发人员以及任何想要发挥创造力并构建一款软件来实现其想法的人打开了无限的机会世界。在GitHubCopilot和OpenAI的Codex出现之前,生成生产级代码、AI辅助代码审查以及将代码从一种语言翻译成另一种语言等功能一直是遥不可及的梦想。LLM的出现与无代码和低代码平台的结合将使人们能够释放创造力,构建有趣而意想不到的应用。
Algolia是一家知名的搜索解决方案提供商,客户跨越了财富500强公司到新一代的初创企业。它提供了一个符号化、基于关键字的搜索API,可以与任何现有产品或应用程序集成。在2020年,Algolia与OpenAI合作,将GPT-3与其已有的搜索技术连接起来。下一代产品是AlgoliaAnswers,它使客户能够构建智能的、基于语义的、单一的搜索终端,用于搜索查询。“我们构建的是其他公司使用的技术,”Algolia的产品经理DustinCoates说。
Algolia成立了一个专门的团队来处理这个领域。当OpenAI联系他们询问Algolia是否对GPT-3感兴趣时,Coates的团队将其与竞争技术进行了比较。Algolia机器学习工程师ClaireHelme-Guizon,也是原始AlgoliaAnswers团队的成员,解释说:“我们研究了类似BERT的模型,以优化速度,DistilBERT,以及像RoBERTa这样更稳定的模型,以及GPT-3的不同变体,如DaVinci、Ada等。”他们创建了一个评分系统来比较不同模型的质量,并了解它们的优势和劣势。他们发现,Coates说,GPT-3在搜索结果质量方面“表现得非常好。”速度和成本是弱点,但API最终是一个决定性因素,因为它允许Algolia在不必维护其基础架构的情况下使用该模型。Algolia询问了现有客户是否可能对这样的搜索体验感兴趣,回应非常积极。
即使拥有这样的结果质量,Algolia仍然有很多问题:它对客户会如何运作?架构是否可扩展?财务上可行吗?为了回答这些问题,Coates解释说:“我们设计了具有较长文本内容的特定用例”,比如发布和帮助台。
引入这项新技术时Algolia面临的最大挑战之一是法律问题。Coates表示:“在整个项目中,通过法律、安全和采购可能是我们做的最困难的事情之一,因为你正在发送这些客户数据并为这个ML模型提供数据。我们如何删除这些数据?我们如何确保其符合GDPR?^([1)我们如何处理所有这些事情?我们如何知道OpenAI不会拿取这些数据并将其馈送到其他所有模型中去?因此,有很多问题需要回答,也有很多协议需要制定。”
到目前为止,我们见过的大多数GPT-3使用案例都是面向消费者的业务(B2C)产品,但对于像Algolia这样的企业对企业(B2B)公司来说,游戏规则是不同的。他们不仅需要OpenAI的定价适合他们,而且还需要优化他们的定价以适应客户,这样他们“才能盈利并且客户仍然对我们正在构建的内容感兴趣。”
在搜索解决方案业务中,成功是以吞吐量为基础衡量的。因此,自然而然地应该考虑质量、成本和速度之间的权衡。Coates表示:“即使在我们知道成本之前,Ada对我们来说也是正确的模型,因为速度很快。但是即使,比方说,Davinci足够快,我们可能仍然会选择Ada,只是因为成本措施。”
那么他们是如何解决这个问题的呢?Coates解释道:“我们在OpenAI公布价格之前就开始了合作,我们已经走得足够远,并且从我们在其他地方所见到的东西来看,质量是足够好的,而不知道价格是多少。所以我们有了一段相当多的失眠夜晚,不知道价格是多少。然后一旦我们知道价格,[就是]想出如何降低成本。因为当我们第一次看到价格时,我们不确定我们是否能够使其发挥作用。”
他们确实在优化他们的使用情况下的价格方面投入了大量工作,因为根据Coates的说法,价格将是每个试图在GPT-3基础上构建业务的人的“一个普遍性挑战”。因此,在产品开发的早期阶段就开始考虑价格优化是非常推荐的。
AlgoliaAnswers架构的一个关键方面,Helme-Guizon表示,是阅读器检索架构,在其中,AI阅读器“浏览子文档并阅读它们,使用Ada理解它们,并根据查询为我们提供语义值的置信度评分。”尽管这是“一个很好的第一解决方案,”她补充道,但它面临着许多挑战,“特别是延迟,因为您有一个依赖性,您无法异步地处理第一批和第二批。”
那么,如果AlgoliaAnswers今天不得不从零开始,它会有什么不同的做法呢?“有时候与GPT-3一起工作会让人感到不知所措,”Coates说道。“我们会在产品开发的早期阶段提出一些首要问题,比如,‘我们是否愿意在语义理解上受到打击,因为我们为其他方面的提升付出了如此巨大的代价?’我认为我们会更多地考虑延迟和不同排名因素的交汇。”他补充说,他可以看到这个项目“回归到基于BERT的模型。我们可能会说,原始质量并不像我们从GPT-3中得到的那样。这是无可否认的。但我认为,尽管我们对技术产生了浓厚的兴趣,但我们发现了一些我们没有解决的客户问题,技术必须追随客户问题的步伐,而不是反过来。”
Algolia在OpenAIAPI上已经成熟了,但很快公司希望在欧洲扩大业务,这意味着它需要GDPR的合规性。它开始与微软合作,后者正在推出其AzureOpenAI服务。在下一个案例研究中,我们将看看那项服务。
微软和OpenAI在2019年宣布了一项合作伙伴关系,其目标是让微软Azure客户访问GPT-3的能力。这个合作伙伴关系基于共同的愿景,即希望确保AI和AGI的安全部署。微软向OpenAI投资了十亿美元,资助了API的推出,该API运行在Azure上。这一合作伙伴关系的最终目标是向更多人提供访问大型语言模型的机会。
Divakaruni表示,目标是“充分利用彼此的优势”,特别是OpenAI在用户体验和建模方面取得的进展以及微软在企业、大型销售团队和云基础设施方面的现有关系。考虑到其客户群体,微软Azure团队了解企业云客户在合规性、认证、网络安全等方面的基本要求。
对于微软来说,对GPT-3的兴趣主要在于它开创了新局面,并且在LLM类别中首先可用。微软投资的另一个关键因素是,它获得了独家使用OpenAI的知识产权资产的能力。虽然存在GPT-3的替代方案,但Divakaruni表示OpenAIAPI的集中化是独一无二的。他指出,用于文本分析或翻译等服务的模型需要云提供商做“相当多的工作”才能适应API服务。然而,OpenAI提供的是“用于各种任务的相同API”,而不是“为特定任务创建的定制API”。
OpenAI知道扩展云基础设施至关重要。从OpenAIAPI的起源开始,一直都有在Azure中有一个API实例的想法,以便能够触及更多的客户。Divakaruni提到OpenAIAPI和AzureOpenAI服务平台之间的相似性比差异性更多。从技术角度来看,目标非常相似:为人们提供相同的API和相同模型的访问权限。AzureOpenAI服务的形态将更加Azure本地化,但微软希望能够匹配OpenAI客户的开发者体验,尤其是一些客户从OpenAIAPI迁移到AzureOpenAI服务时。
在编写本书时,我们已经捕捉到AzureOpenAI服务团队正在启动平台,还有许多问题需要解决,然后才能广泛向客户发布。OpenAI服务现在正在为其服务添加越来越多的模型;其目标是最终在可用模型方面达到或只落后于OpenAIAPI几个月。
两种服务之间的一个区别在于它们如何处理资源管理。资源是通过服务可管理的项目(无论是OpenAIAPI还是MicrosoftAzure)。在OpenAI的上下文中,资源的示例可能是一个API账户或与账户关联的积分池。Azure提供了更复杂的资源集,如虚拟机、存储账户、数据库、虚拟网络、订阅和管理组。
虽然OpenAI为每个组织提供单个API账户,在Azure中公司可以创建多个不同的资源,可以跟踪、监视和分配给不同的成本中心。“它通常只是Azure的另一个资源,”微软AzureOpenAI服务的高级项目经理ChristopherHoder说,这使得它易于开箱即用。
Azure内的资源管理是一种部署和管理功能,使客户能够在Azure账户中创建、更新和删除资源。它带有访问控制、锁定和标记等功能,用于在部署后保护和组织客户资源。
Azure有几个资源管理层,允许公司和组织更好地管理定价和资源,Hoder说。在高层次上,有一个组织的Azure账户,而在该账户内,有多个Azure订阅。在其中,有资源组,然后是资源本身。“所有这些都可以进行监控、分段和访问控制,”Hoder补充说,这在大规模部署时尤其重要。
尽管微软迄今未公开多少关于其安全性的信息,但Divakaruni告诉我们,公司专注于三个主要点:内容过滤器、滥用监控和以安全为先的方法。团队正在致力于更多强制安全性的元素,并计划利用客户反馈了解在它们正式推出之前哪些元素对用户最有意义。
内容过滤器已经以PII(个人可识别信息)过滤器的形式引入,它可以阻止性和其他类型的内容,其范围仍在确定中。“在这里的理念是为客户提供正确的旋钮,以调整和迭代适用于他们特定领域的内容,”Divakaruni说。
AzureOpenAIService已经与许多大型企业客户在平台上展开合作,但微软尚未准备公开讨论它们,引用隐私问题和公众舆论的敏感性。它现在可以提及的是一些内部服务的例子。GitHubCopilot最初在OpenAIAPI上启动,但现在,主要出于规模原因,已经转移到AzureOpenAIService上。在Azure上运行的其他内部服务的例子包括Dynamics365客户服务、PowerApps、MLtocode和PowerBI服务。
Divakaruni指出,许多其核心优势不在于人工智能或机器学习的企业希望以能够为其业务流程增加有意义价值或增强客户体验的方式应用人工智能。他们利用微软的实地优势来帮助他们构建解决方案。AzureOpenAI服务团队完全预计其复杂的模型即服务方法将成为主流,Hoder表示。他指出,微软通过将其嵌入到诸如Office和Dynamics之类的消费者应用程序中来提供其即用即用的体验。需要更独特或定制支持的客户会向下一层转向像Power平台这样的服务,该平台面向业务用户和开发人员,提供无代码或低代码的方式来定制机器学习和人工智能。“如果你再往下走一点,再定制一点,再侧重于开发人员一点,你就会到达认知服务。这确实是我们通过基于RESTAPI的服务提供人工智能能力的模型。现在我们正在引入一个更精细的层次,即OpenAI服务……然后在底层,我们有专注于数据科学的工具与Azure机器学习,”Hoder解释道。
当然,这是大多数人无法接触到的一个小众领域。Hoder指出,将数据科学能力带给客户“扩大了接入范围;使之民主化。”Divakaruni同意:“你将越来越多地看到一个趋势,即更大、更复杂的模型通过服务来暴露,而不是由人们自己构建。”为什么?“根本事实是,训练这些模型需要大量的计算和大量的数据。能够开发这些模型的公司可惜是少数。但是我们有能力,就应该让它们为世界所用。”
一般来说,那些能够承担昂贵资源的公司的数据科学团队更倾向于为其特定用例构建自己的知识产权,使用像AzureMachineLearningStudio这样的低级ML平台。Divakaruni认为,这种需求不太可能消失。
调查AzureOpenAI服务的企业,Divakaruni说,可以像调查任何其他云服务一样进行:您首先从对您最有意义的地方开始,然后查看各种技术是否满足您的需求。“虽然技术很酷,当然有一个哇因素,但你仍然必须从‘这对我作为一个企业,对我的团队最有用在哪里?’开始,然后寻找一套技术来解决这个问题。”
对于有兴趣探索GPT-3的公司来说,问题是:OpenAIAPI还是AzureOpenAI服务?Divakaruni认为,OpenAIAPI版本更适合那些正在探索各种选择但没有任何具体项目实施想法的公司。在访问方面,OpenAI显然走得更远,其游乐场使个人用户和公司更容易进行实验。OpenAIAPI还允许访问最新的实验模型和扩展API功能的API端点。
另一方面,AzureOpenAI服务针对的是具有生产用例的用户群体,这些用户从OpenAIAPI“毕业”,或者需要满足不同的合规和隐私规定。两个组织鼓励客户进行实验和验证其用例,然后使用OpenAIAPI确定它们。如果该平台满足其需求,微软鼓励客户继续使用它,但当他们的生产需求变得更加成熟,开始需要更多的合规性时,他们应考虑过渡到Azure。