LangChain带你轻松玩转ChatGPT等大模型开发

大家好,我是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. 购买链接

相关推荐
迅易科技30 分钟前
借助腾讯云质检平台的新范式,做工业制造企业质检的“AI慧眼”
人工智能·视觉检测·制造
古希腊掌管学习的神2 小时前
[机器学习]XGBoost(3)——确定树的结构
人工智能·机器学习
ZHOU_WUYI2 小时前
4.metagpt中的软件公司智能体 (ProjectManager 角色)
人工智能·metagpt
靴子学长3 小时前
基于字节大模型的论文翻译(含免费源码)
人工智能·深度学习·nlp
AI_NEW_COME4 小时前
知识库管理系统可扩展性深度测评
人工智能
海棠AI实验室4 小时前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
hunteritself4 小时前
AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
人工智能·gpt·chatgpt·github·openai·copilot
XH华4 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生4 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_4 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