《LangChain实战:从原型到生产,动手打造 LLM 应用》是专为初学者和对LangChain应用及大语言模型(LLM)应用感兴趣的开发者而编写的。本书以LangChain团队于2024年1月发布的长期维护版本0.1为基础,重点介绍了多个核心应用场景,并且深入探讨了LCEL的应用方式。同时,本书围绕LangChain生态系统的概念,详细探讨LangChain、LangServe和LangSmith,帮助读者全面了解LangChain团队在生成式人工智能领域的布局。此外,本书还介绍了开源模型运行工具,为读者引入本地免费的实验环境,让读者能够亲自动手进行实际操作。
通过本书,读者可以真正体验到LangChain在从原型到生产的LLM应用开发和上线闭环体验方面的优势,全面了解LangChain的概念、原理和应用,并且获得实际开发LangChain应用的经验。本书示例丰富,内容通俗易懂,既可作入门教程,也可供相关技术人员参考。
基于LangChain 0.1长期维护版本;核心模块、组件和链式调用机制等一应俱全;近20张亲笔手绘清晰架构图;600分钟详解视频;讲解清晰、案例实用和代码易上手
张海立(网络昵称:沧海九粟) 驭势科技云平台研发总监,中国信息通信研究院“汽车云工作组”首批专家,目前专注的领域是无人驾驶运维平台的标准化和智能化研究。同时作为开源爱好者和布道师,长期关注和致力于云原生与前沿互联网技术的推广,现担任KubeSphere用户委员会上海站站长,也是CNCF OpenFunction项目管委会成员。曾就职于英特尔亚太研发有限公司,担任高级研发经理和架构师。
曹士圯(网络昵称:万千十一) 前全栈数据科学家,关注大数据分析、建模及架构等;现为独立AI工程师,聚焦于大语言模型智能体的发展及行业应用,同时关注各类大语言模型的端侧部署推理应用。数据玩家、工具狂魔,开源爱好者,乐于写作和分享。
郭祖龙 驭势科技云平台研发经理。关注云原生可观测性、IoT相关技术、流式计算等。i人丈夫,新晋奶爸,热爱运动,喜欢旅行。
前言
在过去的十五年里,我从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月