前言

写作背景

自2022年底ChatGPT发布以来,作为自然语言处理(natural language processing,NLP)一线从业人员,我已经感受到了巨大压力,甚至觉得NLP工程师这个职位以后一定会消亡。在见识了ChatGPT的各种强大能力后,不少NLP一线从业人员很自然地想到,以后开发者只要借助ChatGPT,就可以做到现在大部分NLP工程师在做的事,比如文本分类、实体抽取、文本推理等。甚至随着大语言模型(large language model,LLM)能力的不断提升,它们可能做得比NLP工程师都要好。既然这是迟早要发生的事,干脆我们就再点把火,写一本书,告诉开发者或有一些编程能力的人如何利用大语言模型做一些NLP任务或服务,让变革来得更猛烈些。

于是,你的手中就有了现在这本关于大语言模型的开发指南,它主要面向非算法、有一定编程基础、对人工智能和ChatGPT(或其他类似的大语言模型)感兴趣,并乐意使用大语言模型接口开发相关应用的读者。当然,部分内容不需要任何编程经验也可以学习。我们期望通过本书进一步降低大语言模型的使用门槛,让更多对人工智能和大语言模型感兴趣的非NLP工程师或算法专业人士,能够无障碍地使用大语言模型并创造价值。希望新的技术突破能够更多地改善我们所处的世界。

NLP工程师未来会不会存在?现在犹未可知(就像没有企业有Office工程师一样)。但每个企业,尤其中小企业,若能自由地施展大语言模型的能力来创造人工智能服务或应用,这不正是我这些年的理想吗?我曾在几家小企业待过,深刻理解小企业对人工智能的“情”,那种想用但又无力的矛盾。类似ChatGPT这样的大语言模型让它们异常兴奋。它们非常珍惜人工智能人才,但又不能大量投入。我们就是想要架起这样一座桥梁,让没有任何算法背景的开发者能够尽量无缝、顺滑地对接起算法工作。我们期望授人以渔,把方法传播给更多的人,也算是对这个行业的一点贡献吧。

内容设计

本书内容聚焦于如何使用大语言模型开发新的功能和应用,一共有8章内容,分别如下。

第1章 基础知识——大语言模型背后,主要介绍了与ChatGPT相关的NLP领域的基础知识和原理,具体内容包括自然语言背景、Token与Embedding、语言模型、Transformer、GPT和RLHF等。掌握了这部分知识,就能大概知道ChatGPT或其他大语言模型是怎么回事。

第2章 相似匹配——万物皆可Embedding,主要介绍了文本表示,以及与文本匹配相关的任务和应用。这是NLP领域(以及其他一些算法领域)最常用的技术,具体内容包括相似匹配基础、接口使用,以及简单问答、聚类任务和推荐应用。

第3章 句词分类——句子Token都是类别,主要介绍了NLP领域最常见的任务——分类。这其实也是人类最基本的认知方式(比如用男或女、老或少、勤奋、乐于助人等简单的标签化方式具象化某个个体),具体内容包括句词分类基础、接口使用,以及文档问答、模型微调和智能对话应用。

第4章 文本生成——超越理解更智能,主要介绍了与文本生成技术相关的任务,具体内容包括文本摘要、文本纠错和机器翻译。文本生成技术在实际场景中的使用相对少一些,也相对独立一些。

第5章 复杂推理——更加像人一样思考,主要介绍了如何使用大语言模型做复杂的逻辑推理任务。这部分内容在现实中的应用很少,但在新的产品形态上有很多想象空间。

第6章 工程实践——真实场景大不同,主要介绍了如何在真实业务上使用大语言模型。我们不再仅仅构建一个简单的Demo(demonstration的简写,指示例、样品),而是要将大语言模型真正用在产品开发上。我们会给出一些需要特别注意的事项,以帮助读者更高效地构建应用。

