LangChain技术解密:构建大模型应用的全景指南
  • 推荐0
  • 收藏0
  • 浏览73

LangChain技术解密:构建大模型应用的全景指南

  • 书  号:9787121477379
  • 出版日期:2024-05-01
  • 页  数:
  • 开  本:
  • 出版状态:上市销售
  • 维护人:博文小编
《LangChain技术解密:构建大模型应用的全景指南》共10章,分别介绍了LangChain的开发环境搭建、模型、提示、数据连接、链、记忆、代理、回调及周边生态等内容,并用三个案例,即基于Streamlit实现聊天机器人、基于Chainlit实现PDF问答机器人、零代码AI应用构建平台Flowise,将前面大语言模型的内容学以致用。通过本书,读者既能提升自身的技术素养,又能拓展自己解决实际难题的能力。
《LangChain技术解密:构建大模型应用的全景指南》适合刚入门或想加入AI行业的技术从业者、需要结合大语言模型相关技术为业务赋能的产品经理、计算机相关专业的学生,以及AI爱好者和自学者。
王浩帆,从事影视及游戏相关流程开发十余年,长期关注并探索大语言模型及其他人工智能技术在影视及游戏行业的应用落地。作为开源技术爱好者和LangChain Contributer,不仅积极为LangChain等开源项目贡献力量,也致力于开发个人的开源项目。
2024年,人工智能走向大众化的序幕已经拉开。无论是声势浩大的大语言模型,还是AI绘图领域的佼佼者,如Stable Diffusion与Midjourney,皆已成为潮流之巅的焦点。其中,大语言模型尤为瞩目,其作为一颗闪耀着智慧之光的“大脑”,已广泛融入人们生活的各个场景。在这一背景下,LangChain应运而生,这一建立在大语言模型之上的框架,让快速开发AI应用成为可能,其影响力也正逐步扩大。LangChain不仅为开发人员提供了大量的现成工具,同时受益于其广泛的用户群体,很多尖端、具有实验性质的工具也相继被纳入其中。这使得开发人员不仅能够运用那些已极为成熟的资源去构建应用,同时能够借助那些集成的工具,迅速洞悉并尝试大语言模型的最新技术。
目前,LangChain已成为进行大语言模型应用开发必须掌握的框架之一。随着时间的推移,LangChain已不再仅仅是一个大语言模型开发框架,而是演化为一个包含开发、调试、部署乃至应用商店的一站式完整生态圈。
与此同时,LangChain社区的快速壮大,正是其日益蓬勃发展的最佳见证。正值大语言模型开发以潮涌之势席卷而来之际,越来越多的开发人员对于怎样利用LangChain迅速构建AI应用产生了浓厚的兴趣。
在这样的背景下,本书应运而生。本书不只为求知者呈上LangChain的详尽开发指南,更是以其中的诸多知识为轴心,向外扩散,深度阐述其背后的原理之美,甚至于途中不吝对基础知识进行浅释,使读者在领会“其然”的同时,也能参透“其所以然”。
本书结构
本书以五大核心要旨,即模型的输入与输出(Model I/O)、检索增强生成(RAG)技术、代理(Agent)技术、其他知识及完整案例实践为主线,精心编排为10章,详细展开阐释:
第1章介绍了当前大语言模型的发展,并且从是什么、为什么使用、为何使用、应用场景四个维度对LangChain进行了全面解读。
第2章细述了进行LangChain开发前的各项准备工作,包括安装LangChain库、获取OpenAI API Key、搭建开发环境等,旨在帮助开发者扫清这部分的障碍。
第3章对Model I/O的Model(模型)部分进行了讲解。不仅讲解了LangChain Model的使用,还对最常用的OpenAI相关的API及参数进行了深入讲解。
第4章主要讲解了Model I/O的I/O部分。在输入部分,不仅讲解了LangChain的提示词模板,还对提示词工程进行了讲解,使读者可以借助LangChain写出更优秀的提示词。在输出部分,对大量的输出解析器进行了讲解及应用。
第5~7章:这部分重点阐释了检索增强生成(RAG)技术的原理与应用,内容涵盖了加载器、转换器、向量存储、检索器、链及记忆等关键组件的用法和高阶操作技巧。
第8章主要对代理(Agent)技术的原理和应用进行了深入讲解,也对LangGraph多智能体框架进行了介绍。
第9章对LangChain其他组件及周边生态进行了讲解,如回调、安全与隐私、评估、追踪调试平台LangSmith、部署框架LangServe、应用模板商店LangChain Templates等。
第10章旨在指导读者从零开始逐步构建并部署应用,完成两个完整的人工智能应用开发项目,以及学习LangChian的零代码AI应用构建平台Flowise。读者不仅可以通过此过程巩固学习成果,而且可以将所学知识用于打造专属的应用。
本书面向的读者
本书深入浅出地讲解了丰富的前置知识和基本理论,因为LangChain在本质上是一个便于AI应用开发的框架,所以本书以应用开发实践为主,未涉及大语言模型的底层原理和相关晦涩的数学公式。
本书适合刚入门或想加入AI行业的技术从业者、需要结合大型语言模型相关技术为业务赋能的产品经理、计算机相关专业的学生,以及AI爱好者和自学者。
本书特色
(1)内容全面更新,融入了新版本特性和新动态。本书深入探讨了LangChain的全新表达式语言、LangGraph、LangSmith、LangServe及LangChain Templates,并精研了一系列全新的API,例如Assistant Agent Type。
(2)系统讲解,细节丰富。本书将相关的前置知识嵌入相应的章节中,确保读者能够按部就班地掌握从理论到实践的知识。
(3)本书的结构设计让内容自然衔接,避免了在章节之间跳来跳去的阅读方式,不需要在搜索引擎中寻找相关概念。我们追求的不只是对官方文档的讲解,更是对整个LangChain运行逻辑的深入讲解,以及对LangChain先进思想的学习。
(4)涵盖LangChain的深度内容。除了基础知识,本书还深入介绍了LangChain的隐私与安全、评估等高级主题,这些内容在市面上的其他资料中几乎未被触及。
(5)提供了丰富的实例代码和结果截图。本书中的所有代码都经过严格测试,尽可能确保正常运行,这一点与LangChain文档中仅提供部分代码的做法形成鲜明对比,大大减少了读者在实践本书中的代码时的调试工作。
(6)书中每个章节的代码均在GitHub中提供,读者可以很方便地独立运行对应的代码片段来学习。
代码与参考资料
本书示例代码位于GiTHub的langchain-course页面,请在GitHub中搜索langchain-course,在搜索的结果页面左侧选择Users,即可看到本书相关的代码仓库组织。读者可以从此处获取示例代码及运行代码的相关说明。也可以扫描封底二维码获取本书配套代码资源和相关链接。
第1章的部分内容参考了《LangChain系列-01是什么》和《大语言模型的演进》两篇文章。第5章的部分内容参考了How do domain-specific chatbots work? An Overview of Retrieval Augmented Generation(RAG)一文。感谢这些资料为笔者撰写本书提供的思路和启发。
勘误和支持
若您在阅读本书的过程中有任何问题或建议,可以通过本书源码仓库提交Issue或者PR,也可以通过仓库中提供的微信二维码加入微信群与作者进行交流。我们十分感谢并重视您的反馈,会对您提出的问题、建议进行梳理与反馈,并在本书后续版本中及时做出勘误与更新。

