新書推薦:
《
“御容”与真相:近代中国视觉文化转型(1840-1920)
》
售價:NT$
505.0
《
鸣沙丛书·大风起兮:地方视野和政治变迁中的“五四”(1911~1927)
》
售價:NT$
454.0
《
海洋、岛屿和革命:当南方遭遇帝国(文明的另一种声音)
》
售價:NT$
485.0
《
铝合金先进成型技术
》
售價:NT$
1214.0
《
英雄之旅:把人生活成一个好故事
》
售價:NT$
398.0
《
分析性一体的涌现:进入精神分析的核心
》
售價:NT$
556.0
《
火枪与账簿:早期经济全球化时代的中国与东亚世界
》
售價:NT$
352.0
《
《全面与进步跨太平洋伙伴关系协定》国有企业条款研究
》
售價:NT$
449.0
|
編輯推薦: |
★基于Langchain 0.1长期维护版本
★完整的LangChain生态介绍(Langsmith、Langserve)
★附送近20张亲笔手绘清晰架构图
★附送600分钟详解视频
★深入解析 RAG、LCEL等核心能力
★讲解清晰、案例实用和代码易上手
★驭势科技联合创始人兼CEO吴甘沙等8位产学研界专家赞誉力荐
|
內容簡介: |
本书是专为初学者和对LangChain应用及大语言模型(LLM)应用感兴趣的开发者而编写的。本书以LangChain团队于2024年1月发布的长期维护版本0.1为基础,重点介绍了多个核心应用场景,并且深入探讨了LCEL的应用方式。同时,本书围绕LangChain生态系统的概念,详细探讨LangChain、LangServe和LangSmith,帮助读者全面了解LangChain团队在生成式人工智能领域的布局。此外,本书还介绍了开源模型运行工具,为读者引入本地免费的实验环境,让读者能够亲自动手进行实际操作。
通过本书,读者可以真正体验到LangChain在从原型到生产的LLM应用开发和上线闭环体验方面的优势,全面了解LangChain的概念、原理和应用,并且获得实际开发LangChain应用的经验。本书示例丰富,内容通俗易懂,既可作入门教程,也可供相关技术人员参考。
|
關於作者: |
张海立(网络昵称:沧海九粟) 驭势科技云平台研发总监,中国信息通信研究院“汽车云工作组”首批专家,目前专注的领域是无人驾驶运维平台的标准化和智能化研究。同时作为开源爱好者和布道师,长期关注和致力于云原生与前沿互联网技术的推广,现担任KubeSphere用户委员会上海站站长,也是CNCF OpenFunction项目管委会成员。曾就职于英特尔亚太研发有限公司,担任高级研发经理和架构师。
曹士圯(网络昵称:万千十一) 前全栈数据科学家,关注大数据分析、建模及架构等;现为独立AI工程师,聚焦于大语言模型智能体的发展及行业应用,同时关注各类大语言模型的端侧部署推理应用。数据玩家、工具狂魔,开源爱好者,乐于写作和分享。
郭祖龙 驭势科技云平台研发经理。关注云原生可观测性、IoT相关技术、流式计算等。i人丈夫,新晋奶爸,热爱运动,喜欢旅行。
|
目錄:
|
第1章 LangChain生态系统概览 1
1.1 LangChain生态系统的布局 2
1.1.1 LangChain软件包的组织方式 4
1.1.2 LangChain核心功能模块概览 5
1.2 从Chat LangChain应用看生态实践 10
1.2.1 读取和加载私域数据 11
1.2.2 数据预处理及存储 13
1.2.3 基于用户问题的数据检索 14
1.2.4 基于检索内容的应答生成 14
1.2.5 提供附带中间结果的流式输出 16
1.2.6 推理链的服务化和应用化 17
1.2.7 追逐生产环境的调研链和指标 18
第2章 环境准备 21
2.1 在VS Code中开启并使用Jupyter Notebook 23
2.2 通过python-dotenv隐式加载环境变量 24
2.3 使用Ollama加载大语言模型 25
第3章 角色扮演写作实战 28
3.1 场景代码示例 29
3.2 场景代码解析 30
3.3 Model I/O三元组 31
3.3.1 Prompt模块 31
3.3.2 Model模块 35
3.3.3 Output Parser模块 36
3.4 LCEL语法解析:基础语法和接口 40
3.4.1 Runnable对象的标准接口 40
3.4.2 Runnable对象的输入和输出 41
3.4.3 Runnable对象的动态参数绑定 41
3.4.4 审查链路结构和提示词 43
3.5 Runnable Sequence的基座:Model I/O三元组对象 44
第4章 多媒体资源的摘要实战 46
4.1 场景代码示例 47
4.2 场景代码解析 50
4.3 Document的加载与处理 51
4.3.1 文档加载器 51
4.3.2 文档转换器 51
4.3.3 文本分割器 52
4.4 3种核心文档处理策略 56
4.4.1 Stuff策略:直接合并 56
4.4.2 MapReduce策略:分而治之 58
4.4.3 Refine策略:循序迭代 61
4.5 LCEL语法解析:RunnableLambda和RunnableMap 65
4.5.1 RunnableLambda 65
4.5.2 RunnableMap 68
第5章 面向文档的对话机器人实战 70
5.1 场景代码示例 71
5.2 场景代码解析 74
5.3 RAG简介 75
5.3.1 什么是RAG 75
5.3.2 RAG的工作原理 77
5.4 LangChain中的RAG实现 78
5.5 Retriever模块的实用算法概览 80
5.5.1 检索器融合 82
5.5.2 上下文压缩 83
5.5.3 自组织查询 85
5.5.4 时间戳权重 97
5.5.5 父文档回溯 99
5.5.6 多维度回溯 103
5.5.7 多角度查询 110
5.6 Indexing API简介 113
5.6.1 删除模式 114
5.6.2 使用场景和方式 115
5.7 Chain模块和Memory模块 119
5.7.1 通过Retrieval QA Chain实现文档问答 120
5.7.2 通过Conversational Retrieval QA Chain实现会话文档问答 121
5.7.3 通过Memory模块为对话过程保驾护航 122
5.8 长上下文记忆系统的构建 124
5.8.1 会话记忆系统 125
5.8.2 语义记忆系统 125
5.8.3 生成式Agent系统 126
5.8.4 长上下文记忆系统的构建要点 126
5.9 LCEL语法解析:RunnablePassthrough 128
5.10 Runnable Sequence的数据连接:Retriever对象 130
第6章 自然语言交流的搜索引擎实战 134
6.1 场景代码示例 136
6.2 场景代码解析 137
6.3 Agent简介 138
6.3.1 Agent和Chain的区别 139
6.3.2 Agent的思考链 140
6.4 Agent的工具箱 145
6.5 面向OpenAI的Agent实现 148
6.6 Callback回调系统简介 153
6.7 Callback和verbose的关系 158
6.8 LCEL语法解析:RunnableBranch和链路异常回退机制 159
6.8.1 RunnableBranch 159
6.8.2 链路异常回退机制 162
6.9 Runnable Sequence的扩展:外部工具的接入 164
6.10 LangGraph:以图的方式构建Agent 165
第7章 快速构建交互式LangChain应用原型 170
7.1 Streamlit及免费云服务“全家桶” 172
7.1.1 环境准备 172
7.1.2 极简开发 172
7.1.3 实时交互 174
7.1.4 云上部署 177
7.2 使用Chainlit快速构建交互式文档对话机器人 179
7.2.1 环境准备 179
7.2.2 简单示例 180
7.2.3 交互式文档对话机器人 184
第8章 使用生态工具加速LangChain应用开发 195
8.1 LangSmith:全面监控LangChain应用 197
8.1.1 追踪LangChain应用 199
8.1.2 数据集与评估 202
8.1.3 LangChain Hub 204
8.2 LangServe:将LangChain应用部署至Web API 207
8.2.1 快速开始 208
8.2.2 原理详解 211
8.3 Templates & CLI:从模板和脚手架快速启动 214
8.3.1 LangChain Templates 214
8.3.2 LangChain CLI命令行工具 215
8.3.3 优化升级 218
第9章 我们的“大世界” 219
9.1 大语言模型应用开发框架的“你我他” 220
9.1.1 三大框架的简介 221
9.1.2 三大框架的特性 222
9.1.3 三大框架的对比 223
9.2 从LangChain Hub看提示词的丰富应用场景 224
9.2.1 场景写作 225
9.2.2 信息总结 228
9.2.3 信息提取 230
9.2.4 代码分析和评审 232
9.2.5 提示优化 234
9.2.6 RAG 235
9.2.7 自然语言SQL查询 236
9.2.8 评价打分 237
9.2.9 合成数据生成 238
9.2.10 思考链 240
9.3 浅谈通用人工智能的认知架构的发展 242
|
內容試閱:
|
在过去的十五年里,我从HTML5的初探者成长为云原生(Cloud Native)的实践者,最终步入通用人工智能(Artificial General Intelligence,AGI)的时代进行探索。每个时代都有其独特的技术特点和发展趋势,而我始终坚信,无论时代如何变迁,将理论知识和技术应用紧密结合都是非常重要的。
在HTML5时代,我见证了Web技术的飞速发展,它不仅改变了人们使用互联网的习惯,也为后来的技术发展奠定了基础。进入云原生时代后,我的研究领域扩展到了容器云、微服务、Serverless等技术,这些技术极大地提高了软件开发的效率和灵活性。如今,随着通用人工智能时代的到来,我见证了大语言模型的崛起,它们在语言处理、图像识别等领域展现出惊人的潜力。但与此同时,我也认识到,充分发挥这些大语言模型的能力需要有效的应用开发框架来支持。LangChain正是在这样的背景下崭露头角的。
LangChain是一个开源的大语言模型应用开发框架,它不仅功能强大,而且易于学习和使用。在探索LangChain的过程中,我深切地感受到,无论是前端开发者还是后端开发者,无论是否具备AI专业知识,都可以通过LangChain来开发自己的应用和产品。这激发了我通过架构图绘制、视频讲解和案例分享的方式,尽可能地将LangChain的复杂概念和应用技巧简化,从而将我学习到的知识和经验传播给更多的人的热情。在这个过程中,我与社区成员们共同探讨技术难题,交流心得。这种互动不仅使我能够深入地理解LangChain,更重要的是,它让我意识到知识传播的价值。我希望通过我的努力,能够帮助初学者和同行更好地理解和应用LangChain。
为了更好地向社区伙伴们传递LangChain的最新技术和应用方法,我与两位LangChain爱好者——曹士圯、郭祖龙紧密合作,共同撰写了本书。我们的目标是,基于LangChain的核心理念和功能,为读者提供全面、深入的学习路径。在这个过程中,我们不仅会和大家一起探索LangChain的开源稳定版本(0.1),也会着眼于整个LangChain生态系统,对其进行多维度展示。
我们在书中特别强调了LangChain的最新应用开发方式,例如LCEL。这种方式不仅代表了LangChain技术的前沿,也体现了我们对技术传播和实用性的重视。我们致力于通过清晰的讲解、实际的案例分析和易于理解的示例代码,帮助读者深入理解LangChain的工作原理和应用场景。
通过本书,我们希望能够激发读者对LangChain的兴趣,为他们提供可靠的学习资源。我们相信,无论是技术新手还是有经验的开发者,都能从中获得宝贵的知识和灵感,进而在自己的项目和研究中使用LangChain开发出具有创新性和有效的解决方案。
在深入阅读本书之前,这几点建议可能会帮助您更好地理解和应用书中的内容。首先,本书假设您具备基本的Python编程能力,以及在Linux或macOS系统上进行软件安装的基础知识。这些技能将帮助您更顺畅地理解书中的示例代码和操作步骤。其次,我们建议您采取两个阶段的阅读方法来深化对LangChain的理解。
初步阅读:在首次阅读时,建议您整体浏览全书,了解LangChain生态系统的基本概念和组成部分。特别是理解各个组件在LangChain生态系统中的角色和功能。此时,可以初步浏览示例代码部分,无须深入。深入阅读:在第二次阅读时,建议您结合示例代码深入理解LangChain的开发细节。您可以重点阅读单独介绍LCEL语法和Runnable Sequence中可用组件的相关小节,以此来有效地熟悉和掌握LangChain推荐的推理链编写方式。书中所有的示例代码都可以运行,您可以从GitHub代码仓库中获取并进行实际操作,以加深理解。
本书共分为9章,每章围绕LangChain的不同方面展开,旨在提供全面而深入的指导。
“第1章 LangChain生态系统概览”为读者全面介绍LangChain生态系统的布局,并且通过解析一个官方的生产级应用Chat LangChain,帮助读者初步认识LangChain生态系统。
“第2章 环境准备”对读者随阅读进行代码的编写来说非常关键,这一章的重点是Ollama的使用和llama2-chinese模型的部署。
第3章到第6章结合具体的应用场景,深入讲解LangChain的核心模块。同时,会详细介绍LCEL语法和Runnable Sequence中可用的Runnable组件。在实际编写代码前,建议重点阅读这几章。
“第3章 角色扮演写作实战”引入并讲解Model I/O三元组的概念和应用。
“第4章 多媒体资源的摘要实战”探讨如何使用LangChain加载、处理多媒体资源中的文本内容。
“第5章 面向文档的对话机器人实战”深入讲解Retriever模块的机制和应用,同时解析检索增强生成(Retrieval Augmented Generation,RAG)的流程及其关键组件。
“第6章 自然语言交流的搜索引擎实战”详述如何利用Agent和思考链构建自然语言处理的搜索引擎,并且介绍了Callback模块的功能。
“第7章 快速构建交互式LangChain应用原型”介绍如何将推理链快速转化为本地和云端应用,特别介绍了如何使用Streamlit和Chainlit框架在云端快速发布原型。
“第8章 使用生态工具加速LangChain应用开发”深入讲解3个关键的生态工具——LangSmith、LangServe和Templates&CLI。
LangSmith:详细介绍LangSmith的功能和如何使用LangSmith监控LangChain应用。LangServe:详细介绍如何将LangChain应用部署至API,提高应用的可访问性和性能。Templates&CLI:详细介绍如何使用应用模板和命令行界面快速启动LangChain项目。
“第9章 我们的‘大世界’”展望更广阔的大语言模型应用开发领域。本章不仅分析和比较了LangChain、LlamaIndex、AutoGen框架,还探讨了基于LangChain Hub的各种应用场景和通用人工智能的认知架构的发展。
大语言模型应用开发框架的“你我他”:分析和比较三大框架的特点和应用场景。从LangChain Hub看提示词的丰富应用场景:基于LangChain Hub,总结热门提示词领域及其丰富的应用场景。浅谈通用人工智能的认知架构的发展:讨论通用人工智能的认知架构概念,以及其在开源和闭源发展中的现状和趋势。
本书中所有的示例代码及其参考资料都可以从GitHub代码仓库中获取。
感谢支持和帮助我们的家人们,是他们的理解和包容,才让本书得以完成。在我们疲惫或灰心时,是家人们的关怀支持着我们继续前行。
同时,我们也要感谢电子工业出版社的孙学瑛老师。她专业的指导帮助我们逻辑清晰地组织了本书的内容,使本书更加易读易用。她严谨的工作态度和敬业精神,也激励着我们不断完善作品。
LangChain是一个非常有前途和影响力的框架,它的快速发展让所有参与者都对它充满热情和期待。然而,任何新事物在发展过程中都难免遇到困难。作为早期探索者,我们的能力和经验有限,在内容创作上也会不可避免地存在一些缺陷。如果各位读者发现内容中有任何错误或不足之处,请您提出宝贵意见,我们会虚心接受、认真改进。
最后,我们由衷地感谢所有的读者,您的支持就是我们最大的动力。我们衷心希望本书能成为您的有益工具。通过本书,我们也希望能够帮助更多的开发者和技术爱好者走在技术的前沿,探索和创造更多的可能。
张海立
2024年3月
|
|