大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法行业就业。希望和大家一起成长进步。
本文主要介绍了LangChain带你轻松玩转ChatGPT等大模型开发,希望能对学习大模型的同学们有所帮助。
文章目录
- [1. 前言](#1. 前言)
- [2. 书籍推荐](#2. 书籍推荐)
-
- [2.1 内容简介](#2.1 内容简介)
- [2.2 本书作者](#2.2 本书作者)
- [2.3 本书目录](#2.3 本书目录)
- [2.4 适合读者](#2.4 适合读者)
- [3. 购买链接](#3. 购买链接)
1. 前言
此前,据相关媒体报道,微软正在研发一款名为MAI-1的最新AI大模型,其参数规模或将达5000亿以上,远超此前微软推出的相关开源模型,其性能或能与谷歌的Gemini 1.5、Anthropic的Claude 3和OpenAI的GPT-4等知名大模型相匹敌。
2024年,随着ChatGPT的广泛应用,大语言模型已经引起了广泛的关注。无论国内还是国外的科技巨头和研究机构都积极地参与其中。
在国际上,我们看到了OpenAI推出的GPT-4、Meta的Llama 2、Stanford大学的Alpaca、Google的LaMDA和PaLM 2、Anthropic的Claude等。
国内有百度的文心一言、阿里的通义千问、360的360智脑、科大讯飞的星火大模型、商汤的商量、华为的盘古大模型、复旦大学的MOSS和清华大学的ChatGLM 2,等等。
它们既可以成为你的聊天伙伴,陪伴你度过烦闷的时光;也可以成为你的老师,帮助你解答问题,提高你的表达能力;它们还可以充当你的私人助手,协助你撰写文章,总结每日新闻热点等。
大语言模型的崛起正在改变着我们生活的方方面面。
在这一背景下,为了帮助开发者更方便、灵活地构建基于大语言模型的应用,一批大型模型应用开发框架应运而生,LangChain这个大语言模型时代下的"新星"也应运而生,它不仅让AI应用的开发变得易如反掌,更是从单一的开发框架演变为一个包含开发、调试、部署及应用商店的完整生态系统。
在这样一个技术飞速进步的时代,了解并掌握LangChain无疑是每一个AI开发者的必修课。
想要学习LangChain,你必须知道LangChain的7大核心功能:
以及LangChain的周边生态:
2. 书籍推荐
《LangChain技术解密:构建大模型应用的全景指南》 一书便可以带你领略大语言模型的应用开发世界!不仅能帮助你体系化学习LangChain的7大核心功能及其周边生态,而且还能快速掌握构建大模型应用的落地方法。
这是一本大语言模型的入门之作!GitHub上与本书相关的文档已获得6800+ Star,此外,本书提供全书免费配套代码、读者群等,为读者做好全方位学习服务!
《LangChain技术解密》 这本书不仅详尽地介绍了LangChain的使用方法,还深入探讨了其背后的技术原理,帮助读者在实际操作中更加得心应手。
2.1 内容简介
为了让读者更加深入地理解LangChain的强大功能,我们在《LangChain技术解密》中设计了10个章节,每个章节都针对LangChain的不同方面进行了详细的讲解和实践指导。
-
第1章 概述了大语言模型的发展背景,并全面解读了LangChain的基本概念、使用理由、应用场景等。这一章作为入门篇,帮助读者建立对LangChain整体框架的初步了解。
-
第2章 详细介绍了开始LangChain开发前需要做的准备工作,如安装LangChain框架、获取OpenAI API密钥、搭建开发环境等,确保读者能够顺利启动自己的项目。
-
第3章 深入讲解了模型的输入与输出(Model I/O)中的Model部分,包括LangChain Model的使用方法和最常用的OpenAI API及其参数设置,使读者在实际操作中能够更加精准地控制模型行为。
-
第4章 继续探讨Model I/O中的输入输出部分,不仅介绍了LangChain的Prompt Template(提示词模板),还详述了如何优化Prompt(提示)使其更加有效,同时也对输出解析器的应用进行了阐释。
-
第5至7章 重点介绍了检索增强生成(RAG)技术,从加载器、分割器、向量存储到检索器等关键组件的用法,到链与记忆的高阶操作技巧,全面展示了RAG技术在LangChain中的应用。
-
第8章 深入解析了代理(Agent)技术的原理和应用,同时对LangGraph多智能体框架进行了详细介绍,帮助读者理解如何构建更复杂的AI代理互动。
-
第9章 探讨了LangChain的其他组件及其周边生态,如回调组件、隐私与安全、评估和追踪调试平台LangSmith,以及部署框架LangServe和应用模板商店LangChain Template等,提供了全面的资源介绍和工具支持。
-
第10章 通过两个完整的AI应用开发项目,指导读者从零开始构建并部署应用,同时介绍了LangChain的零代码AI应用构建平台Flowise,让读者可以将所学知识应用于打造专属的应用。
通过这10章的内容,读者不仅能够学习到LangChain的操作方法和技术细节,还能通过实际案例深入理解其应用潜力,为自己在AI领域的探索和发展打下坚实的基础。
无论你是AI领域的新手,还是希望通过大型语言模型技术为业务赋能的产品经理,或是计算机专业的学生和AI爱好者,《LangChain技术解密》都将是你不可多得的学习资源。期待我们一起在AI的新高地上探索未知、创造可能!
2.2 本书作者
- 王浩帆,从事影视及游戏相关流程开发十余年,长期关注并探索大语言模型及其他人工智能技术在影视及游戏行业的应用落地。作为开源技术爱好者和LangChain Contributer,不仅积极为LangChain等开源项目贡献力量,也致力于开发个人的开源项目。
2.3 本书目录
python
第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
2.4 适合读者
本书适合刚入门或想加入AI行业的技术从业者、需要结合大型语言模型相关技术为业务赋能的产品经理、计算机相关专业的学生,以及AI爱好者和自学者。
3. 购买链接
- LangChain技术解密:构建大模型应用的全景指南,限时五折优惠。