目录

第1章 大语言模型及LangChain介绍 1
1.1 大语言模型介绍 1
1.1.1 大语言模型总览 1
1.1.2 大语言模型的发展历史 2
1.1.3 大语言模型的优势 5
1.1.4 大语言模型的发展趋势 5
1.1.5 总结 6
1.2 LangChain介绍 7
1.2.1 LangChain是什么 7
1.2.2 为什么使用LangChain 7
1.2.3 LangChain的应用场景 10
1.2.4 如何使用LangChain 11

第2章 LangChain开发前的准备 14
2.1 创建OpenAI API Key 14
2.2 使用云端Colab进行交互式编程 17
2.2.1 什么是Colab 17
2.2.2 如何使用Colab 17
2.3 使用本地Anaconda + JupyterLab进行交互式编程 19
2.3.1 什么是Anaconda 19
2.3.2 安装与使用Anaconda 20
2.4 安装LangChain库 24

第3章 Model(模型) 27
3.1 Model简介 27
3.2 LLM类模型 28
3.2.1 简介 28
3.2.2 代码讲解 29
3.3 Chat类模型 31
3.3.1 简介 31
3.3.2 代码讲解 32
3.4 OpenAI与ChatOpenAI的区别 35
3.5 OpenAI API 36
3.5.1 什么是Token 36
3.5.2 文本补全API:Completion 38
3.5.3 对话补全API:Chat Completion 40
3.5.4 常用参数讲解 41
3.5.5 函数调用 45
3.6 自定义LangChain模型类 48
3.6.1 自定义大语言模型 48
3.6.2 自定义聊天模型 51
3.7 缓存 54
3.7.1 标准缓存 54
3.7.2 流式输出 59
3.7.3 语义化缓存 59
3.7.4 GPTCache 61
3.8 其他 68
3.8.1 异步调用大语言模型 68
3.8.2 模型配置序列化 69
3.8.3 使用Hugging Face 71

