在人工智能的前沿领域,LangChain作为一个创新的开源框架,正定义着大型语言模型 (large language model,LLM) 应用的未来。随着技术的快速发展,开发者面临着如何高效构建、部署及优化基于LLM 的应用程序的挑战。为了帮助开发者应对这些挑战,本书将深入探讨LangChain, 从快速入门到高级应用,全面覆盖LangChain的核心概念和实际操作。
LangChain不仅仅是一个开源框架,也是一扇通往创新世界的大门,为渴望在人工智能 领域探索的开发者提供了必要的工具和指南。通过提供一系列的核心库、社区集成、伙伴包和开发工具,LangChain旨在简化LLM 应用程序和智能体开发的整个生命周期,让开发者能够更加专注于创造独特应用,而不是被底层技术的复杂性所困扰。
本书致力于成为LangChain的终极指南,旨在指导初学者和经验丰富的开发者利用这个强大的框架构建他们自己的AI应用。无论你打算开发智能聊天机器人、动态的问答系统,还是能够生成创新内容的应用程序,本书都将提供清晰、实用的指导,帮助你从概念到实现,再到部署,每一步都得心应手。
本书以直观、实用为导向,结构清晰地展现了如何利用LangChain 开发高效、强大的AI应用。从最基本的Chain结构、提示、模型、输出解析器的构建,到接入国内外最强大的模型如ChatGLM4和GPT4等,再到探索利用开源大模型的类OpenAI 服务器,本书对知识点的介绍立足实际应用,确保读者可以轻松上手,快速进步。
进一步,本书深入探讨了LangChain的提示词工程,详细解析了提示词模块的应用和优化技巧,如长度选择器、相似度选择器和重叠选择器的使用,以及通过ChromaDB向量数据库提高问题解答的准确率。此外,本书还探讨了利用LangChain 解析大模型输出,包括CSV 、JSON 和 XML 等格式,为读者揭开了大模型输出解析的神秘面纱。
本书还对 LangChain 数据检索增强 (RAG)系统进行了全面解读,从数据检索增强的 基础,到知识库的处理解析和高效检索技术,无不体现了LangChain 在实现复杂信息处理 方面的强大能力。同时,本书还细致讨论了智能体 (agent) 的开发,包括智能体的搭建、 记忆能力的增加,以及通过LangChain搭建适应不同大模型的智能体,为读者呈现了AI 智 能体开发的全貌。
最后,本书将带领读者探索 LangChain 在实际应用中的无限可能,从具有知识库的上下文感知AI 销售助手,到LangGraph 多智能体协作框架的构建,每一个案例都精心设计, 旨在通过实际操作展现LangChain 的实战价值和应用潜力。无论你是AI 领域的初学者,还是寻求深入理解 LangChain 的高级开发者,本书都将是不可多得的指南。通过本书,你不仅能够掌握 LangChain 的核心技术和应用策略,还能激发创新思维,开启AI 开发之旅。
欢迎阅读本书,让我们一同探索 LangChain 的奇妙世界,解锁人工智能应用开发的无限可能。
第 1 章 快速认识 LangChain 1
1.1 LangChain概 述 2
1.1.1 认识 LangChain 2
1.1.2 LangChain的用途 3
1.1.3 LangChain生态与开源项目概览 4
1.2 安装Python环境 5
1.2.1 下载 Anaconda 5
1.2.2 安装 Anaconda 7
1.3 使用Jupyter Notebook 学习LangChain 8
1.3.1 安装 JupyterNotebook 8
1.3.2 启动JupyterNotebook 9
1.3.3 创建新的 Notebook 10
1.3.4 使用JupyterNotebook 学习LangChain 10
1.3.5 Jupyter Notebook 快捷键 11
1.3.6 使用快捷键的好处 13
1.4 安装和配置 LangChain环境 13
1.5 第一个LangChain应用示例 15
第 2 章 接入大模型 21
2.1 在LangChain中使用免费的文心大模型 API 22
2.1.1 文心大模型简介 22
2.1.2 基础使用 22
2.1.3 链式调用 25
2.1.4 流式生成 25
2.1.5 批量生成 26
2.2 使用 DeepSeek API进行 LangChain 开发 26
2.2.1 DeepSeek -V2概述 27
2.2.2 获取 API 密 钥 27
2.2.3 配置环境 27
2.2.4 集成 DeepSeek API 28
2.3 在LangChain 中使用 ChatGLM-4 API 30
2.3.1 GLM-4模型简介 30
2.3.2 在LangChain中集成 ChatGLM-4 30
2.4 LangChain 调用本地开源大模型ChatGLM3 32
2.4.1 ChatGLM3-6B 模型简介 32
2.4.2 安装和准备工作 33
2.4.3 实现基本对话 34
2.4.4 LangChain 调用本地开源大模型 ChatGLM3 34
2.5 接入部署的开源大模型的类OpenAI 服务器 37
2.5.1 为什么要实现 OpenAI 类似的响应 38
2.5.2 常见本地部署提供兼容的 OpenAIAPI 应用 38
2.6 LM Studio 搭 建OpenAI API 服务器 41
2.6.1 安装 LM Studio 41
2.6.2 下载和加载模型 43
2.6.3 配置和运行本地服务器 48
2.6.4 链式调用 49
第3章 LangChain提示词工程 51
3.1 利用提示词工程构建 LangChain AI应 用 52
3.1.1 基础策略 52
3.1.2 高级技巧 52
3.1.3 实际案例分析 53
3.2 LangChain 提示词模块 54
3.2.1 PromptTemplate 的使用 54
3.2.2 ChatPromptTemplate 的使用 56
3.3 少样本提示示例 57
3.3.1 理解少样本提示 58
3.3.2 LangChain 中的少样本提示应用 58
3.3.3 编写少样本提示 58
第 4 章 高级提示词技术 65
4.1 巧用提示词的案例选择器 66
4.1.1 根据长度优化示例选择器 66
4.1.2 使用最大余弦相似度嵌入示例 69
4.1.3 使用 MMR 选择示例 71
4.1.4 构建和格式化提示 72
4.1.5 调用和解析结果 74
4.2 消息对话提示词实现少样本学习 74
4.3 向量存储实现消息对话的示例选择 77
4.3.1 引入必要的库 77
4.3.2 加载模型 77
4.3.3 创建示例集合 78
4.3.4 利 用Chroma 向量存储和语义相似度选择示例 78
4.3.5 选择语义相似的示例 79
4.3.6 应用示例格式化对话 80
4.4 管理历史消息 82
4.4.1 MessagesPlaceholder 组 件 82
4.4.2 如何使用MessagesPlaceholder 82
4.4.3 实际使用场景 83
4.5 预设部分提示词变量 84
4.6 动态预设提示词变量 87
4.7 管道提示词 90
第5章 LangChain 输出解析 94
5.1 CSV 格式解析器 95
5.1.1 理解 CommaSeparatedListOutputParser 95
5.1.2 配置输出解析器 95
5.1.3 创建 Prompt 模板 96
5.1.4 应用解析器 97
5.1.5 示例应用:列出冰淇淋口味 97
5.2 日期时间格式解析器 98
5.3 枚举解析器 100
5.3.1 引入枚举类型 100
5.3.2 枚举解析器的配置与使用 101
5.3.3 构建 LangChain 调用链 101
5.3.4 执行与输出 102
5.4 XML 格式解析器 102
5.5 自定义大模型输出解析器 104
5.5.1 使用RunnableLambda 或 RunnableGenerator 105
5.5.2 将关键词替换为表情符号 105
第 6 章 检索增强生成 107
6.1 详解 RAG 108
6.1.1 认识RAG 108
6.1.2 RAG 的技术原理 109
6.1.3 RAG 的应用 110
6.1.4 RAG 的挑战与未来发展 111
6.2 RAG 应用案例 113
6.2.1 创建向量数据库 113
6.2.2 使用检索器检索相关文档 114
6.2.3 结 合LangChain 进行问答 114
6.3 知识库文档的多种加载方式 115
6.3.1 加载单个文本文档 116
6.3.2 加载整个目录的文档 116
6.3.3 加载 HTML 格式的文档 117
6.4 处 理PDF 格式的知识库文档 118
6.5 分割长文本 120
6.5.1 加载文档 120
6.5.2 创建文本分割器 121
6.5.3 分割文档 122
6.6 分割不同语言的代码 123
6.6.1 必要模块引入和语言支持 123
6.6.2 分割器配置与使用 125
6.6.3 处理其他语言 126
6.7 Markdown 文本分割 126
6.7.1 MarkdownHeaderTextSplitter 概述与基本使用 127
6.7.2 分割选项 128
第7章 高级 RAG 应用 129
7.1 最大边际相关性检索 130
7.1.1 基本概念 130
7.1.2 文档库设置与向量存储构建 130
7.1.3 MMR 检索集成与回答生成 131
7.2 实现相似性分数阈值检索 132
7.2.1 相似性分数阈值检索的概念及基本设置 133
7.2.2 相似性分数阈值检索与MMR 检索的比较 133
7.3 自查询检索器的使用 134
7.3.1 工作原理和代码配置 134
7.3.2 文档和向量存储配置 135
7.3.3 自查询检索器配置与操作示例 136
第8章 AI应用流程控制 139
8.1 并行处理任务 140
8.2 管道中添加自定义函数 142
8.3 LangChain 动态路由逻辑 144
8.4 运行时配置链的内部结构 148
8.4.1 两种方法的使用 148
8.4.2 实际应用示例 149
8.5 使用@chain 装饰器 150
8.6 自定义流式生成器函数 152
8.7 异步的自定义流式生成器函数 154
第9章 智能体开发 156
9.1 什么是智能体 157
9.1.1 智能体的核心功能 157
9.1.2 智能体的应用 157
9.1.3 开发智能体的挑战 158
9.2 智能体开发的关键组件 158
9.3 案例分析:智能体自动处理 GitHub 问题 160
9.4 @tool 快速定义智能体工具 161
9.4.1 理 解 @tool 装饰器 161
9.4.2 示例:定义天气查询工具 162
9.4.3 使用场景和最佳实践 164
9.5 定义智能搜索工具 164
9.6 快速搭建第一个智能体 168
9.7 提示词引导智能体使用工具 170
9.8 格式化中间步骤构建智能体 174
9.8.1 中间步骤格式化和输出解析 174
9.8.2 构建智能体执行流程 178
9.8.3 执行智能体 179
9.9 为智能体添加历史聊天记录 181
第 1 0 章 智能体强化 184
10.1 获取并处理学术论文 185
10.2 AI调用 Shell 命令控制电脑 187
10.3 AI自动生成与执行代码 189
10.3.1 利 用LangChain 构建自动化代码生成流程 189
10.3.2 示例:自动解决数学问题 191
第 1 1 章 LangGraph 多智能体 192
11.1 LangGraph 的核心概念 193
11.2 搭建 LangGraph 应用 194
11.2.1 定义节点和边 194
11.2.2 创建和配置图 196
11.2.3 展示图结构 198
11.2.4 执行图 198
11.2.5 图的动态行为和状态管理 199
11.3 LangGraph 灵活自定义智能体 199
11.3.1 定义大语言模型 200
11.3.2 定义智能体提示词 200
11.3.3 定义工具 201
11.3.4 定义状态 203
11.3.5 定义是否使用工具条件 203
11.3.6 定义图 204
11.3.7 使用智能体 207
11.4 多智能体模拟圆桌派综艺节目 208
11.4.1 智能体配置 209
11.4.2 信息流与处理逻辑 209
11.4.3 构建数据流图 214
第12章 人工智能销售助手 218
12.1 概述与核心概念 218
12.2 SalesGPT 智能体的架构 219
12.2.1 销售代理的运行机制 219
12.2.2 销售阶段识别代理 220
12.2.3 系统整合与数据流 220
12.3 定义销售对话阶段分析链 221
12.3.1 理 解LangChain 链的基础 221
12.3.2 设计 StageAnalyzerChain 221
12.3.3 实现 StageAnalyzerChain 222
12.4 LangChain 实现历史对话生成销售话语的类 224
12.4.1 设计 SalesConversationChain类 224
12.4.2 实施 SalesConversationChain 225
12.5 构建和利用产品知识库 228
12.5.1 设计产品知识库 229
12.5.2 实施和部署产品知识库 230
12.5.3 利用产品知识库进行销售支持 232
12.5.4 维护和优化知识库 232
12.6 定义知识库工具的模板和解析器 233
12.6.1 自定义提示模板 233
12.6.2 定义销售智能体输出解析器 234
12.7 定义LangChain 销售智能体类 236
12.7.1 SalesGPT 类概述 236
12.7.2 动态工具使用 237
12.7.3 实现复杂对话管理 238
12.7.4 完整代码示例 238
12.8 配置和运行销售智能体 247
12.8.1 设置代理配置 248
12.8.2 初始化和运行智能体 248