版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
版权信息书名:⼤模型应⽤开发极简⼊门:基于GPT-4和Chat作者:[⽐]奥利维耶•卡埃朗(OlivierCaelen)[法]玛丽–艾丽斯•布莱特(Marie-AliceBlete)ISBN:978-7-115-63640-9本书由北京图灵文化发展有限公司发行数字版。版权所有,侵权必究。您购买的图灵电⼦书仅供您个⼈使⽤,未经授权,不得以任何⽅式复制和传播本书内容。我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。如果购买者有侵权⾏为,我们可能对该⽤户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。版权声明O'ReillyMedia,Inc.介绍推荐序⼀学习成为善⽤AI的⼈推荐序⼆开启⼀段有趣、有启发、有收获的冒险旅程推荐序三⼈⼈都要学会和AI相处1推荐序四AI⼯程师:做新⼀轮智能⾰命的⾸批探索者推荐序五进⼊智能应⽤的新时代推荐序六AGI:不要旁观,要真正参与推荐序七不要害怕被ChatGPT取代,要做第⼀批驾驭新技术的⼈译者序没有谁天⽣就是AI⼯程师排版约定使⽤代码⽰例O'Reilly在线学习平台(O'ReillyOnlineLearning)联系我们致谢第1章初识GPT-4和ChatGPT1.1LLM概述1.1.1探索语⾔模型和NLP的基础1.1.2理解Transformer架构及其在LLM中的作⽤1.1.3解密GPT模型的标记化和预测步骤1.2GPT模型简史:从GPT-1到GPT-41.2.4从GPT-3到InstructGPT1.2.5GPT-3.5、Codex和ChatGPT1.3LLM⽤例和⽰例产品1.3.1BeMyEyes1.3.2摩根⼠丹利1.3.3可汗学院1.3.4多邻国1.3.5Yabble1.3.6Waymark1.3.7InworldAI1.4警惕AI幻觉:限制与考虑1.5使⽤插件和微调优化GPT模型第2章深⼊了解GPT-4和ChatGPT的API2.1基本概念2.2OpenAIAPI提供的可⽤模型2.3在OpenAIPlayground中使⽤GPT模型2.4开始使⽤OpenAIPython库2.4.1OpenAI访问权限和API密钥2.4.2HelloWorld⽰例程序2.5使⽤GPT-4和ChatGPT2.5.1ChatCompletion端点的输⼊选项2.5.2ChatCompletion端点的输出格式2.5.3从⽂本补全到函数2.6使⽤其他⽂本补全模型2.6.1Completion端点的输⼊选项2.6.2Completion端点的输出格式2.7考虑因素2.7.1定价和标记限制2.7.2安全和隐私2.8其他OpenAIAPI和功能2.8.1嵌⼊2.8.2内容审核模型2.8.3Whisper和DALL·E2.9⼩结(含速查清单)第3章使⽤GPT-4和ChatGPT构建应⽤程序3.1应⽤程序开发概述3.1.1管理API密钥3.1.2数据安全和数据隐私3.2软件架构设计原则3.3LLM驱动型应⽤程序的漏洞3.3.1分析输⼊和输出3.3.2⽆法避免提⽰词注⼊3.4⽰例项⽬3.4.1项⽬1:构建新闻稿⽣成器3.4.2项⽬2:YouTube视频摘要3.4.3项⽬3:打造《塞尔达传说:旷野之息》专家3.4.4项⽬4:语⾳控制3.5⼩结第4章GPT-4和ChatGPT的⾼级技巧4.1提⽰⼯程4.1.1设计有效的提⽰词4.1.2逐步思考4.1.3实现少样本学习4.1.4改善提⽰效果4.2微调4.2.1开始微调4.2.2使⽤OpenAIAPI进⾏微调4.2.3微调的应⽤4.2.4⽣成和微调电⼦邮件营销活动的合成数据4.2.5微调的成本4.3⼩结第5章使⽤LangChain框架和插件增强LLM的功能5.1LangChain框架5.1.1动态提⽰词5.1.2智能体及⼯具5.1.3记忆5.2GPT-4插件5.2.1概述5.2.2API5.2.3插件清单5.2.4OpenAPI规范5.2.5描述5.3⼩结5.4总结术语表作者简介封⾯简介版权声明Copyright©2023OlivierCaelenandMarie-AliceBlete.Allrightsreserved.SimplifiedChineseedition,jointlypublishedbyO'ReillyMedia,Inc.andPosts&TelecomPress,2024.AuthorizedtranslationoftheEnglishedition,2024O'ReillyMedia,Inc.,theownerofallrightstopublishandsellthesame.Allrightsreservedincludingtherightsofreproductioninwholeorinpartinanyform.英⽂原版由O'ReillyMedia,Inc.出版,2023。简体中⽂版由⼈⺠邮电出版社有限公司出版,2024。英⽂原版的翻译得到O'ReillyMedia,Inc.的授权。此简体中⽂版的出版和销售得到出版权和销售权的所有者——O'ReillyMedia,Inc.的许可。版权所有,未得书⾯许可,本书的任何部分和全部不得以任何形式重制。O'ReillyMedia,Inc.介绍O'Reilly以“分享创新知识、改变世界”为⼰任。40多年来我们⼀直向企业、个⼈提供成功所必需之技能及思想,激励他们创新并做得更好。O'Reilly业务的核⼼是独特的专家及创新者⽹络,众多专家及创新者通过我们分享知识。我们的在线学习(OnlineLearning)平台提供独家的直播培训、互动学习、认证体验、图书、视频等,使客户更容易获取业务成功所需的专业知识。⼏⼗年来O'Reilly图书⼀直被视为学习开创未来之技术的权威资料。我们所做的⼀切是为了帮助各领域的专业⼈⼠学习最佳实践,发现并塑造科技⾏业未来的新趋势。我们的客户渴望做出推动世界前进的创新之举,我们希望能助他们⼀臂之“O'ReillyRadar博客有⼝皆碑。”“O'Reilly凭借⼀系列⾮凡想法(真希望当初我也想到了)建⽴了数百万美元的业务。”“O'ReillyConference是聚集关键思想领袖的绝对典范。”“⼀本O'Reilly的书就代表⼀个有⽤、有前途、需要学习的主题。”s“Tim是位特⽴独⾏的商⼈,他不光放眼于最⻓远、最⼴阔的领域,并且切实地按照YogiBerra的建议去做了:‘如果你在路上遇到岔路⼝,那就⾛⼩路。’回顾过去,Tim似乎每⼀次都选择了⼩路,⽽且有⼏次都是⼀闪即逝的机会,尽管⼤路也不错。”l推荐序一学习成为善用AI的人宝⽟,PromptEngineer2023年是AI爆发的⼀年,各种AI技术和产品如井喷⼀样爆发。尤其是以ChatGPT为代表的⼤语⾔模型(largelanguagemodel,LLM),能写⽂章、写总结、写代码,还能调⽤外部智能体(agent),真切地让普通⼈感受到了AI的强⼤。同时,AI的爆发也引发了很多⼈的焦虑,以⾄于⼀句话⼴为流传:“替代你的不是AI,⽽是善⽤AI的⼈。”⼤家都想快速学习和掌握AI技术,不想落伍,但同时⼜担⼼AI门槛过⾼,很难掌握。我在今年完整地经历了:惊讶于AI的强⼤–>焦虑被AI或者善⽤AI的⼈替代–>学习AI–>在这个过程中,我最⼤的感触就是,如果从应⽤层⾯去学习AI,其实没有想象中的那么难;但是如果没有好的图书或者视频类教程,还是会⾛不少弯路。要学习AI技术,我个⼈认为⽐较好的⽅法如下。01.What:系统了解什么是⽣成式AI和⼤语⾔模型,⼤语⾔模型能做什么,有什么应⽤场景,局限是什么。02.How:该如何写提⽰词,如何调⽤API。03.Do:把AI带⼊⾃⼰的⼯作和⽣活,切实去使⽤AI。从使⽤提⽰词开始,写⽂案、写总结、翻译、写代码,等等。然后,有能⼒和想法的朋友,还可以尝试调⽤API去开发AI应⽤程序。这其实也是我推荐这本书的原因。这本书虽然⽐较“薄”,但是可以帮助你系统地了解什么是⼤语⾔模型,⼤语⾔模型都有哪些应⽤场景,以及如何写提⽰词和调⽤API。另外,整本书的翻译质量相当不错,绝对不是“机翻”的版本,并且由于书中⽤到的⼀些平台或者API已经发⽣了更改,译者针对这类情况都贴⼼地加上了译者注。当然,请不要指望通过这本书就成为⼀个专家,它更像⼀个⼊门指南,告诉你What和How。如果你想深⼊学习某些知识点,还需要⾃⼰动⼿去实践,并配合在线资料进⼀步学习。祝你通过这本书,掌握AI的知识,早⽇成为善⽤AI的⼈。推荐序二开启一段有趣、有启发、有收获的冒险旅程张路宇,Dify创始⼈兼CEOOpenAI发布ChatGPT的那个夜晚,我极其兴奋地与“她”聊到了凌晨三四点,⼀个朴素的聊天框满⾜了过去⼗多年我对AI⽣产⼒的幻想!以GPT-4为代表的⼤语⾔模型(LLM)的迅速发展,对于所有开发者乃⾄知识⼯作者⽽⾔都是⼀个崭新的起点,是“以⼀敌⼗”的⽣产⼒神器,也拉开了涌现AI原⽣应⽤舞台的序幕。LLM技术和基于LLM的应⽤(以下简称LLM应⽤)正在以“天”为单位快速发展。过去这段时间,我和团队接触了数千名对开发LLM应⽤报以热情的开发者,与⼤家⼀同解锁LLM技术栈的潜⼒,其中不乏有创业者快速收获⽤户、获得融资并在⼏个⽉内获得了声望(Dify或许也是幸运⼉之⼀也有开发者在使⽤LLM提升现有应⽤及团队⼯作流。我们可以看到的数据是:⼀⽅⾯,LangChain仅在中国的开发者⽤户占⽐就⾼达全部⽤户的40%以上;但另⼀⽅⾯,我们感受到LLM应⽤开发者占据中国全部开发者的⽐重还很低,LLM应⽤开发在中国还处于早期。作为经历过Web1.0时代和Web2.0时代的技术⼈,我深知“早期”⼆字意味着稀缺的机遇。社区开发者讨论得最多的两个问题是:.AI原⽣应⽤究竟应该是什么样的?.LLM应⽤技术栈应该怎么玩?图灵公司引进出版了OIReilly的《⼤模型应⽤开发极简⼊门:基于GPT-4和ChatGPT》,你⼤概⼀个下午就可以读完这本⼩册⼦,对上述两个问题建⽴总体认识,并动⼿完成⾃⼰的第⼀个基于GPT-4的应⽤。如此短⼩精湛的书甚⾄还包含LLM原理的介绍和提⽰⼯程的技巧。我甚⾄认为今后的技术书都应该“这样”,因为你可以结合与ChatGPT互动问答的⽅式更⾼效地学习。不知你是否有过组装计算机的经历?如今LLM应⽤技术栈中的模型(例如GPT-4)就相当于其中的CPU,开发框架(例如LangChain或Dify)则相当于主板,⽽内存、向量存储、插件就好⽐主板上的各种I/O设施。正如组装计算机⼀样,开发者在构建LLM应⽤时也需理解、精⼼挑选和配置每个组件。如果要掌握这个全新的技术栈,最佳的⽅式便是结合问题,跟着好奇⼼动⼿试试,我敢和你说这绝对是⼀段有趣、有启发、有收获的冒险旅程!1本⽂约10%的内容由AI⽣成。孙志岗,AGI课堂创始⼈、ChatALL.ai作者业内共识,以ChatGPT为代表的新⼀代基于⼤模型的AI不只代表了技术突破——Ta是⼀个新的智慧物种,完全可以当⼈看(所以我拒绝⽤“它”指代当新⼀代AI来到我们⾝边时,就像来了⼀个名校毕业、知识渊博的新同事。Ta什么都懂,但对公司的业务⼀⽆所知,且⼝⽆遮拦,偶尔还会犯浑、闹笑话。我们必须知道如何和这样的AI相处,就像和新同事相处⼀样,才能发挥Ta的⻓处、避开Ta的短学习与AI相处,这本书是个不错的开始。最近,我遇到⼀个⾮常奇怪的现象:我开设的《AI⼤模型全栈⼯程师》课程,涌⼊了很多不懂编程的朋友。他们⽆视标题⾥的“⼯程师”三个字,⽆视我在报课须知⾥列出的“会编程”的明确要求,还是报名了。经过与这些朋友沟通,我了解到他们是因为对AI时代的憧憬和焦虑,“有病乱投医”,买了这门并不⼗分适合他们的课。什么样的课程适合不懂编程的朋友呢?其实我还不知道答案。但我知道,各种教⼤家怎么操作AI⼯具,所谓AI提效的课程、书籍,都“不对”。这是因为,那些内容就像SOP操作⼿册⼀样,把AI当⼯具看,⾮常机械。AI是充满创造性的,想要⽤好Ta,不能⼀味机械地操作,⽽是要知道Ta的原理,了解Ta的脾⽓,才能信⼿拈来地处。这本书虽然是⾯向软件⼯程师的,但因为⾜够基础,所以我建议不懂编程的朋友从这本书开始了解AI的细节。书中的代码都是⽤Python写的,这是⼀种最接近⾃然语⾔的编程语⾔。不需要深究代码细节,把它当成某种英语⽅⾔去读就好。没准⼉你读完这本书,对编程也能有些感悟,甚⾄可以⾃⼰写些⼩程序。众所周知,AI幻觉问题很难消除。现在“压制”AI幻觉最有效的⼿段,⼏乎都要通过编程实现。也许未来和AI共处的技能中,有⼀项就是“懂编程”呢!只不过未来的“懂编程”,不代表⼀定要会写代码,⽽是读得懂代码、能指导AI写代码就⾏。所以,这本书对每个⼈的帮助都可能挺⼤的。推荐序四AI工程师:做新一轮智能革命的首批探索者邓范鑫,字节跳动架构师、公众号“深度学习”主理⼈在⼈⼯智能迎来深度学习爆发期之后,著名⼈⼯智能专家吴恩达曾多次强调:⼈⼯智能就是新时代的电⼒。我⼀直觉得这个⽐喻并不恰当,因为那时我们想要引⼊⼀个⼈⼯智能模型,仍然需要投⼊⼤量的努⼒。⽐如,想构建⼀个分类器,你需要花费⼤量的⼈⼒来标注数据,还要⾃⼰训练和部署模型。据统计,⼀些AI公司每年在数据标注上的投⼊甚⾄占到了营收的10%~20%——对⽐电⼒的便利性,如此⾼的使⽤门槛会使上述类⽐显得突⺎。然⽽,⼤模型出来后,API化的使⽤模式使得这个⽐喻变得⼗分贴切。我们不再需要整理数据、⼈⼯标注、编写模型代码、训练和部署模型,只需要⼀个简单的API请求,就能够实现⼀个AI应⽤。⽽我们的费⽤只和消耗的“电量”有关,开发者只需要关⼼如何把“电流”引⼊不同的元器件中——AI⼯程师(AIEngineer)应运⽽⽣。这个全新的职业需要掌握如何控制⼤模型完成各种类型的任务,AI⼯程师多数由后端⼯程师或前端⼯程师转型⽽来,对AI的概念充满好奇却⼜望⽽⽣畏。我所带领的团队就汇聚了不少这样的⼈才,所以我⼀直对⼤家想迫切⼊门⼤模型应⽤开发的⼼情体会深刻。市⾯上的资料琳琅满⽬,这本⼩册⼦满⾜了我的⼀些期待:它向初学者交代了⼤模型必要的前置概念,避免了⽣疏感;⼜快速梳理了ChatGPT的核⼼原理和⽤法;随后带⼤家快速上⼿构建⼀个AI应⽤。在实践过程中,⼤家还能体会到记忆、提⽰⼯程、智能体等关键领域的核⼼概念及其⽤法。这本书可谓能够让⼤家在短时间内成为新时代的⾸批探索者。这⼀轮智能⾰命的⼤幕刚刚拉开,只有置⾝其中,不断探索、学习、实践,我们才能真正把握⾃⼰的未来,主导属于我们⾃⼰的AGI纪元。我个⼈认为这⼀波智能⾰命最⼤的机会在智能体,智能体为这个世界注⼊了⼀个全新的维度——未来所有⾏业的知识、流程、规则都会融⼊智能体,各种类型的⼯具都将为智能体所⽤——地球⽂明的⾯貌将为之改变,与此同时,⽣产⼒实现指数级的增⻓。各位朋友,希望这本书成为你掌握⼤模型应⽤开发的敲门砖,后⾯还有更波澜壮阔的旅程等着你。⼀起加⼊智能体创造的浪潮吧!推荐序五进入智能应用的新时代梁宇鹏(@⼀乐蓝莺IM创始⼈兼CEOChatGPT绝对是2023年最值得了解的技术,如果你还没有玩过,是时候动⼿了。⾃从ChatGPT发布,⼤模型AI的能⼒已经屡屡刷新⼈们的认知,蓝莺IM团队也在多个⾏业⼤会上分享过对下⼀代智能聊天应⽤的看法——未来,所有的应⽤,都有可能像ChatGPT⼀样,⽤户可以通过聊天的⽅式与其交互,⽽不再通过图形界⾯点击交互。我在2023年的每⼀次分享,第⼀句话便是提醒听众,看不懂新技术没有关系,⼀定要⽤起来,对当前AI技术的发展有⼀个真实的“体感”。只有这样,才有可能逃出旧⽇思维的牢笼,重新审视这强⼈⼯智能的新时代。⼀个越来越明显的现象是,当前⽣态开始呈现两级分化的状态:⼀⽅⾯,⼤模型AI技术⽇新⽉异,善⽤AI的极客们⽤AI做着各种酷炫之事;另⼀⽅⾯,还有很多⼈,或者陷于业务的泥潭之中⽆法⾃拔,或者迷失在信息爆炸的报道中始终摸不到AI的门道。因此,作为⼀本⼊门书,这本书依然有很⼤的价值,特别是对后两类⼈群。现在⾏业正处于“百模⼤战”,开源⼤模型也在迅速发展,但我们知道这⼀切都始于ChatGPT——理解ChatGPT将是理解其他⼤模型AI技术的重要⽀点。⽽要理解ChatGPT,了解其背后的Transformer架构和GPT技术⼀路的演进则变得⾮常必要。ChatGPT的成功,不仅让我们看到了机器可以学会使⽤⾃然语⾔与⼈交互,它还能够通过提供API的⽅式,让所有应⽤以极低的成本来使⽤AI的能⼒,这也为我们构建下⼀代智能应⽤创造了⽆限可能。也正是因为这样的开放性,蓝莺IM团队得以基于ChatGPT构建了⼀个ChatAI的SDK,为应⽤开发者提供兼具聊天和AI双重能⼒的应⽤框架,这在之前是⽆法想象的。以上这些开发思路或者实践⽅向,都可以在这本书中找到对应的章节。通过阅读这本书,建⽴⼀个与⼤模型技术相关的认知框架,是⾯对当前信息爆炸的有效⽅法。你可能还会担⼼:现在⼤模型正在进⼊新的阶段,多模态技术出现了突破,GPTs应⽤商店和各种智能体平台也在陆续发布,这样介绍某个版本的平台类产品的书是否会过时?在我看来,⼤可不必担⼼。本质上,所有的技术都在不断迭代,知识更新才是常态。即使是你第⼀时间阅读的报道,也不过是别⼈早就完成的研究成果,这意味着作者必然早已进⼊新的阶段。⽤威廉·吉布森的话来讲就是:未来已来,只是分布不均。⼀直都是这样,所以⽆须焦虑。如果你能够从这本书中看到智能应⽤的未来,那么它的使命就已经完成,⽽我在这⽅⾯有⾜够的信⼼。重要的是,阅读这本书应该作为你探索智能应⽤的起点,⽽不是终点。推荐序六AGI:不要旁观,要真正参与罗云,腾讯云创始团队成员、腾讯云数据库副总经理兼向量数据库负责⼈我相信,如果我们站在10年后回望,2023年注定⾮同凡响。ChatGPT的⼴泛流⾏激发了公众对AI技术的极⼤兴趣,⼈们逐渐尝试将ChatGPT及类似产品应⽤于⽇常⽣活和⼯作。作为科技⾏业从业者,我收到了不少业外朋友的咨询,他们想了解如何更好地融⼊这波浪潮,并询问有效的学习⽅法。我常引⽤先贤的话回应:“纸上得来终觉浅,绝知此事要躬⾏。”我本⼈推崇亲⾝实践,带着⽬标和想法去学习,这往往能达到事半功倍的效果。⽐如,我曾与⼉⼦⼀起完成了⼀个⾃研“贪吃蛇”的游戏探索项⽬。借助ChatGPT,我们⽤了⼀个下午的时间,就实现了⼉⼦设计的游戏概念——这是真正的“寓教于乐”。作为云计算⾏业⼗余年的资深从业⼈⼠,我深知程序员在调度计算机算⼒⽅⾯所⾯临的挑战。ChatGPT背后的LLM技术使普通⼈能够通过⾃然语⾔完成过去只能由程序员通过编程语⾔实现的任务,这是⼀场巨⼤的变⾰。然⽽,⼈类通常容易⾼估技术的短期影响⽽低估⻓期影响。只有亲⾝体验和实践技术,我们才能更好地保持耐⼼,并激励更多⼈投⾝这个领域,共同进步。我强烈建议⼤家在未来3~5年积极拥抱并体验AI技术。我们说LLM是⼀场巨⼤的变⾰,这不仅是技术领域的变⾰,也是学习领域的变⾰——AI技术之于普通⼈已经不再是“难度⼤,不好学”了。不夸张地说,你可以在任何时候开启对任何技术的学习。⽐如你⼿⾥这本书,内容浅显易懂,⾮常适合想快速⼊门⼤模型应⽤开发的朋友。特别是第3章既有趣⼜⽣动,引导读者从具体案例出发,通过实操学习,快速上⼿⼤模型应⽤开发,从⽽逐步深⼊理解这个新兴技术领域。在初步学习之后,⼤家可以进⼀步学习关于LLM技术原理的论⽂、视频、图书等。在阅读这本书或者后续学习过程中,你有任何疑问都可以随时请教ChatGPT等⼯具——⽆所不知的AI“私教”会随时为你“服务”,你还担⼼学习难度太⼤吗?在新⼀波技术浪潮下,迷茫⽆济于事,只有持续学习才能适应领域的迅速变化。技术变⾰千载难逢,机遇与挑战并存,我辈之⼈当“⽴于潮头,搏击风浪”,共同迎接AGI(通⽤⼈⼯智能)的到来!推荐序七不要害怕被ChatGPT取代,要做第一批驾驭新技术的人宜博,LLMFarm创始⼈2022年11⽉30⽇晚,当我第⼀次看到ChatGPT的时候,跟很多从业者⼀样,我的技术轨迹在那⼀刻被“扭转”了。坏消息是,我们从事了多年的“低代码/⽆代码”以⾁眼可见的速度被GPT强⼤的编程能⼒所“碾压”。我们在⼀个⽉之内毅然转型拥抱GenAI(GenerativeAI,⽣成式⼈⼯智能)这个全新的赛道。好消息是,⼀年后的今天,我们的ChatBI、LLMFarm等产品⼤受欢迎,团队帮助⼏⼗家企业取得了AI场景应⽤上的成功,这些⾜以证明我们当时的决策⽆⽐正确。ChatGPT具备了⼈类的知识推理能⼒,还学习了⼈类历史上许多国家和时代基于语⾔⽂字的知识。⼀⽅⾯,ChatGPT能辅助你写报告、写⽂章、写代码,甚⾄帮你策划完整的商业⽅案;另⼀⽅⾯,许多⼈害怕被ChatGPT取代——焦虑、紧张却⼜⽆所适从。正如计算机和互联⽹在20世纪80年代带来翻天覆地的变化,⼤语⾔模型同样会颠覆当今世界的运作⽅式。今天,会⽤Office软件是职场基本要求;10年后,会⽤AI算法和训练模型可能会成为许多⼯作岗位的必备技能。从现在开始,掌握GenAI技术将成为⼀个⼈最重要的核⼼竞争⼒。所以,不要害怕被AI取代,⽽是要尽快学习掌握新技术。⽐如,这本书就是⾮常适合初学者的⼀本书。如果在2022年底有这么⼀本书,我⾃⼰可能会少⾛很多弯路。它不仅详细介绍了如何使⽤GPT-4和ChatGPT,还提供了⼊门级的提⽰⼯程指导。你不需要成为资深程序员,只要懂⼀点⼉Python就可以完成⽰例项⽬,并产出强⼤的AI应⽤原型。愿各位能在这本启蒙书的带领下,做第⼀批驾驭新技术的⼈。愿我们早⽇迈⼊AI新时代。译者序没有谁天生就是AI工程师从2022年末开始,以ChatGPT为代表的新⼀波⼈⼯智能热潮GenAI以前所未有的速度席卷全球。我们⼏乎每周都可以看到GenAI在各个领域的新⽤途:它可以回答各种问题、翻译⽂章、撰写报告、写⼀段有创意的营销⽂案、在编程项⽬中⽣成代码,甚⾄能够“看”到并为我们解释⼀张图⽚所蕴含的深刻意义。我相信,以GPT-4为代表的⼤语⾔模型(LLM)将驱动新⼀轮技术⾰新,超过半数的应⽤程序在未来将以某种⽅式接⼊LLM。随着算⼒规模化带来的模型推理成本⼤幅度降低,以及多模态、智能体等技术的演进,AI领域很快就会产⽣更多新的应⽤场景,最终形成庞⼤的应⽤⽣态。⽣态系统爆炸式增⻓,围绕AI的全新产品和服务类别也正在不断涌现。全世界最⼤的代码托管平台GitHub在其报告中1指出,2023年的GenAI项⽬数量同⽐增⻓了248%。⼤量的开发⼈员正在学习GenAI技术,并将新技术⽤于增强原有产品或者构建全新的AINative应⽤程序2。AI正在成为产品的核⼼组件。另外,与以往“传统”的AI技术不同的是,LLM使个⼈构建AI项⽬变得更加容易。据GitHub的报告统计,由个⼈主导的AI项⽬数量同⽐增⻓了148%。1数据参见“Octoverse:ThestateofopensourceandriseofAIin2023”。2AINative应⽤程序是指从设计之初就内置了AI技术的应⽤程序。这类应⽤程序与传统的应⽤程序不同,因为它们不是在现有框架上添加AI功能,⽽是将AI集成为其核⼼组成部分。作为国内较早投⾝于GenAI领域的产品经理和LLM应⽤技术的科普作者,我拿到这本书原稿的第⼀反应是,对于LLM驱动型应⽤程序的专业开发⼈员来说,这样⼀本⼩册⼦的知识量显得不⾜,这是因为我将⾃⼰代⼊了读者⾓⾊。实际上,这本书的⽬标读者并⾮已经做过LLM驱动型应⽤程序开发的专业开发⼈员,他们中的⼤多数可能向ChatGPT等聊天机器⼈提过问题,但对LLM相关技术没有太多关注,甚⾄可能⼀⽆所知。在阅读完这本书之后,我发现作者正是考虑到了这⼀点,才以初学者的视⾓,为读者提供了清晰、全⾯的“最⼩可⽤知识”,⽬的是让开发⼈员快速上⼿实践,轻松体验到独⽴搭建第⼀个AI应⽤程序的乐趣。⽐如,书中的⽰例包括打造《塞尔达传说:旷野之息》专家、开发YouTube视频摘要⽣成器等,你完全可以将这本⼩册⼦当成⾃⼰的LLM项⽬快速启动⼿册。2022年底,OpenAI经过⼀系列的⼯程技术处理,将GPT模型以⼀个⾃然语⾔交互应⽤形态(ChatGPT)推向市场。之后,领域从业者及爱好者才有了机会⼴泛接触和理解LLM及其背后的技术。⽐尔·盖茨在GatesNotes⽹站上发表的⼀篇⽂章提到3,LLM将彻底改变每个⼈与计算机的交互⽅式,还将颠覆软件⾏业,引发从键⼊命令转向点击图标以来计算机领域最⼤的⼈机交互⾰命。在接下来的5年⾄10年中,随着AI服务成本的降低,⼈类将进⼊全⺠AI时代。AI将不再仅属于少数的技术⼈员,任何可以上⽹的⼈都将能够拥有⼀个由AI技术驱动的个⼈助理。AI助理会更加个性化,它将了解你的个⼈和⼯作关系、爱好和⽇程,可以帮助你接收和发送电⼦邮件、安排旅游⾏程、预定电影场次、为你的家庭理财配置提供建议等。在可预⻅的未来,掌握基本的AI知识将像现在掌握基本的计算机知识⼀样成为每个⼈的必备技能,每个⼈都将或多或少地具备定义AI的能⼒。3参见“AIisabouttocompletelychangehowyouusecomputers”。对初学者⽽⾔,进⼊⼀个全新的领域⽆疑需要克服⼼理上的恐惧,对于像机器学习、⾃然语⾔处理这些直觉上技术门槛很⾼的领域更是如此。但接下来我要讲⼀个关于OpenAI联合创始⼈GregBrockman的个⼈故事。GregBrockman在2019年7⽉发表了⼀篇题为“HowIbecameamachinelearningpractitioner”的博客⽂章,并在其中讲述了⾃⼰学习机器学习技术的历程。Greg在加⼊OpenAI之前是Stripe公司的⾸席技术官,虽然已经是⼀位技术“⼤⽜”,但他直到加⼊OpenAI3年之后才开始以初学者的⾝份学习机器学习技术。在学习过程中,虽然有OpenAI同事的帮助,但他也跟普通⼈⼀样遇到了很多障碍和挫折,甚⾄⾃我怀疑,不过他最终还是坚持了下来。经过9个⽉的深⼊学习,Greg成功地从传统软件⼯程师转型成为机器学习⼯程师。没有谁天⽣就是AI⼯程师,即使是OpenAI的联合创始⼈也需要学习。我希望这个真实的故事能对正准备投⾝于AI领域的你有所帮任何⼀项新技术都存在⼀条技术成熟度曲线,LLM技术在当下尚未迈⼊⽣产成熟期。2023年,GenAI技术以惊⼈的速度发展。我时不时感慨,⾃⼰在个⼈的职业⽣涯中,从没有在任何阶段需要像在这⼀年⾥⼀样快速学习如此多的新知识。在⽇常⼯作中应⽤新的AI技术,这⼀⽅⾯很⼤程度上提⾼了我的⽣产⼒,但另⼀⽅⾯,因为每天不停歇地关注AI领域内的最新进展,同时兴奋地研究新技术,我的⼯作总量反⽽增加了。这既让我感到兴奋,⼜让我深刻地感受到作为⼀个AI技术从业者所⾯临的挑战。可以预见的是,在这本书上市之后,⽆论是GenAI,还是基于LLM的应⽤程序开发,抑或是其他相关领域,都仍将继续以不可思议的速度发展。这就意味着,⽆论是编写⼀本技术书,还是成为相关技术领域的从业者,都需要抱着开放的⼼态,时刻拥抱新的变化,持续迭代⾃⼰的知识,更重要的是,乐于上⼿实践。回到这本书,两位作者提供了⾮常清晰、系统的知识脉络,为想学习使⽤LLM构建应⽤程序的Python开发⼈员提供了全⾯的技术指导。这本书对于LLM驱动型应⽤程序开发初学者⾮常友好,有助于快速了解GPT等模型的原理特性,并学习如何使⽤流⾏的编程语⾔Python构建基于AI技术的解决⽅案。通过这本书,你可以学到以下核⼼知识:01.GPT-4和ChatGPT的基本原理和优势,以及它们的⼯作⽅式;02.如何将这类模型集成到基于Python的⾃然语⾔处理应⽤程序中;03.如何使⽤Python开发基于GPT-3.5API和GPT-4API的⽂本⽣成、内容摘要等初级应⽤程序;04.进阶主题,包括提⽰⼯程、为特定任务微调模型、插件、LangChain我想提醒你的是,这本书的原版上市时间为2023年8⽉。同年11⽉,OpenAI举办了⾸届开发者⼤会,并发布了推理能⼒更强、上下⽂窗⼝更⼤的GPT-4Turbo模型,整体下调了各模型的调⽤价格,同时发布了⽅便开发⼈员定制的助⼿API、GPTs应⽤商店等。我在这本书各章的相关内容之处对此做了详细的注释。虽然我已经仔细对书中的内容做了技术审校,但由于这⼀领域现象级的技术更替速度,这样的⼯作仍难以保证当你拿到这本书时,书中所介绍的技术或引⽤的插图还能代表最新进展。因此,我建议你在阅读过程中,结合OpenAI的最新开发⽂档来进⾏具体的开发实践。学习⼀个全新的领域需要动机、热情、坚持和⽅法。能读到这篇译者序,说明你已经具备了最初的动机,可能是纯粹的好奇⼼,也可能是提升职业技能的意愿,这已经是⼀个很好的起点了。同为这个领域的学习者,我想与你分享YCombinator的联合创始⼈、《⿊客与画家》作者PaulGraham在其个⼈博客⽹站上发表的⼀篇⽂章——“SuperlinearReturns”(超线性回报)。他在⽂章中提到,我们在学习过程中的投⼊与回报是超线性的。在开始阅读这本书时:.你可能会对⼤量的术语和技术概念感到茫然⽆措;.你可能还需要查阅除这本书之外的其他资料;.你可能会担⼼按照这样的学习速度⽆论如何都达不到预期⽬标;●焦虑时不时会找上门,但请放⼼,为了获得⼀个扎实的⽴⾜点,最初的努⼒虽不轻松,但绝对值得。随着实践的深⼊,这个过程会变得越来越容易。这就是“超线性回报”——随着时间的投⼊,奖励曲线会在后期急剧上最后,祝愿你能早⽇写出充满创意的AI应⽤程序,并在这个探索过程中找到乐趣。前言在发布仅5天后,ChatGPT就吸引了100万⽤户。这样的成绩震撼了科技⾏业甚⾄其他⾏业。尽管⽤于⼈⼯智能⽂本⽣成的OpenAIAPI在3年前就已诞⽣,但随着ChatGPT的成功,它突然获得极⼤的关注。ChatGPT的界⾯展⽰了这类语⾔模型的巨⼤潜⼒。突然之间,开发⼈员和技术创造者意识到,梦寐以求的机遇触⼿可及。多年来,⾃然语⾔处理领域取得了⻓⾜的进步,但直到最近,这项技术的使⽤者还仅限于少数精英。OpenAIAPI及其附带的库为所有想构建⼈⼯智能应⽤程序1的⼈提供了即插即⽤的解决⽅案。⽆须拥有强⼤的硬件或深厚的⼈⼯智能知识,开发⼈员只需利⽤⼏⾏代码,就能以合理的成本在项⽬中集成强⼤的功能。1本书有时将“应⽤程序”简称为“应⽤”,两者的意思—致。——编者注本书作者奥利维耶是机器学习研究员,玛丽−艾丽斯是软件架构师和数据⼯程师。他们结合⾃⾝的知识和经验,帮助你从整体上理解如何使⽤GPT-4和ChatGPT开发应⽤程序。本书清晰、详细地解释了⼈⼯智能概念,并以通俗易懂的⽅式指导你学习如何⾼效、安全、低成本地集成OpenAI服务。本书旨在让所有⼈都能理解所讲的内容,但我们仍建议你具备基础的Python知识。通过清晰的解释、⽰例项⽬和逐步指导,我们邀请你与我们⼀起探索GPT-4和ChatGPT如何改变⼈机交互⽅式。排版约定本书使⽤下列排版约定。黑体表⽰新术语或重点强调的内容。等宽字体(constantwidth)表⽰程序⽚段,以及正⽂中出现的变量、函数、数据库、数据类型、环境变量、语句和关键字等。加粗等宽字体(constantwidthbold)表⽰应该由⽤户输⼊的命令或其他⽂本。等宽斜体(constantwidthitalic)表⽰应该由⽤户输⼊的值或根据上下⽂确定的值替换的⽂本。该图标表⽰提⽰或建议。该图标表⽰⼀般注记。该图标表⽰警告或警⽰。使用代码示例可以从/malywut/gpt_examples下载补充材料(代码⽰例、练习等)2。2也可以通过本书在图灵社区的专属页⾯下载:/book/3344。——编者注本书是要帮你完成⼯作的。⼀般来说,你可以把本书提供的代码⽰例⽤在你的程序或⽂档中。除⾮你使⽤了很⼤⼀部分代码,否则⽆须联系我们获得许可。⽐如,⽤本书的⼏个代码⽚段写⼀个程序就⽆须获得许可,销售或分发O'Reilly图书的⽰例光盘则需要获得许可;引⽤本书中的代码⽰例回答问题⽆须获得许可,将书中⼤量的代码放到你的产品⽂档中则需要获得许可。我们很希望但并不强制要求你在引⽤本书内容时加上引⽤说明。引⽤说明andChatGPTbyOlivierCaelenandMarie-AliceBlete(O'Reilly).Copyright2023OlivierCaelenandMarie-AliceBlete,978-1-098-15248-2”。如果你认为⾃⼰对代码⽰例的⽤法超出了上述许可的范围,欢迎你通过permissions@与我们联系。O'Reilly在线学习平台(O'ReillyOnlineLearning)40多年来,O'ReillyMedia致⼒于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。我们拥有由专家和创新者组成的庞⼤⽹络,他们通过图书、⽂章和我们的在线学习平台分享他们的知识和经验。O'Reilly在线学习平台让你能够按需访问现场培训课程、深⼊的学习路径、交互式编程环境,以及O'Reilly和200多家其他出版商提供的⼤量⽂本资源和视频资源。更多信息,请访问。联系我们请把对本书的评价和问题发给出版社。美国:O'ReillyMedia,Inc.1005GravensteinHighwayNorthSebastopol,CA95472北京市⻄城区⻄直门南⼤街2号成铭⼤厦C座807室(100035)奥莱利技术咨询(北京)有限公司请访问https://oreil.ly/devAppsGPT,查看相关勘误3。3本书中⽂版勘误请到/book/3344查看和提交。——编者注对于本书的评论和技术性问题,请发送电⼦邮件到errata@。要了解更多O'Reilly图书和培训课程等信息,请访问以下⽹站:。我们在LinkedIn的地址如下:/company/oreilly-media。请关注我们的Twitter动态:/oreillymedia。我们的YouTube视频地址如下:/oreillymedia。致谢针对发展速度最快的⼈⼯智能话题写⼀本书离不开许多⼈的帮助。我们要感谢杰出的O'Reilly团队给予的⽀持、建议和中肯的评论,特别是CorbinCollins、NicoleButterfield、ClareLaylock、SuzanneHuston和AudreyDoyle。本书还得益于多位优秀审稿⼈的帮助,他们花费⼤量时间提供了宝贵的反馈。⾮常感谢TomTaulli、LucasSoares和LeonieMonigatti。⾮常感谢我们在Worldline的同事分享对ChatGPT和OpenAI服务的见解,也感谢你们参与永⽆⽌境的讨论。特别感谢LiyunHeGuelton、GuillaumeCoter、LuxinZhang和PatrikDeBoe。同样感谢Worldline的DeveloperAdvocate团队从⼀开始就给予的⽀持和⿎励,特别感谢Jean-FrancoisJames和FaniloAndrianasolo。最后,感谢朋友和家⼈在我们疯狂使⽤ChatGPT期间所给予的耐⼼和理解。正因为如此,我们才能在如此短的时间内出版本书。扫描以下⼆维码,即可购买本书中⽂版电⼦书。想象这样⼀个世界:在这个世界⾥,你可以像和朋友聊天⼀样快速地与计算机交互。那会是怎样的体验?你可以创造出什么样的应⽤程序?这正是OpenAI努⼒构建的世界,它通过其GPT模型让设备拥有与⼈类对话的能⼒。作为人工智能(artificialintelligence,AI)领域的最新成果,GPT-4和其他GPT模型是基于⼤量数据训练⽽成的大语言模型1(largelanguagemodel,LLM它们能够以⾮常⾼的准确性识别和⽣成⼈类可读的⽂本。1“⼤语⾔模型”简称“⼤模型”。在本书中,两者的意思相同。——编者注这些AI模型的意义远超简单的语⾳助⼿。多亏了OpenAI的模型,开发⼈员现在可以利⽤自然语言处理(naturallanguageprocessing,NLP)技术创建应⽤程序,使其以⼀种曾经只存在于科幻⼩说中的⽅式理解我们的需求。从学习和适应个体需求的创新型客户⽀持系统,到理解每个学⽣独特的学习风格的个性化教学⼯具,GPT-4和ChatGPT打开了⼀扇门,让⼈们看见⼀个充满可能性的全新世界。GPT-4和ChatGPT究竟是什么?本章的⽬标是深⼊探讨这些AI模型的基础、起源和关键特性。通过了解这些模型的基础知识,你将为构建下⼀代以LLM驱动的应⽤程序打下坚实的基础。1.1LLM概述本节介绍塑造GPT-4和ChatGPT发展历程的基础模块。我们旨在帮助你全⾯理解语⾔模型、NLP技术、Transformer架构的作⽤,以及GPT模型中的标记化和预测过程。1.1.1探索语言模型和NLP的基础作为LLM,GPT-4和ChatGPT是NLP领域中最新的模型类型,NLP是机器学习和⼈⼯智能的⼀个⼦领域。在深⼊研究GPT-4和ChatGPT之前,有必要了解NLP及其相关领域。AI有不同的定义,但其中⼀个定义或多或少已成为共识,即AI是⼀类计算机系统,它能够执⾏通常需要⼈类智能才能完成的任务。根据这个定义,许多算法可以被归为AI算法,⽐如导航应⽤程序所⽤的交通预测算法或策略类视频游戏所⽤的基于规则的系统。从表⾯上看,在这些⽰例中,计算机似乎需要智能才能完成相关任务。机器学习(machinelearning,ML)是AI的⼀个⼦集。在ML中,我们不试图直接实现AI系统使⽤的决策规则。相反,我们试图开发算法,使系统能够通过⽰例⾃⼰学习。⾃从在20世纪50年代开始进⾏ML研究以来,⼈们已经在科学⽂献中提出了许多ML算法。在这些ML算法中,深度学习(deeplearning,DL)算法已经引起了⼴泛关注。DL是ML的⼀个分⽀,专注于受⼤脑结构启发的算法。这些算法被称为人工神经网络(artificialneuralnetwork)。它们可以处理⼤量的数据,并且在图像识别、语⾳识别及NLP等任务上表现出⾊。GPT-4和ChatGPT基于⼀种特定的神经⽹络架构,即Transformer。Transformer就像阅读机⼀样,它关注句⼦或段落的不同部分,以理解其上下⽂并产⽣连贯的回答。此外,它还可以理解句⼦中的单词顺序和上下⽂意思。这使Transformer在语⾔翻译、问题回答和⽂本⽣成等任务中⾮常有效。图1-1展⽰了以上术语之间的关系。图1-1:从AI到Transformer的嵌套技术集合NLP是AI的⼀个⼦领域,专注于使计算机能够处理、解释和⽣成⼈类语⾔。现代NLP解决⽅案基于ML算法。NLP的⽬标是让计算机能够处理⾃然语⾔⽂本。这个⽬标涉及诸多任务,如下所述。⽂本分类将输⼊⽂本归为预定义的类别。这类任务包括情感分析和主题分类。⽐如,某公司使⽤情感分析来了解客户对其服务的意见。电⼦邮件过滤是主题分类的⼀个例⼦,其中电⼦邮件可以被归类为“个⼈邮件”“社交邮件”“促销邮件”“垃圾邮件”等。将⽂本从⼀种语⾔⾃动翻译成另⼀种语⾔。请注意,这类任务可以包括将代码从⼀种程序设计语⾔翻译成另⼀种程序设计语⾔,⽐如从Python翻译成C++。问题回答根据给定的⽂本回答问题。⽐如,在线客服门户⽹站可以使⽤NLP模型回答关于产品的常见问题;教学软件可以使⽤NLP模型回答学⽣关于所学主题的问题。⽂本⽣成根据给定的输⼊⽂本(称为提⽰词2)⽣成连贯且相关的输出⽂本。2对于prompt⼀词,本书统⼀采⽤“提⽰词”这个译法,以符合业内惯例。不过,prompt既可以是⼀个词,也可以是⼀个或多个句⼦。对于promptengineering,本书采⽤“提⽰⼯程”这个译法。——译者注如前所述,LLM是试图完成⽂本⽣成任务的⼀类ML模型。LLM使计算机能够处理、解释和⽣成⼈类语⾔,从⽽提⾼⼈机交互效率。为了做到这⼀点,LLM会分析⼤量⽂本数据或基于这些数据进⾏训练,从⽽学习句⼦中各词之间的模式和关系。这个学习过程可以使⽤各种数据源,包括维基百科、Reddit、成千上万本书,甚⾄互联⽹本⾝。在给定输⼊⽂本的情况下,这个学习过程使得LLM能够预测最有可能出现的后续单词,从⽽⽣成对输⼊⽂本有意义的回应。于2023年发布的⼀些现代语⾔模型⾮常庞⼤,并且已经在⼤量⽂本上进⾏了训练,因此它们可以直接执⾏⼤多数NLP任务,如⽂本分类、⾃动翻译、问题回答等。GPT-4和ChatGPT是在⽂本⽣成任务上表现出⾊的LLM。LLM的发展可以追溯到⼏年前。它始于简单的语⾔模型,如n-gram模型。n-gram模型通过使⽤词频来根据前⾯的词预测句⼦中的下⼀个词,其预测结果是在训练⽂本中紧随前⾯的词出现的频率最⾼的词。虽然这种⽅法提供了不错的着⼿点,但是n-gram模型在理解上下⽂和语法⽅⾯仍需改进,因为它有时会⽣成不连贯的⽂本。为了提⾼n-gram模型的性能,⼈们引⼊了更先进的学习算法,包括循环神经网络(recurrentneuralnetwork,RNN)和长短期记忆(longshort-termmemory,LSTM)⽹络。与n-gram模型相⽐,这些模型能够学习更⻓的序列,并且能够更好地分析上下⽂,但它们在处理⼤量数据时的效率仍然⽋佳。尽管如此,在很⻓的⼀段时间⾥,这些模型算是最⾼效的,因此在⾃动翻译等任务中被⼴泛使⽤。Transformer架构彻底改变了NLP领域,这主要是因为它能够有效地解决之前的NLP模型(如RNN)存在的⼀个关键问题:很难处理⻓⽂本序列并记住其上下⽂。换句话说,RNN在处理⻓⽂本序列时容易忘记上下⽂(也就是臭名昭著的“灾难性遗忘问题”),Transformer则具备⾼效处理和编码上下⽂的能⼒。这场⾰命的核⼼⽀柱是注意力机制,这是⼀个简单⽽⼜强⼤的机制。模型不再将⽂本序列中的所有词视为同等重要,⽽是在任务的每个步骤中关注最相关的词。交叉注意力和自注意力是基于注意⼒机制的两个架构模块,它们经常出现在LLM中。Transformer架构⼴泛使⽤了交叉注意⼒模块和⾃注意⼒模块。交叉注意⼒有助于模型确定输⼊⽂本的不同部分与输出⽂本中下⼀个词的相关性。它就像⼀盏聚光灯,照亮输⼊⽂本中的词或短语,并突出显⽰预测下⼀个词所需的相关信息,同时忽略不重要的细节。为了说明这⼀点,让我们以⼀个简单的句⼦翻译任务为例。假设输⼊⽂本是这样⼀个英语句⼦:AliceenjoyedthesunnyweatherinBrussels(Alice很享受布鲁塞尔阳光明媚的天⽓)。如果⽬标语⾔是法语,那么输出⽂本应该是:AliceaprofitédutempsensoleilléàBruxelles。在这个例⼦中,让我们专注于⽣成法语单词ensoleillé,它对应原句中的sunny。对于这个预测任务,交叉注意⼒模块会更关注英语单词sunny和weather,因为它们都与ensoleillé相关。通过关注这两个单词,交叉注意⼒模块有助于模型为句⼦的这⼀部分⽣成准确的翻译结果,如图1-2所⽰。图1-2:交叉注意力模块使模型关注输入文本(英语句子)中的关键部分,以预测输出文本(法语句子)中的下一个单词⾃注意⼒机制是指模型能够关注其输⼊⽂本的不同部分。具体到NLP领域,⾃注意⼒机制使模型能够评估句⼦中的每个词相⽐于其他词的重要性。这使得模型能够更好地理解各词之间的关系,并根据输⼊⽂本中的多个词构建新概念。来看⼀个更具体的例⼦。考虑以下句⼦:Alicereceivedpraisefromhercolleagues(Alice受到同事的赞扬)。假设模型试图理解her这个单词的意思。⾃注意⼒机制给句⼦中的每个单词分配不同的权重,突出在这个上下⽂中与her相关的单词。在本例中,⾃注意⼒机制会更关注Alice和colleagues这两个单词。如前所述,⾃注意⼒机制帮助模型根据这些单词构建新概念。在本例中,可能出现的⼀个新概念是Alice'scolleagues,如图1-图1-3:自注意力机制使新概念Alice'scolleagues得以出现与RNN不同,Transformer架构具有易于并⾏化的优势。这意味着Transformer架构可以同时处理输⼊⽂本的多个部分,⽽⽆须顺序处理。这样做可以提⾼计算速度和训练速度,因为模型的不同部分可以并⾏⼯作,⽽⽆须等待前⼀步骤完成。基于Transformer架构的模型所具备的并⾏处理能⼒与图形处理单元(graphicsprocessingunit,GPU)的架构完美契合,后者专⽤于同时处理多个计算任务。由于⾼度的并⾏性和强⼤的计算能⼒,GPU⾮常适合⽤于训练和运⾏基于Transformer架构的模型。硬件上的这⼀进展使数据科学家能够在⼤型数据集上训练模型,从⽽为开发LLM铺平了道路。Transformer架构由来⾃⾕歌公司的AshishVaswani等⼈在2017年的论⽂“AttentionIsAllYouNeed”中提出,最初⽤于序列到序列的任务,如机器翻译任务。标准的Transformer架构有两个主要组件:编码器和解码器,两者都⼗分依赖注意⼒机制。编码器的任务是处理输⼊⽂本,识别有价值的特征,并⽣成有意义的⽂本表⽰,称为嵌入(embedding)。解码器使⽤这个嵌⼊来⽣成⼀个输出,⽐如翻译结果或摘要⽂本。这个输出有效地解释了编码信息。生成式预训练Transformer(GenerativePre-trainedTransformer,GPT)是⼀类基于Transformer架构的模型,专门利⽤原始架构中的解码器部分。在GPT中,不存在编码器,因此⽆须通过交叉注意⼒机制来整合编码器产⽣的嵌⼊。也就是说,GPT仅依赖解码器内部的⾃注意⼒机制来⽣成上下⽂感知的表⽰和预测结果。请注意,BERT等其他⼀些众所周知的模型基于编码器部分,但本书不涉及这类模型。图1-4展⽰了NLP技术的演变历程。图1-4:NLP技术从n-gram到LLM的演变1.1.3解密GPT模型的标记化和预测步骤GPT模型接收⼀段提⽰词作为输⼊,然后⽣成⼀段⽂本作为输出。这个过程被称为文本补全。举例来说,提⽰词可以是Theweatherisnicetoday,soIdecidedto(今天天⽓很好,所以我决定),模型的输出则可能是goforawalk(去散步)。你可能想知道GPT模型是如何根据输⼊的提⽰词构建输出⽂本的。正如你将看到的,这主要是⼀个概率问题。当GPT模型收到⼀段提⽰词之后,它⾸先将输⼊拆分成标记(token)。这些标记代表单词、单词的⼀部分、空格或标点符号。⽐如,在前⾯的例⼦中,提⽰词可以被拆分成[The,wea,ther,is,nice,today,,,so,I,de,ci,ded,⼏乎每个语⾔模型都配有⾃⼰的分词器。截⾄本书英⽂版出版之时,GPT-4的分词器还不可⽤3,不过你可以尝试使⽤GPT-3的分词器。3现在,OpenAI已在其⽹站上提供了GPT-4的分词器。——译者注理解标记与词⻓的⼀条经验法则是,对于英语⽂本,100个标记⼤约等于75个单词。因为有了注意⼒机制和Transformer架构,LLM能够轻松处理标记并解释它们之间的关系及提⽰词的整体含义。Transformer架构使模型能够⾼效地识别⽂本中的关键信息和上下⽂。为了⽣成新的句⼦,LLM根据提⽰词的上下⽂预测最有可能出现的下⼀个标记。OpenAI开发了两个版本的GPT-4,上下⽂窗⼝⼤⼩分别为8192个标记和32768个标记4。与之前的循环模型不同,带有注意⼒机制的Transformer架构使得LLM能够将上下⽂作为⼀个整体来考虑。基于这个上下⽂,模型为每个潜在的后续标记分配⼀个概率分数,然后选择概率最⾼的标记作为序列中的下⼀个标记。在前⾯的例⼦中,“今天天⽓很好,所以我决定”之后,下⼀个最佳标记可能是“去”。4请注意,本书中的译者注的添加时间为2023年11⽉19⽇~2023年12⽉2⽇,在此统⼀说明,后续不再逐⼀详细说明。截⾄2023年11⽉下旬,OpenAI已提供6个GPT-4模型,包括gpt-4-1106-preview、gpt-4-vision-preview、gpt-4、gpt-4-32k、gpt-4-0613、gpt-4-32k-0613,其中gpt-4-1106-preview的上下⽂窗⼝已增加⾄16385个标记。——译者注接下来重复此过程,但现在上下⽂变为“今天天⽓很好,所以我决定去”,之前预测的标记“去”被添加到原始提⽰词中。这个过程会⼀直重复,直到形成⼀个完整的句⼦:“今天天⽓很好,所以我决定去散步。”这个过程依赖于LLM学习从⼤量⽂本数据中预测下⼀个最有可能出现的单词的能⼒。图1-5展⽰了这个过程。图1-5:逐个标记地补全文本,整个过程是迭代式的1.2GPT模型简史:从GPT-1到GPT-4本节将回顾OpenAI的GPT模型从GPT-1到GPT-4的演变历程。2018年年中,就在Transformer架构诞⽣⼀年后,OpenAI发表了⼀篇题为“ImprovingLanguageUnderstandingbyGenerativePre-Training”的论⽂,作者是AlecRadford等⼈。这篇论⽂介绍了GPT,也被称为GPT-1。在GPT-1出现之前,构建⾼性能NLP神经⽹络的常⽤⽅法是利⽤监督学习。这种学习技术使⽤⼤量的⼿动标记数据。以情感分析任务为例,⽬标是对给定的⽂本进⾏分类,判断其情感是积极的还是消极的。⼀种常见的策略是收集数千个⼿动标记的⽂本⽰例来构建有效的分类模型。然⽽,这需要有⼤量标记良好的监督数据。这⼀需求限制了监督学习的性能,因为要⽣成这样的数据集,难度很⼤且成本⾼昂。在论⽂中,GPT-1的作者提出了⼀种新的学习过程,其中引⼊了⽆监督的预训练步骤。这个预训练步骤不需要标记数据。相反,他们训练模型来预测下⼀个标记。由于采⽤了可以并⾏化的Transformer架构,预训练步骤是在⼤量数据上进⾏的。对于预训练,GPT-1模型使⽤了BookCorpus数据集。该数据集包含约11000本未出版图书的⽂本。BookCorpus最初由YukunZhu等⼈在2015年的论⽂“AligningBooksandMovies:TowardsStory-likeVisualExplanationsbyWatchingMoviesandReadingBooks”中给出,并通过多伦多⼤学的⽹页提供。然⽽,原始数据集的正式版本如今已不能公开访问。⼈们发现,GPT-1在各种基本的⽂本补全任务中是有效的。在⽆监督学习阶段,该模型学习BookCorpus数据集并预测⽂本中的下⼀个词。然⽽,GPT-1是⼩模型,它⽆法在不经过微调的情况下执⾏复杂任务。因此,⼈们将微调作为第⼆个监督学习步骤,让模型在⼀⼩部分⼿动标记的数据上进⾏微调,从⽽适应特定的⽬标任务。⽐如,在情感分析等分类任务中,可能需要在⼀⼩部分⼿动标记的⽂本⽰例上重新训练模型,以使其达到不错的准确度。这个过程使模型在初始的预训练阶段习得的参数得到修改,从⽽更好地适应具体的任务。尽管规模相对较⼩,但GPT-1在仅⽤少量⼿动标记的数据进⾏微调后,能够出⾊地完成多个NLP任务。GPT-1的架构包括⼀个解码器(与原始Transformer架构中的解码器类似),具有1.17亿个参数。作为⾸个GPT模型,它为更强⼤的模型铺平了道路。后续的GPT模型使⽤更⼤的数据集和更多的参数,更好地利⽤了Transformer架构的潜⼒。2019年初,OpenAI提出了GPT-2。这是GPT-1的⼀个扩展版本,其参数量和训练数据集的规模⼤约是GPT-1的10倍。这个新版本的参数量为15亿,训练⽂本为40GB。2019年11⽉,OpenAI发布了完整版的GPT-2模GPT-2是公开可⽤的,可以从HuggingFace或GitHub下载。GPT-2表明,使⽤更⼤的数据集训练更⼤的语⾔模型可以提⾼语⾔模型的任务处理能⼒,并使其在许多任务中超越已有模型。它还表明,更⼤的语⾔模型能够更好地处理⾃然语⾔。2020年6⽉,OpenAI发布了GPT-3。GPT-2和GPT-3之间的主要区别在于模型的⼤⼩和⽤于训练的数据量。GPT-3⽐GPT-2⼤得多,它有1750亿个参数,这使其能够捕捉更复杂的模式。此外,GPT-3是在更⼴泛的数据集上进⾏训练的。这包括CommonCrawl(它就像互联⽹档案馆,其中包含来⾃数⼗亿个⽹页的⽂本)和维基百科。这个训练数据集包括来⾃⽹站、书籍和⽂章的内容,使得GPT-3能够更深⼊地理解语⾔和上下⽂。因此,GPT-3在各种语⾔相关任务中都展⽰出更强的性能。此外,它在⽂本⽣成⽅⾯还展⽰出更强的连贯性和创造⼒。它甚⾄能够编写代码⽚段,如SQL查询,并执⾏其他智能任务。此外,GPT-3取消了微调步骤,⽽这在之前的GPT模型中是必需的。然⽽,GPT-3存在⼀个问题,即最终⽤户提供的任务与模型在训练过程中所见到的任务不⼀致。我们已经知道,语⾔模型根据输⼊⽂本的上下⽂来预测下⼀个标记。这个训练过程不⼀定与最终⽤户希望模型执⾏的任务⼀致。此外,增⼤语⾔模型的规模并不能从根本上使其更好地遵循⽤户的意图或指令。像GPT-3这样的模型是在互联⽹数据上进⾏训练的。尽管数据源经过⼀定的筛选,但⽤于训练模型的数据仍然可能包含虚假信息或有问题的⽂本,⽐如涉及种族歧视、性别歧视等。因此,模型有时可能说错话,甚⾄说出有害的话。2021年,OpenAI发布了GPT-3模型的新版本,并取名为InstructGPT。与原始的GPT-3基础模型不同,InstructGPT模型通过强化学习和⼈类反馈进⾏优化。这意味着InstructGPT模型利⽤反馈来学习和不断改进。这使得模型能够从⼈类指令中学习,同时使其真实性更⼤、伤害性更⼩。为了说明区别,我们输⼊以下提⽰词:“解释什么是时间复杂度。”两个模型给出的回答如下所述。·标准的GPT-3模型给出的回答是:“解释什么是空间复杂度。解释什么是⼤O记法。”.InstructGPT模型给出的回答是:“时间复杂度⽤于衡量算法运⾏和完成任务所需的时间,通常采⽤⼤O记法表⽰。它以操作次数来衡量算法的复杂度。算法的时间复杂度⾄关重要,因为它决定了算法的效率和对更⼤输⼊的扩展能⼒。”我们可以看到,对于相同的输⼊,第⼀个模型⽆法回答问题(它给出的回答甚⾄很奇怪⽽第⼆个模型可以回答问题。当然,使⽤标准的GPT-3模型也能够得到所需的回答,但需要应⽤特定的提⽰词设计和优化技术。这种技术被称为提示工程(promptengineering后⽂将详细介绍。在题为“TrainingLanguageModelstoFollowInstructionswithHumanFeedback”的论⽂中,OpenAI的欧阳龙等⼈解释了InstructGPT是如何构建从GPT-3模型到InstructGPT模型的训练过程主要有两个阶段:监督微调(supervisedfine-tuning,SFT)和通过人类反馈进行强化学习(reinforcementlearningfromhumanfeedback,RLHF)。每个阶段都会针对前⼀阶段的结果进⾏微调。也就是说,SFT阶段接收GPT-3模型并返回⼀个新模型。RLHF阶段接收该模型并返回InstructGPT版本。根据OpenAI的论⽂,我们重新绘制了⼀张流程图,如图1-6所⽰。我们来逐⼀探讨每个阶段。在SFT阶段中,原始的GPT-3模型通过监督学习进⾏微调(图1-6中的步骤1)。OpenAI拥有⼀系列由最终⽤户创建的提⽰词。⾸先,从可⽤的提⽰词数据集中随机抽样。然后,要求⼀个⼈(称为标注员)编写⼀个⽰例来演⽰理想的回答。重复这个过程数千次,以获得⼀个由提⽰词和相应的理想回答组成的监督训练数据集。最后,使⽤该数据集微调GPT-3模型,以针对⽤户的提问提供更⼀致的回答。此时得到的模型称为SFT模型。图1-6:获取InstructGPT模型的步骤(根据欧阳龙等人的图片重新绘制)RLHF阶段分为两个⼦步骤:⾸先训练奖励模型(图1-6中的步骤2),然后使⽤奖励模型进⾏强化学习(图1-6中的步骤3)。奖励模型的⽬标是⾃动为回答给出分数。当回答与提⽰词中的内容匹配时,奖励分数应该很⾼;当回答与提⽰词中的内容不匹配时,奖励分数应该很低。为了训练奖励模型,OpenAI⾸先随机选择⼀个问题,并使⽤SFT模型⽣成⼏个可能的答案。我们稍后将看到,通过⼀个叫作温度(temperature)的参数,可以针对同⼀输⼊⽣成许多回答。然后,要求标注员根据与提⽰词的匹配程度和有害程度等标准给这些回答排序。在多次重复此过程后,使⽤数据集微调SFT模型以进⾏评分。这个奖励模型将⽤于构建最终的InstructGPT模型。训练InstructGPT模型的最后⼀步是强化学习,这是⼀个迭代的过程。它从⼀个初始的⽣成式模型开始,⽐如SFT模型。然后随机选择⼀个提⽰词,让模型给出预测结果,由奖励模型来评估结果。根据得到的奖励分数,相应地更新⽣成式模型。这个过程可以在⽆须⼈⼯⼲预的情况下重复⽆数次,从⽽⾃动、⾼效地提⾼模型的性能。与基础的GPT-3模型相⽐,InstructGPT模型能够针对⽤户的提问⽣成更准确的内容。OpenAI建议使⽤InstructGPT模型,⽽⾮原始版本。2022年3⽉,OpenAI发布了GPT-3的新版本。新模型可以编辑⽂本或向⽂本中插⼊内容。它们所⽤的训练数据截⾄2021年6⽉,OpenAI称它们⽐先前的版本更强⼤。2022年11⽉底,OpenAI正式称这些模型为GPT-3.5模型。OpenAI还提出了Codex模型,这是⼀个在数⼗亿⾏代码上进⾏了微调的GPT-3模型。正是它给GitHubCopilot这款⾃动化编程⼯具赋予了强⼤的能⼒,为使⽤VisualStudioCode、JetBrains甚⾄Neovim等许多⽂本编辑器的开发⼈员提供了帮助。然⽽,Codex模型在2023年3⽉被OpenAI弃⽤。相反,OpenAI建议⽤户从Codex切换到GPT-3.5Turbo或GPT-4。与此同时,GitHub发布了基于GPT-4的CopilotX版本,其功能⽐之前的版本多得OpenAI对Codex模型的弃⽤提醒我们,使⽤应⽤程序接⼝存在固有风险:随着更⾼效的模型的开发和发布,它们可能会发⽣变化,甚⾄被停⽤
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年初级通信工程师(通信专业实务)试题及答案
- 2026年电气安全管理培训试卷(含答案)
- 2026事业单位工勤技能-江苏-江苏中式烹调师一级(高级技师)历年参考题库含答案详解
- 2026事业单位工勤技能-广西-广西造林管护工三级(高级工)历年参考题库含答案详解
- 2026事业单位工勤技能-广东-广东管道工四级(中级工)历年参考题库含答案详解
- 2026事业单位工勤技能-广东-广东动物检疫员四级(中级工)历年参考题库含答案详解
- 2026事业单位工勤技能-山东-山东水工闸门运行工五级(初级工)历年参考题库含答案详解
- 2026事业单位工勤技能-宁夏-宁夏防疫员一级(高级技师)历年参考题库含答案详解
- 2026事业单位工勤技能-四川-四川计算机文字录入处理员二级(技师)历年参考题库含答案详解
- 2026事业单位工勤技能-四川-四川保育员一级(高级技师)历年参考题库含答案详解
- 人工智能汽车自动驾驶
- 2026年北京高职单招(英语)考试真题(含答案)
- 2026师德师风大会主持词
- GB/T 13961-2026灯具用电源导轨系统
- 锅炉安装工程监理实施细则
- 大连市甘井子西侧海岸生态保护和修复工程环境影响报告表
- 2026年山东省统考中考语文真题含答案
- 重庆市医疗预防保健机构护士聘用证明
- 初中语文八年级下册钢铁是怎样炼成的课件
- YY/T 1833.3-2022人工智能医疗器械质量要求和评价第3部分:数据标注通用要求
- GB/T 18487.1-2001电动车辆传导充电系统一般要求
评论
0/150
提交评论