第4章 大语言模型及Prompt(提示) 74
4.1 Prompt工程 74
4.1.1 组成Prompt的要素 74
4.1.2 Prompt的书写技巧 75
4.1.3 Prompt的生命周期 81
4.2 提示词模板 82
4.2.1 PromptTemplate 83
4.2.2 PartialPromptTemplate 84
4.2.3 PipelinePromptTemplate 86
4.2.4 FewShotPromptTemplate 88
4.2.5 自定义提示词模板 89
4.2.6 提示词模板的序列化和反序列化 90
4.2.7 ChatPromptTemplate 92
4.2.8 MessagesPlaceholder 94
4.2.9 FewShotChatMessagePromptTemplate 95
4.3 示例选择器 96
4.3.1 LengthBasedExampleSelector 96
4.3.2 SemanticSimilarityExampleSelector 98
4.3.3 MaxMarginalRelevanceExampleSelector 100
4.3.4 NGramOverlapExampleSelector 101
4.3.5 自定义示例选择器 103
4.4 输出解析器 105
4.4.1 CommaSeparatedListOutputParser 105
4.4.2 DatetimeOutputParser 106
4.4.3 EnumOutputParser 107
4.4.4 XMLOutputParser 109
4.4.5 StructuredOutputParser 110
4.4.6 PydanticOutputParser 112
4.4.7 OutputFixingParser 115
4.4.8 RetryWithErrorOutputParser 116
4.4.9 自定义输出解析器 117

第5章 Data Connection(数据连接) 120
5.1 检索增强生成 120
5.1.1 什么是检索增强生成 120
5.1.2 检索增强生成的工作流程 120
5.1.3 什么是Embedding(嵌入) 122
5.1.4 重要的文本预处理 123
5.2 Document Loader(文档加载器) 124
5.2.1 CSV加载器 124
5.2.2 文件目录加载器 124
5.2.3 HTML加载器 125
5.2.4 JSON加载器 126
5.2.5 Markdown加载器 127
5.2.6 URL加载器 127
5.2.7 PDF加载器 129
5.2.8 自定义加载器 132
5.3 Document Transformer(文档转换器) 133
5.3.1 文本分割 134
5.3.2 文本元数据提取 141
5.3.3 文本翻译 143
5.3.4 生成文本问答 144
5.4 Embedding与Vector Store(嵌入与向量数据库) 146
5.4.1 Embedding 146
5.4.2 本地向量存储 148
5.4.3 云端向量存储 151
5.5 Retriever(检索器) 155
5.5.1 基础检索器 155
5.5.2 多重提问检索器 156
5.5.3 上下文压缩检索器 161
5.5.4 集成检索器 167
5.5.5 父文档检索器 168
5.5.6 多向量检索器 170
5.5.7 自查询检索器 176
5.5.8 检索内容重排 179

