文章目录
- LangChain的核心功能
- LangChain的典型使用场景
- LangChain的未来展望
- 《LangChain大模型AI应用开发实践》
- 编辑推荐
- 内容简介
- 作者简介
- 目录
在人工智能领域,大型语言模型(LLMs)的应用开发正逐渐成为技术前沿的热门话题。随着技术的不断进步,开发者们正面临如何高效、便捷地构建基于LLMs的应用程序这一挑战。LangChain框架应运而生,以其模块化的设计和丰富的功能,成为众多开发者在构建大模型应用时的得力助手。本文将通过代码实例展示LangChain在AI应用开发中的实际应用。
LangChain的核心功能
LangChain是一个专门为构建大型语言模型应用程序设计的框架,其核心功能包括Model I/O、Retrieval、Memory、Chains和Agents等。这些功能极大地简化了开发流程,提高了开发效率,使得开发者能够更专注于业务逻辑的实现。
-
Model I/O:
LangChain允许开发者直接与模型进行交互,无需关心输入输出的细节。以下是一个简单的示例,展示如何使用LangChain与模型进行交互:from langchain.models import OpenAI from langchain.prompts import PromptTemplate # 初始化模型 model = OpenAI(temperature=0.7) # 定义提示模板 prompt_template = PromptTemplate( input_variables=["query"], template="请回答以下问题:{query}", ) # 生成回答 response = model.generate( prompt_template.format(query="什么是人工智能?"), max_tokens=150, stop=None, ) print(response)
-
Retrieval:
LangChain的Retrieval能力允许开发者从模型中检索所需信息。以下是一个示例,展示如何使用LangChain的Retrieval功能:from langchain.retrieval import VectorStoreRetriever # 初始化向量存储检索器 retriever = VectorStoreRetriever.from_documents( documents=[ "人工智能是计算机科学的一个分支。", "机器学习是人工智能的一个子领域。", "深度学习是机器学习的一种方法。", ], vector_store_path="path_to_vector_store", ) # 检索与查询最相关的文档 query = "什么是深度学习?" results = retriever.retrieve(query) for result in results: print(result.document)
-
Memory:
LangChain的Memory能力允许开发者利用模型的记忆能力来存储和更新上下文。以下是一个示例,展示如何使用LangChain的Memory功能:from langchain.memory import Memory # 初始化内存 memory = Memory() # 存储上下文 memory.add("用户:你好!", "AI:你好!有什么我可以帮助你的吗?") # 获取上下文 response = memory.get("用户:你好!") print(response) # 输出:AI:你好!有什么我可以帮助你的吗?
-
Chains:
Chains是LangChain中的一个关键组件,它允许开发者将多个处理步骤组织起来,形成一个完整的流程。以下是一个示例,展示如何使用LangChain的Chains功能:from langchain.chains import Chain # 定义链的步骤 steps = [ { "function": "retriever.retrieve", "inputs": {"query": "query_variable"}, }, { "function": "model.generate", "inputs": { "prompt": "根据检索结果回答以下问题:{retrieved_result}", "retrieved_result": {"$ref": "previous.results[0].document"}, }, }, ] # 初始化链 chain = Chain.from_json(steps) # 执行链 result = chain.run(query_variable="什么是机器学习?") print(result)
-
Agents:
Agents是LangChain中推动决策制定的实体,它们可以访问一套工具,并可以根据用户输入决定调用哪个工具或组件来生成响应。以下是一个示例,展示如何使用LangChain的Agents功能:from langchain.agents import Agent # 定义代理的工具集 tools = { "retriever": retriever, "model": model, } # 初始化代理 agent = Agent(tools=tools) # 与代理进行交互 conversation = agent.chat( inputs=["什么是人工智能?", "它与机器学习有什么关系?"] ) for message in conversation: print(message)
LangChain的典型使用场景
LangChain的灵活性和强大的集成功能使其在多个领域都有广泛的应用场景。以下是一些典型的使用案例:
-
问答系统:利用LangChain的Retrieval和Memory能力,可以构建能够准确回答用户问题的问答系统。
-
聊天机器人:通过Model I/O和ChatMessageHistory能力,可以创建能够与用户进行自然对话的聊天机器人。
-
智能代理:结合Agents和Components能力,可以开发可以自适应决策并执行任务的智能代理。
-
企业知识库应用:利用LangChain的Retrieval和Memory能力,可以构建企业知识库应用,帮助企业实现知识的有效管理和利用。
-
AI翻译助手:结合语言模型和翻译技术,LangChain可以构建更准确、流畅的翻译服务。
LangChain的未来展望
随着AI技术的不断发展和完善,LangChain有望在更多领域和场景中发挥重要作用。未来的研究将重点关注如何优化系统性能、提升用户隐私保护,以及如何简化多智能体系统的开发和维护。同时,与大模型的深度集成、多模态交互、性能优化、模型压缩与量化等也将是LangChain发展的重要方向。
总的来说,LangChain作为一个强大的框架,为开发者提供了利用大型语言模型构建端到端应用程序的便捷途径。通过其Model I/O、Retrieval、Memory、Chains和Agents等核心能力,以及丰富的核心概念和使用案例,开发者可以更加高效地构建和部署AI大模型应用。未来,随着技术的不断进步,LangChain有望在更多领域发挥重要作用,为行业创新提供强有力的支持。
《LangChain大模型AI应用开发实践》
获取方式:https://item.jd.com/14848506.html
编辑推荐
《LangChain大模型AI应用开发实践》是一本为AI领域的中级和高级技术人员量身打造的专业指南。本书以实战案例为脉络,深入剖析了LangChain框架的核心原理与应用策略,从基础到高级,逐步引导读者构建高效的AI应用。它不仅涵盖了Chain结构的构建、大模型的优化接入,还深入探讨了智能体开发和上下文感知能力的设计,为读者提供了一套完整的AI开发工具箱。无论你是数据科学家还是机器学习工程师,本书都将是你解锁人工智能新维度、提升技术实践能力的不二之选。
内容简介
《LangChain大模型AI应用开发实践》是一本深度探索LangChain框架及其在构建高效AI应用中所扮演角色的权威教程。本书以实战为导向,系统介绍了从LangChain基础到高级应用的全过程,旨在帮助开发者迅速掌握这一强大的工具,解锁人工智能开发的新维度。
本书内容围绕LangChain快速入门、Chain结构构建、大模型接入与优化、提示词工程、高级输出解析技术、数据检索增强(RAG)、知识库处理、智能体(agent)开发及其能力拓展等多个层面展开。通过详实的案例分析与步骤解说,读者可以学会整合如ChatGLM等顶尖大模型,运用ChromaDB进行高效的向量检索,以及设计与实现具有记忆功能和上下文感知能力的AI智能体。此外,书中还介绍了如何利用LangChain提升应用响应速度、修复模型输出错误、自定义输出解析器等实用技巧,为开发者提供了丰富的策略与工具。
本书主要面向AI开发者、数据科学家、机器学习工程师,以及对自然语言处理和人工智能应用感兴趣的中级和高级技术人员。
作者简介
陈鹏,哔哩哔哩知名UP主【老陈打码】,精通Python编程和前端开发,全网AI技术教程千万播放量,广州麒跃科技有限公司创始人,致力于AI技术开发与应用。
目录
第 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