2022年ChatGPT引爆生成式AI那会儿,不少开发者都经历过这样一个阶段:刚开始调用API生成文本还觉得挺新鲜,但很快就陷入了“如何把大模型做成真正可用的产品”这个困境里。单独调用GPT-4的API,效果也就停留在简单对话层面;真要让它去连接数据库、处理本地文档、自主调用各种工具,那就得写大量重复又繁琐的胶水代码。

直到LangChain的出现,局面才算被彻底改观。它就像是给大模型应用开发量身定做的“脚手架”,把那些纷繁复杂的流程抽象成了一个个可以自由拼接的组件。这样一来,大家就不用反复造轮子了,精力可以集中到核心业务逻辑上。这一章,我们从基础认知聊起,捋一遍它的发展历程、对比一下同类框架,最后再直接上手实战,带你快速入门LangChain,给后续的学习打个底。
1.1 什么是 LangChain?为什么需要它?
1.1.1 一句话读懂LangChain
LangChain是一个开源的大模型应用编排框架。它的核心任务就是“连接”——把大语言模型(LLM)跟外部数据源(比如文档、数据库、API)、各种工具(搜索、计算、自动化工具等)给串起来,再通过“链式调用”的方式把多个组件组合到一起,快速搭建复杂的AI应用,比如智能问答、聊天机器人、RAG知识库等。
说白了,LLM是“大脑”,LangChain就是“神经网络”。它负责把大脑的能力传递到各个场景里,让大脑能“看见”外部数据、“使用”各类工具,而不是一个只会闷头生成文本的孤立存在。
1.1.2 为什么我们需要LangChain?
如果没有LangChain,开发大模型应用会遇到三个非常令人头疼的核心问题,这恰恰也是它诞生的原因:
重复造轮子:每次开发新应用,都得重新写“调用LLM、处理对话历史、连接外部工具”的代码,效率低得让人抓狂。
流程难以编排:在面对像“提问→搜索→分析结果→生成回答”这样的复杂场景时,需要手动管理组件间的依赖和数据流转,逻辑混乱不说,还特别容易出错。
扩展性太差:哪天想换个LLM(比如从GPT-3.5换成Llama 3),或者换个向量数据库(比如从FAISS换成Pinecone),就得大面积修改代码,简直是噩梦。
而LangChain的核心价值,恰好就是来解决这三个痛点的:通过模块化设计,让组件可以复用、方便替换;通过链式调用,让复杂流程变得可编排、可调试;通过统一接口,让开发者不用操心底层细节,快速从原型走到产品。
1.1.3 核心应用场景
LangChain的应用场景几乎覆盖了所有LLM能驱动的场景,最常见的有这么四类:
RAG(检索增强生成):把本地文档、PDF、网页都接进来,让LLM基于你指定的数据生成回答,像企业知识库、文档问答就是典型应用。
聊天机器人:支持多轮对话记忆,能实现更拟人化的交互,比如客服机器人、私人助手。
智能工具调用:让LLM自己决定什么时候调用搜索、计算、数据库查询等工具,比如智能数据分析、自动化办公。
多模态应用:把文本、图片、音频结合起来,构建多模态交互应用,比如图文生成、语音问答。
1.2 LangChain 的发展历程与生态全景
1.2.1 发展历程(关键节点)
LangChain是由Harrison Chase在2022年10月正式推出的。时机很巧妙,正好赶上ChatGPT引爆生成式AI浪潮。凭借“降低LLM应用开发门槛”这个核心优势,它迅速成了开源社区的明星项目。大致可以分为四个关键阶段:
2022年10月 - 初创期:LangChain在GitHub上发布了第一个版本,核心功能就是“Prompt模板”和“简单链式调用”,主打“快速原型开发”,专门解决开发者“重复写调用代码”的痛点。
2023年 - 爆发期:GitHub上的星标数一路狂飙,突破了38000,成了当年增速最快的开源项目之一。还推出了LangSmith调试平台,完善了RAG、Agent等核心功能,生态系统开始扩张,支持了更多LLM和工具集成。
2024年 - 商业化与成熟化:拿到了红杉资本领投的融资,发布了LangServe部署工具,能直接把LangChain应用部署成REST API,推动企业级落地。同时也开始优化核心库,回应了“抽象过重”的争议。
2025年至今 - 生态完善期:推出了langgraph库,强化了多智能体系统的构建能力。跟云平台和垂直行业的合作也更深了,持续优化多模态支持,目标是成为“大模型应用开发的通用语言”。
截至2026年3月,LangChain在GitHub上的星标数已经突破70k+,成了大模型应用开发领域最主流的框架之一,背后是一个庞大的开发者社区和丰富的第三方集成。
1.2.2 生态全景(核心组件与集成)
LangChain的生态基本上是围绕“模块化、可扩展”展开的,核心可以分成三部分:核心库、工具集成、辅助平台。这正好形成了一个“开发-调试-部署”的完整闭环,具体来说:
1. 核心库(langchain-core)
这是LangChain的骨架,包含所有基础组件,也是构建应用的地基。关键组件有:
模型(Models):统一的LLM调用接口,支持OpenAI、Anthropic、Meta(Llama 3)、Google等主流模型,还有本地部署的开源模型。
提示(Prompts):包括Prompt模板、少样本提示、提示优化等功能,能简化提示工程的复杂度。
链(Chains):把多个组件串联起来,实现复杂流程,比如LLMChain、SequentialChain。
记忆(Memory):管理多轮对话的上下文,让LLM能“记住”之前的交互内容。
工具(Tools):定义外部工具的调用接口,支持搜索、数据库、API等工具的集成。
检索(Retrievers):连接向量数据库,实现外部数据的检索,这是RAG场景的核心组件。
2. 工具集成(生态核心优势)
LangChain的一大优势就是“生态丰富”。它已经集成了100多个第三方工具和服务,覆盖了四大类别:
大语言模型(LLM):OpenAI、Anthropic(Claude)、Google(Gemini)、Meta(Llama 3)、Hugging Face等等。
向量数据库:FAISS、Pinecone、Chroma、Milvus等,用来存储和检索文本嵌入。
外部工具:Google搜索、Bing搜索、Python解释器、数据库(MySQL、PostgreSQL)、Slack、邮件等。
文档加载器:支持PDF、Word、Excel、Markdown、网页等多种格式的文档加载。
3. 辅助平台(开发-部署闭环)
为了降低开发和部署成本,LangChain官方推出了两个核心辅助平台:
LangSmith:一个调试、监控和评估的平台。可以查看链的运行日志、优化Prompt、评估回答质量,解决了“链式调用难调试”的痛点。
LangServe:部署工具,能把LangChain的链或Agent快速部署成REST API,方便集成到Web应用、APP等产品中。
1.3 LangChain 与其他框架对比(LlamaIndex、Haystack 等)
在大模型应用开发这个领域,除了LangChain,还有LlamaIndex、Haystack、DSPy等主流框架。它们各有各的侧重点,不存在“绝对最优”这回事,关键看哪个最“适合”你的场景。下面从核心定位、优势、劣势、适用场景四个维度做个详细对比,帮你快速选型。
1.3.1 核心框架对比表
| 框架 | 核心定位 | 核心优势 | 核心劣势 | 适用场景 |
|---|---|---|---|---|
| LangChain | 通用型LLM应用编排框架 | 1. 生态最广,集成工具最多;2. 社区活跃,文档完善;3. 支持Agent自主决策;4. 入门门槛低,适合快速原型验证 | 1. 抽象层级过多,调试困难;2. RAG实现需手动拼接组件,代码冗余;3. 高并发场景支持较弱 | MVP快速验证、多工具集成的Agent开发、通用型LLM应用(聊天机器人、简单RAG等) |
| LlamaIndex | RAG专用框架(原GPT Index) | 1. 开箱即用的RAG流程,一行代码完成文档加载→检索→生成;2. 文档处理能力强,支持多种分块策略;3. 与LangChain兼容,可混合使用 | 1. 功能聚焦RAG,不适合非检索类任务;2. 高级功能(如Graph RAG)仍在演进中 | 企业知识库问答、文档智能分析、私有数据增强生成(纯RAG场景) |
| Haystack | 企业级NLP Pipeline编排引擎 | 1. 生产就绪,支持REST API、Docker部署、指标监控;2. 组件高度解耦,便于替换;3. 内置评估工具,适合A/B测试 | 1. 学习曲线较陡,需理解Pipeline与Node概念;2. 社区规模小于LangChain | 企业级RAG系统、需要高稳定性、可审计、可监控的生产环境应用 |
| DSPy | 声明式RAG优化框架(斯坦福开源) | 1. 声明式编程,代码极简;2. 支持自动优化Prompt和检索策略;3. 适合研究与实验驱动型项目 | 1. 生态尚不成熟,文档较少;2. 对工程部署支持有限,更适合实验环境 | AI研究、Prompt工程自动化、需要持续优化RAG性能的实验项目 |
1.3.2 选型建议(新手必看)
如果你是新手,想快速入门,尝试各种LLM应用场景(不限于RAG),那优先选LangChain——社区资源多,踩坑成本低。
如果你的需求只集中在RAG(比如企业知识库),而且追求高效开发,那优先选LlamaIndex——开箱即用,不用手动拼接组件。
如果你的项目要部署到生产环境,要求高稳定性和可监控,那优先选Haystack——企业级特性很完备。
如果你的项目偏研究型,需要优化RAG性能、自动调优Prompt,可以试试DSPy——它的声明式编程理念挺有意思。
补充一点:LangChain和LlamaIndex其实可以混合使用,比如用LlamaIndex做检索,用LangChain做Agent,这样能更灵活地应对复杂场景。
1.4 LangChain 的核心设计理念:“最后一公里”问题
很多人用LangChain,只知道它能“拼组件、写链式调用”,但很少关注它的核心设计理念——解决大模型应用开发的“最后一公里”问题。
1.4.1 什么是“最后一公里”问题?
大模型的“第一公里”是模型训练,比如OpenAI训练GPT-4,解决的是“能生成符合人类语言的文本”。而“最后一公里”是“将大模型落地到具体场景”,解决的是“如何让大模型有用、好用”的问题。
举个例子:GPT-4本身的能力确实很强,但它没法直接读你本地的PDF,查不了你公司的数据库,也不能自主调用搜索工具。这些“落地场景”的需求,就是“最后一公里”的痛点。
LangChain的所有设计,都是围绕“打通最后一公里”展开的。它要解决三个关键问题:
上下文感知:让LLM能“记住”对话历史、“理解”当前场景,而不是孤零零地生成文本(这个靠Memory组件来实现)。
外部连接:让LLM能“访问”外部的数据和工具,打破“预训练数据有限”这个限制(靠Retrievers、Tools组件)。
流程自动化:让LLM能“自主决策”,根据用户需求,自动调用工具、处理数据、生成最终回答(靠Agent、Chains组件)。
1.4.2 设计理念的核心:模块化与可组合性
为了打通这个“最后一公里”,LangChain采用了“模块化+可组合”的核心设计思路,具体体现在两点:
模块化:把大模型应用的各个环节——调用LLM、处理Prompt、管理记忆、检索数据、调用工具——都拆成独立的组件,每个组件只负责一个单一功能,可以单独修改、替换。
可组合:通过“链(Chains)”把多个组件串联或并联,形成复杂的业务流程。比如“Prompt模板 → LLM调用 → 记忆存储 → 工具调用”,可以根据需要自由组合。
这么设计的好处很明显:开发者不用从零开始开发,只需要像“搭积木”一样组合现有组件,就能快速实现复杂场景。而且,当需求变了(比如换个LLM、换个向量数据库),也只需要修改对应的组件,不用把整个代码都重构一遍。
1.4.3 从“玩具”到“工具”的进化
LangChain早期的设计,主要聚焦在“降低入门门槛”上,让开发者能用“五行代码”就快速实现原型。但这也带来了“抽象过重、可控性不足”的问题——当原型要落地到生产环境时,调试困难、流程容易出问题的情况就暴露出来了。
因此,LangChain在1.0版本中,通过LangGraph和中间件系统,完成了从“玩具”到“工具”的进化。既保留了“快速拼接组件”的易用性,又增加了生产级别的可控性,比如检查点恢复、流式输出、人机协作接口等,这才算是真正打通了“原型→生产”这最后一公里。
1.5 Python 为何是 LangChain 的首选语言
LangChain同时支持Python和Ja vaScript/TypeScript两种语言(分别对应langchain和langchain-js),但官方和社区的核心精力都放在Python上,Python也是绝大多数开发者的首选。原因主要有四点,对新手尤其友好:
1.5.1 生态适配:大模型与数据工具的“第一语言”
大模型领域的核心工具和库,几乎都优先支持Python:
LLM API:OpenAI、Anthropic、Hugging Face等官方SDK,都是优先提供Python版本的,调用起来更方便。
数据处理:Pandas、NumPy、OpenCV等数据处理库,可以无缝跟LangChain集成,处理文本、图片等多模态数据。
向量数据库:FAISS、Chroma、Pinecone等,都提供Python SDK,跟LangChain的检索组件可以一键对接。
部署工具:FastAPI、Flask等Web框架,能快速把LangChain应用部署成API,跟Python生态完美兼容。
简单来说,用Python开发LangChain应用,可以“一站式”搞定“数据处理→模型调用→部署上线”,不用在语言之间来回切换,效率更高。
1.5.2 开发效率:简洁语法+快速迭代
Python的语法简洁、可读性强,相比Ja vaScript/TypeScript,更适合快速原型开发和迭代:
不需要编译,写完代码就能跑,特别适合调试链式调用的复杂流程。
语法简洁,实现同样的功能,Python的代码量远少于其他语言(比如Ja va)。
支持交互式开发(比如Jupyter Notebook),可以逐行调试,快速定位问题。
对LangChain这种以“组件拼接、流程调试”为主的开发场景来说,Python的优势就显得尤为突出了。
1.5.3 社区支持:资源最丰富,踩坑成本最低
LangChain的Python社区规模远大于Ja vaScript社区:
在GitHub上,langchain(Python)的星标数是langchain-js的三倍以上,更新频率也更高。
在掘金、CSDN、Stack Overflow等平台,Python版本的教程、问题解答、实战案例都远远多于其他语言。
第三方插件和集成,也优先支持Python版本,比如很多自定义工具、文档加载器,就只提供了Python实现。
对新手来说,丰富的社区资源意味着“遇到问题能快速找到解决方案”,大大降低了学习和开发成本。
1.5.4 灵活性:兼顾新手与资深开发者
Python的灵活性,跟LangChain的设计理念可以说是完美匹配:
新手可以直接用LangChain的高层API,不用关心底层细节,快速实现功能。
资深开发者则可以通过自定义组件(比如自定义Prompt模板、自定义工具),灵活扩展LangChain的功能,满足复杂场景的需求。
多说一句:如果你的需求是“前端+LLM应用”(比如网页聊天机器人),那可以选择langchain-js;但如果是后端服务、数据处理、RAG、Agent等场景,Python还是首选。
1.6 官方文档与社区资源快速导航
学习LangChain,没必要死记硬背API,关键是要学会“查资料”。下面整理了最核心的官方文档和社区资源,把这部分收藏起来,就能快速找到你需要的信息。
1.6.1 官方核心资源(必收藏)
LangChain 官方文档:python.langchain.com/docs/get_st…(Python版本,最权威、最全面,包含入门教程、API文档、实战案例)。
LangChain 中文官网:www.langchain-china.com/(适合英文基础较弱的开发者,有中文文档和社区动态)。
LangSmith 文档:docs.smith.langchain.com/(调试、监控平台的使用文档,生产环境必备)。
LangServe 文档:python.langchain.com/docs/langse…(部署工具文档,教你如何把LangChain应用部署成API)。
GitHub 仓库:github.com/langchain-a…(可以查看源码、提交Issue、贡献代码,了解最新版本动态)。
1.6.2 社区学习资源(新手首选)
1. 国内社区(中文资源)
掘金:搜索“LangChain”,有大量新手教程和实战案例(比如RAG、Agent开发),贴合国内开发者的需求。
CSDN:有LangChain专栏,包含详细的API解析和问题排查教程。
LangChain 中文社区:langchainchina.com/(国内开发者交流平台,可以提问、分享案例)。
2. 国外社区(英文资源)
LangChain Discord:discord.com/invite/lang…(官方社区,可以跟核心开发者交流,提问解答)。
Stack Overflow:搜索“LangChain”,能找到大量实际开发中的问题和解决方案。
YouTube:LangChain官方频道有详细的视频教程,包含实战演示。
1.6.3 实用工具与插件(提升开发效率)
LangChain Hub:hub.langchain.com/(官方Prompt模板、链模板仓库,可以直接复用)。
LangChain CLI:命令行工具,可以快速创建LangChain项目、部署应用。
Hugging Face Hub:huggingface.co/models(可以下载开源LLM、Embedding模型,跟LangChain无缝集成)。
1.6.4 学习技巧(新手必看)
官方文档的“Getting Started”章节是新手入门的最佳路径,先跟着完成基础示例,再深入学习核心组件。
遇到问题,优先查官方文档的API参考,再去社区搜索,这样可以避免被过时的教程误导。
关注LangChain GitHub的“Releases”页面,及时了解版本更新和新功能,比如langgraph、中间件系统。
1.7 本书学习路线与配套代码说明
为了帮助大家系统掌握LangChain,避免“碎片化”学习,下面明确一下本书的学习路线和配套代码说明。无论你是新手还是有一定基础的开发者,都能快速跟上节奏。
1.7.1 学习路线(从入门到精通)
本书采用“循序渐进、实战驱动”的学习路线,一共分为五个阶段,对应后续的章节。确保每一步都有明确的学习目标和实战成果:
第一阶段:基础入门(第1章):认识LangChain,了解核心概念,完成第一个LangChain程序,建立基础认知。
第二阶段:核心组件(第2-6章):逐一学习LangChain的核心组件(Prompt、Model、Chain、Memory、Retriever),掌握每个组件的使用方法和实战技巧。
第三阶段:实战场景(第7-10章):聚焦核心应用场景(RAG知识库、聊天机器人、Agent工具调用、多模态应用),手把手教你怎么开发完整的项目。
第四阶段:优化与部署(第11-12章):学习LangChain应用的优化技巧(Prompt优化、性能优化),以及部署方法(LangServe、Docker部署)。
第五阶段:高级进阶(第13-15章):学习自定义组件、LangGraph多智能体、企业级实践,提升开发能力,应对复杂场景。
给个建议:尽量不要跳过任何一个阶段。基础组件是后续实战的核心,只有掌握了组件的用法,才能灵活组合出复杂的应用。
1.7.2 配套代码说明
1. 代码仓库地址(免费获取)
本书所有的配套代码都托管在GitHub上,可以直接克隆、运行。地址:github.com/xxx/langcha…(实际使用时替换为真实仓库地址)。
2. 代码结构说明
代码仓库按章节来划分,结构清晰,方便查找和运行:
langchain-learning/├── chapter01/│ ├── hello_langchain.py│ └── requirements.txt├── chapter02/│ ├── basic_prompt.py │ └── advanced_prompt.py└── ...
3. 环境要求
为了保证代码能正常运行,建议使用以下环境配置:
Python 版本:3.8+(推荐3.10,兼容性最好)。
LangChain 版本:最新稳定版(本书代码基于LangChain 1.0+编写)。
依赖包安装:每个章节的requirements.txt文件里,包含了该章节需要的所有依赖,执行
pip install -r requirements.txt就可以了。
4. 注意事项
代码中涉及LLM API(比如OpenAI)的部分,需要替换成你自己的API密钥(怎么获取API密钥,后面章节会详细说明)。
部分代码(比如RAG、工具调用)需要联网才能运行,确保网络通畅。
代码会持续更新,去适配LangChain的最新版本。如果运行出错,可以查看仓库的README文件,获取最新说明。
1.8 动手体验:你的第一个 LangChain 程序
说再多理论,都不如自己动手实践一把。这一节我们会搭建LangChain环境,然后编写第一个LangChain程序——一个简单的“对话机器人”,实现多轮对话功能。让你直观地感受一下LangChain到底有多方便。
这个示例用的是OpenAI的GPT-3.5-turbo模型(最常用,成本也低),代码很简洁,注释也很详细,新手也能轻松上手。
1.8.1 环境搭建(3步完成)
步骤1:安装Python环境
如果还没装Python,去Python官方网站下载,选3.8+版本,安装时记得勾选“Add Python to PATH”,这样命令行里就能直接调用了。
步骤2:安装LangChain和OpenAI依赖
打开命令行,执行下面的命令,安装需要的依赖(指定最新稳定版):
pip install langchain==0.1.10 openai==1.13.3 python-dotenv
依赖说明:
langchain:核心框架。
openai:OpenAI官方SDK,用来调用GPT模型。
python-dotenv:用来加载环境变量(存储API密钥,避免硬编码在代码里)。
步骤3:获取OpenAI API密钥
去OpenAI平台,注册或者登录账号。
进入“Personal → View API keys”,点击“Create new secret key”,生成一个API密钥。
新建一个.env文件,把API密钥写进去,格式像这样:
OPENAI_API_KEY=你的API密钥
注意:API密钥是敏感信息,千万别硬编码到代码里,也不要泄露给别人。
1.8.2 编写第一个LangChain程序
新建一个hello_langchain.py文件,把下面的代码复制进去(注释很详细,可以直接运行):
from langchain_openai import ChatOpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
from dotenv import load_dotenv
import os
load_dotenv()
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0.7, api_key=os.getenv("OPENAI_API_KEY"))
memory = ConversationBufferMemory()
conversation_chain = ConversationChain(llm=llm, memory=memory, verbose=True)
print("欢迎使用LangChain对话机器人!输入'退出'结束对话。")
while True:
user_input = input("你:")
if user_input == "退出":
print("机器人:再见!")
break
response = conversation_chain.predict(input=user_input)
print(f"机器人:{response}")
1.8.3 运行程序并测试
把.env文件和hello_langchain.py文件放在同一个目录下。
打开命令行,进入那个目录,执行下面的命令:
python hello_langchain.py
- 测试对话(示例):
欢迎使用LangChain对话机器人!输入'退出'结束对话。
你:介绍一下LangChain
机器人:LangChain是一个用于构建大语言模型(LLM)应用的开源框架,它的核心作用是将LLM与外部数据源、工具等连接起来...
你:它的核心组件有哪些
机器人:LangChain的核心组件主要包括以下几类:1. 模型(Models)...
你:退出
机器人:再见!
1.8.4 代码解析(关键知识点)
这个简单的程序,已经用到了LangChain的三个核心组件,算是提前给你铺垫一下后续的知识点:
ChatOpenAI:这是LangChain封装的OpenAI聊天模型接口,统一了LLM的调用方式。以后想换其他模型(比如llama 3),只需要改这一部分代码就行了。
ConversationBufferMemory:最基础的记忆组件,用来存储完整的对话历史。有了它,LLM才能“记住”之前的对话内容,实现多轮对话。
ConversationChain:预定义的对话链,已经帮我们封装好了“Prompt模板→LLM调用→记忆存储”的流程,不用手动拼接组件。
想想看,如果没有LangChain,你得手动调用OpenAI API、手动存储对话历史、手动拼接Prompt,代码量不知道要增加多少。这就是LangChain的价值所在。
1.8.5 常见问题排查
问题1:运行报错“API key not provided”——检查一下.env文件对不对,API密钥填对了没,环境变量是不是加载了。
问题2:运行报错“Rate limit exceeded”——OpenAI API有调用频率限制,可以等一会儿再试,或者升级一下API套餐。
问题3:对话记不住历史——检查一下是不是初始化了Memory组件,并且把它传给了ConversationChain。
本章小结
这一章我们从基础认知出发,了解了LangChain的定义、发展历程、核心设计理念,也对比了它跟其他主流框架的差异,掌握了官方资源的使用方法,还亲手写了第一个LangChain程序。
核心要点回顾:
LangChain是大模型应用的“脚手架”,核心价值就是“连接”和“编排”,解决的是“最后一公里”问题。
LangChain的优势在于生态丰富、入门门槛低,适合快速原型开发;缺点则是抽象过重,调试起来难度稍大。
Python是LangChain的首选语言,生态适配性、开发效率和社区支持都更有优势。
动手实践是学好LangChain的关键。第一个程序虽然简单,但已经涵盖了“LLM+记忆+链”的核心逻辑。
下一章,我们会深入学习LangChain的核心组件——Prompt模板,掌握Prompt工程的技巧,让LLM生成更精准、更符合需求的回答。