第6章 Chain(链) 182
6.1 Chain简介 182
6.2 LLM Chain(LLM链) 183
6.3 Sequential Chain(顺序链) 187
6.3.1 SimpleSequentialChain 187
6.3.2 SequentialChain 189
6.4 Router Chain(路由链) 190
6.5 Transform Chain(转换链) 193
6.6 Sumarize Chain(总结链) 195
6.7 API Chain与LLMRequestsChain 197
6.7.1 API Chain 197
6.7.2 LLMRequestsChain 198
6.8 SQL Chain(数据库链) 198
6.8.1 SQLDatabaseChain 199
6.8.2 SQL Agent 201
6.9 QA Chain(问答链) 202
6.9.1 ConversationChain 202
6.9.2 RetrievalQA 202
6.9.3 ConversationalRetrievalChain 203
6.10 LangChain Expression Language(LCEL) 204
6.10.1 管道操作符 204
6.10.2 在链中设置参数 205
6.10.3 配置 206
6.10.4 设置备用方案 207
6.10.5 获取输入并运行自定义函数 208
6.10.6 路由链 210

第7章 Memory(记忆) 213
7.1 Memory简介 213
7.2 将历史对话直接保存成Memory 214
7.2.1 ConversationBufferMemory 214
7.2.2 ConversationBufferWindowMemory 216
7.2.3 ConversationTokenBufferMemory 217
7.3 将历史对话总结后保存成Memory 219
7.3.1 ConversationSummaryMemory 219
7.3.2 ConversationSummaryBufferMemory 221
7.4 通过向量数据库将历史数据保存成Memory 223
7.5 多Memory组合 225
7.6 实体记忆及实体关系记忆 227
7.6.1 通过记录实体进行记忆 227
7.6.2 通过知识图谱进行记忆 229
7.7 在使用LCEL的链中添加内存组件 231
7.8 自定义Memory组件 232

第8章 Agent(代理) 234
8.1 简介 234
8.2 ReAct和Plan and Execute(计划与执行) 235
8.2.1 ReAct 235
8.2.2 Plan and Execute(计划与执行) 236
8.3 Agent初探 237
8.4 Agent类型 239
8.4.1 Chat ReAct 239
8.4.2 ReAct Document Store 241
8.4.3 Conversational 242
8.4.4 OpenAI Function 244
8.4.5 Self-Ask With Search 246
8.4.6 Structured Tool Chat 247
8.4.7 OpenAI Assistant 250
8.5 自定义Tool 252
8.5.1 使用Tool对象 252
8.5.2 继承BaseTool 254
8.5.3 使用Tool装饰器 255
8.5.4 Structured Tool 255
8.5.5 异常处理 257
8.6 人工校验及输入 259
8.6.1 默认人工校验 259
8.6.2 自定义用户审批 260
8.6.3 人工输入 261
8.7 Agent实际应用 263
8.7.1 结合向量存储使用Agent 263
8.7.2 Fake Agent(虚构代理) 264
8.7.3 自定义Agent 265
8.7.4 自定义LLM Agent 267
8.7.5 自定义MRKL Agent 272
8.7.6 自定义具有工具检索功能的Agent 276
8.7.7 Auto-GPT Agent 281
8.8 LangGraph 283
8.8.1 简介 283
8.8.2 示例 286

第9章 LangChain的其他功能 292
9.1 回调 292
9.1.1 简介 292
9.1.2 自定义回调处理 296
9.1.3 将日志记录到文件中 297
9.1.4 Token使用量跟踪 299
9.1.5 LLMonitor 300
9.2 隐私与安全 303
9.2.1 隐私 303
9.2.2 安全 307
9.3 Evaluation(评估) 309
9.3.1 简介 309
9.3.2 字符串评估器 311
9.3.3 比较评估器 316
9.3.4 轨迹评估器 320
9.4 LangSmith 323
9.4.1 简介 323
9.4.2 收集与追踪 324
9.4.3 评估 327
9.4.4 LangSmith Hub 334
9.5 LangServe 337
9.5.1 简介 337
9.5.2 构建 338
9.5.3 调用 341
9.5.4 LangChain Templates 342
9.6 LangChain v0.1 345
9.7 总结 346

第10章 案例开发与实战 347
10.1 基于Streamlit实现聊天机器人 347
10.1.1 简介 347
10.1.2 实现 348
10.1.3 部署 352
10.2 基于Chainlit实现PDF问答机器人 354
10.2.1 简介 354
10.2.2 实现 354
10.3 零代码AI应用构建平台:Flowise 359
10.3.1 简介 359
10.3.2 运行 359
10.3.3 使用 360

读者评论