第7章 局限与不足——工具不是万能的,主要介绍了ChatGPT(或其他类似的大语言模型)的缺陷或不擅长的地方,包括事实性错误、实时更新、性能瓶颈等方面。我们在畅想和利用ChatGPT或其他类似的大语言模型做各种人工智能应用时,也应该了解其不擅长的地方:一方面要对其有更加全面的认识;另一方面,反向思维有时候也能想象出好的应用或服务。

第8章 商业应用——LLM是星辰大海,可以把该章当作一篇调研报告来阅读,主要针对工具应用和行业应用两大方面展开,期望能够给读者更多启迪,帮助大家构思更好的应用或服务。

本书有两个基本的设计理念。

各章相对独立,彼此之间没有明显的依赖关系。这既体现在内容上,也体现在设计上。读者可以灵活选取自己感兴趣的章节阅读。

以“任务”为核心。我们始终强调“任务”多于“工具”,ChatGPT是目前大语言模型领域总体效果最好的,但未来一定会有其他大语言模型出现。不过,只要我们理解了要做的事情,理解了系统设计,工具就能为我们所用。

此外,本书还有比较详细的示例代码,大部分的代码稍作修改后可用于生产环境。我们也会着重强调构建实际应用需要注意的细节。写代码容易,写好代码却不容易;做Demo简单,提供一个稳定可靠的服务却不简单。读者在应用时务必仔细斟酌、权衡。

阅读建议

通过上面的介绍,相信读者应该对本书有了初步了解。下面主要从创作者的角度简单说明如何更好地使用本书。

第一,我们期望读者能够亲自动手完成一个应用或服务的Demo。光看不做在编程领域是绝对不行的,实践出真知,脑子想、嘴上说与亲自干完全不一样。而且,万事开头难,做了第一个,后面再做类似的就会相对容易一些。

第二,我们期望读者能在学习过程中多思考,既可以与自己工作的实际业务相结合,也可以天马行空地构想。我们非常期待读者能分享自己的想法,众人拾柴火焰高,个人能想到的太少了,但这么多人一起想,也许能够改变一个行业。

第三,我们期望读者能对NLP领域的常见任务有个基本的认识。我们并非想要读者都成为NLP工程师,阅读本书也不会让你成为NLP工程师。但我们期望读者能够利用ChatGPT(或其他类似的大语言模型)提供的接口来完成NLP任务,并提供相关服务。期望读者在阅读完本书后都具备这样的能力。

第四,洛克菲勒说过:真正重要的不在于有多少知识,而在于如何使用现有的知识。知识只是潜在的力量,只有将其付诸应用,而且是建设性的应用,才会显示出其威力。本书内容围绕着任务展开,很多设计思路和细节其实可以应用到多个领域。我们再次强调,期望读者能够多实践,多应用,尤其是与自己的工作多结合。

第五,由于创作团队精力有限,本书难免有疏漏甚至错误,我们期望读者在学习的同时,也能积极给我们提建议,我们将不胜感激。

ChatGPT火爆背后蕴含着一个基本道理:人工智能能力得到了极大突破——大模型,尤其是大语言模型的能力有目共睹,未来只会变得更强。世界上唯一不变的就是变化。适应变化、拥抱变化、喜欢变化。“天行健,君子以自强不息。”我们相信未来会有越来越多的大模型出现。人工智能正在逐渐平民化,将来每个人都可以利用大语言模型轻松地做出自己的人工智能产品。我们正在经历一个伟大的时代,我们相信这是一个值得每个人全身心拥抱的时代,我们更加相信这个世界必将因此而变得更加美好。

特别致谢

本书内容来源于Datawhale社区的HuggingLLM教程,除本书作者外,社区的薛博阳负责完成第7章的教程内容,社区的广东财经大学黄佩林负责完成第8章的教程内容。本书第7、8章内容基于教程内容修改而成。另外,厦门大学平潭研究院的杨知铮老师补充第1章的“自然语言背景”内容,并给出不少修改建议。在此对三位贡献者表示衷心感谢!

此外,在学习过程中也有不少社区的伙伴对教程提供了修改建议。在此一并感谢!