
🔥草莓熊Lotso: 个人主页
❄️个人专栏: 《C++知识分享》 《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受!
🎬 博主简介:

文章目录
- 前言:
- [一. AI 时代的编程范式革命:Vibe Coding 的狂欢与冷思考](#一. AI 时代的编程范式革命:Vibe Coding 的狂欢与冷思考)
-
- [1.1 Vibe Coding 的起源与核心本质](#1.1 Vibe Coding 的起源与核心本质)
- [1.2 Vibe Coding 的三大核心优势](#1.2 Vibe Coding 的三大核心优势)
- [1.3 Vibe Coding 的致命局限性](#1.3 Vibe Coding 的致命局限性)
- [二. AI 开发框架:LLM 应用落地的核心基石](#二. AI 开发框架:LLM 应用落地的核心基石)
-
- [2.1 框架的核心设计原则](#2.1 框架的核心设计原则)
-
- [2.1.1 抽象与封装](#2.1.1 抽象与封装)
- [2.1.2 模块化与可组装性](#2.1.2 模块化与可组装性)
- [2.2 主流 LLM 应用开发框架全生态解析](#2.2 主流 LLM 应用开发框架全生态解析)
- [2.3 框架选型的核心逻辑](#2.3 框架选型的核心逻辑)
- [三. LangChain:LLM 应用开发的通用标准框架](#三. LangChain:LLM 应用开发的通用标准框架)
-
- [3.1 原生 LLM 嵌入业务的六大核心痛点](#3.1 原生 LLM 嵌入业务的六大核心痛点)
- [3.2 LangChain 如何系统性解决这些痛点](#3.2 LangChain 如何系统性解决这些痛点)
- [3.3 LangChain 的核心技术特点与组件体系](#3.3 LangChain 的核心技术特点与组件体系)
- [3.4 LangChain 的发展历程](#3.4 LangChain 的发展历程)
- [四. LangGraph:复杂 AI 工作流与智能体的图式编排利器](#四. LangGraph:复杂 AI 工作流与智能体的图式编排利器)
-
- [4.1 LangChain 链式架构的核心局限性](#4.1 LangChain 链式架构的核心局限性)
- [4.2 LangGraph 的设计理念与痛点解决](#4.2 LangGraph 的设计理念与痛点解决)
- [4.3 LangGraph 的核心技术特性](#4.3 LangGraph 的核心技术特性)
- [4.4 LangGraph 的发展历程](#4.4 LangGraph 的发展历程)
- [五. 实战落地:从 0 到 1 构建 LangChain 与 LangGraph 基础应用(先见一见)](#五. 实战落地:从 0 到 1 构建 LangChain 与 LangGraph 基础应用(先见一见))
-
- [5.1 环境准备](#5.1 环境准备)
- [5.2 LangChain 实战:基础提示词链实现](#5.2 LangChain 实战:基础提示词链实现)
- [5.3 LangGraph 实战:信息收集循环工作流](#5.3 LangGraph 实战:信息收集循环工作流)
- [六. 学习路径与职业成长:AI 时代开发者的核心竞争力](#六. 学习路径与职业成长:AI 时代开发者的核心竞争力)
-
- [6\.1 三步学习路径,从入门到精通](#6.1 三步学习路径,从入门到精通)
- [6.2 掌握框架的核心价值](#6.2 掌握框架的核心价值)
- 结尾:
前言:
2025 年,以 Cursor、Trae 为代表的 AI 代码工具席卷开发圈,Vibe Coding(氛围编程)彻底改变了软件开发的模式 ------ 开发者只需用自然语言描述需求,AI 就能瞬间生成可运行的代码。无数声音开始鼓吹 "开发无用论",抛出 "AI 能写代码,何必再学复杂的开发框架" 的论调。但真正落地过企业级 AI 应用的开发者都清楚:AI 生成的代码往往只是 "能用",而非 "优秀"。原生 LLM 接口调用就像淌水过河,总会遇到幻觉频发、模型切换成本高、复杂任务编排困难、私有知识无法接入等暗礁。而 LangChain 与 LangGraph,正是 AI 时代连接大模型能力与业务落地的核心桥梁。本文将从 AI 时代的编程范式变革出发,完整拆解 LangChain 的核心设计思想、解决的业务痛点,再深入讲解 LangGraph 如何突破链式架构的局限,实现复杂 AI 工作流的编排,最终结合实战代码带你从零完成基础应用开发,帮你建立 AI 应用开发的完整系统思维。
一. AI 时代的编程范式革命:Vibe Coding 的狂欢与冷思考
在聊 LangChain 与 LangGraph 之前,我们必须先厘清当下最火热的开发模式 ------Vibe Coding,理解它的本质、优势与不可回避的局限性,这也是我们学习 AI 开发框架的核心原因。

1.1 Vibe Coding 的起源与核心本质
Vibe Coding(氛围编程)由 OpenAI 联合创始人 Andrej Karpathy 于 2025 年 2 月首次提出,是一种完全依赖人工智能的编程实践。其核心逻辑是:开发者通过自然语言向代码优化型 LLM 描述需求,由 LLM 完成代码的编写、调试与优化,开发者摆脱了手动编写底层代码的束缚。
它的工作流程形成了一个完整的闭环:

Karpathy 曾这样描述这种开发模式:"这不算真正的编程 ------ 我只是看看东西,说说东西,运行东西,然后复制粘贴东西,而且它大多都能工作"。但必须明确的是,Vibe Coding 并非完全放弃代码审查,它的本质是将详细的代码实现外包给 AI,开发者从 "代码编写者" 转变为 "代码审核者、需求定义者、架构设计者"。
1.2 Vibe Coding 的三大核心优势
Vibe Coding 之所以能快速席卷开发圈,核心在于它彻底重构了开发效率的天花板,带来了三个颠覆性的优势:
-
指数级提升开发效率
AI 承担了样板代码、重复逻辑的编码工作,原本需要数日开发的功能原型,数小时就能完成验证,能将项目前 75% 的开发速度提升 75%,极大加速了从概念到原型的迭代周期。
-
大幅降低开发门槛
采用自然语言编程,即使是几乎没有编码基础的非 CS 背景从业者,也能通过清晰的需求描述,将自己的想法落地为可运行的产品,实现了编程体验的民主化。
-
让开发者回归创造本质
开发者无需再纠结于底层语法、API 调用细节等重复性工作,能将更多精力放在产品创意、架构设计、业务逻辑设计等更具创造性的工作上,让开发过程更流畅、更具创新空间。

1.3 Vibe Coding 的致命局限性
尽管 Vibe Coding 带来了革命性的开发体验,但它永远无法取代传统的框架开发,更无法让开发者放弃对底层技术的学习。其核心局限性集中在三个方面,也是企业级 AI 应用落地的致命痛点:
-
代码质量与架构的 "黑箱" 困境
AI 的核心目标是生成 "可运行" 的代码,而非 "优雅、可维护、可扩展" 的企业级代码。它无法理解系统架构的长期演进规划,在大型项目中,极易生成与现有架构冲突、重复冗余的代码,最终导致系统腐化,后期维护成本指数级上升。
-
知识滞后与 "幻觉" 陷阱
LLM 的训练数据有固定截止日期,无法使用最新的库版本、语言特性与最佳实践。更危险的是,它会频繁 "幻觉" 出不存在的 API、函数与参数,生成看似正确实则完全无法运行的代码,对开发者的甄别能力提出了极高要求。
-
安全性与可靠性的 "隐形地雷"
这是 Vibe Coding 在企业级应用中最致命的弱点。AI 没有原生的安全意识,极易生成包含 SQL 注入、XSS 攻击、硬编码密码、权限设置不当等安全漏洞的代码;同时,生成的代码缺乏高并发、边缘场景的验证,在生产环境中极易出现稳定性问题,且缺乏完善的日志、监控与熔断机制,线上问题排查极其困难。
最终我们能得出一个明确的结论:Vibe Coding 不是开发者的替代品,而是强大的效率倍增器。糟糕的 "程序员" 工作它无法胜任,优秀的 "辅助工具" 角色它能做到极致。而想要驾驭 AI 工具,而非被 AI 工具驾驭,核心就在于掌握 AI 开发框架的底层逻辑与架构思维。
二. AI 开发框架:LLM 应用落地的核心基石
AI 开发框架,是智能时代的操作系统,它连接着强大的大模型能力与复杂的现实业务场景,把底层复杂的技术细节封装成标准化、可复用的模块,让开发者无需从零造轮子,就能快速、稳定地构建企业级 AI 应用。
2.1 框架的核心设计原则
无论是 Java 生态的 Spring、C++ 生态的 libcurl,还是 AI 生态的 LangChain,所有优秀的框架都遵循两个核心设计原则,这也是我们理解框架的核心切入点:
2.1.1 抽象与封装
框架的核心价值,就是封装底层技术的复杂性,为开发者提供简洁、统一的抽象接口。

-
Spring 封装了 Java EE 开发的复杂性,开发者无需手动管理对象生命周期、处理繁琐的 Servlet API,就能快速开发 Web 应用;
-
libcurl 封装了 HTTP、FTP、SMTP 等网络协议的底层细节,开发者无需手写 Socket 代码构建请求,就能实现跨协议的网络通信;
-
LangChain 则封装了不同 LLM、向量数据库、外部工具的交互复杂性,开发者无需为每个厂商编写不同的 API 调用代码,通过统一接口就能实现模型切换、能力集成。

2.1.2 模块化与可组装性
优秀的框架会将完整的业务流程拆解为独立、可插拔的模块,开发者能像搭乐高积木一样,自由组合模块实现复杂的业务逻辑。
-
Spring 通过依赖注入 (DI) 和控制反转 (IoC) 容器,将应用拆分为可插拔的 Bean,能轻松替换不同的数据库、服务实现;
-
LangChain 的核心概念是 "链 (Chain)",它将 LLM、提示词模板、工具、记忆、输出解析器等模块标准化,能自由串联成完整的 NLP 工作流,实现从文档加载到问答生成的全流程。

2.2 主流 LLM 应用开发框架全生态解析
目前业界主流的 LLM 应用开发框架,按语言生态可分为四大类,不同生态有其明确的定位与适用场景,作为开发者,我们需要根据业务需求与技术栈做精准选型。
| 语言生态 | 主流框架 | 核心特点与优势 | 适用场景 |
|---|---|---|---|
| Python(绝对主流) | LangChain | 生态最丰富、灵活性极高,提供了最全面的组件(链、代理、检索器等),社区活跃,集成了数百种第三方工具与模型 | 几乎所有复杂 LLM 应用,尤其是需要高度定制化、集成第三方工具的场景,是绝大多数项目的首选 |
| LlamaIndex | 专注于 RAG 与数据连接,在文档索引、查询、检索方面性能优异,提供了从简单到高级的全量检索策略 | 以私有数据查询分析为核心的应用,如企业知识库、文档智能问答、数据增强聊天机器人 | |
| JavaScript/TypeScript | LangChain.js | Python 版 LangChain 的官方 JS/TS 移植版本,API 高度对齐,支持绝大多数核心功能 | 全栈开发、浏览器扩展、Edge Runtime、Next.js 等现代 Web 框架集成 |
| LlamaIndex.TS | LlamaIndex 的 TypeScript 版本,专注于 TS 生态的 RAG 应用开发 | 在 Next.js、Nuxt 等全栈框架中构建 RAG 应用 | |
| Java | LangChain4j | 受 LangChain 启发的 JVM 框架,API 设计符合 Java 开发习惯,社区驱动 | 将 LLM 能力集成到现有 Java 企业应用、微服务、大型后端系统中 |
| Spring AI | Spring 官方项目,与 Spring 生态无缝集成,提供统一 API 与数据抽象,生产就绪特性极强 | 所有基于 Spring Boot 的项目,尤其是企业级生产系统,追求稳定性与框架原生集成 | |
| Spring AI Alibaba | Spring AI 的阿里云官方扩展项目,深度集成通义千问等阿里云模型服务 | 深度依赖阿里云生态的 Spring 项目,需要高效调用通义千问、结合阿里云云服务的场景 | |
| C++ | llama.cpp | 纯 C/C++ 编写的高性能 LLM 推理框架,以极致性能、极低内存需求(量化支持)闻名,是消费级硬件运行大模型的核心基石 | 极致性能要求、离线运行、资源受限环境(嵌入式、移动端)的模型推理部署,常作为底层推理引擎被上层应用调用 |
重点解析:C++ 生态在 LLM 技术栈中的核心定位
很多开发者会疑惑,为什么 C++ 在 LLM 全栈框架领域相对缺失?这背后是技术架构的天然分工:
-
开发效率与迭代需求不匹配:LLM 应用开发目前仍处于高度实验性、快速迭代的阶段,Python/JS 等动态语言能快速修改逻辑、验证效果,而 C++ 作为静态编译语言,编译周期长、修改成本高,与敏捷开发的需求背道而驰。
-
生态重心的本质差异:LLM 应用开发极度依赖第三方库与云服务集成,Python 生态拥有机器学习、数据处理、Web 开发、向量数据库的全量库支持,而 C++ 的传统优势领域在系统编程、游戏开发、高频交易、嵌入式开发,Web 与云服务集成能力远不如 Python 完善。
-
天然的技术分工模式 :现代 LLM 应用架构普遍采用 \\ "Python/Java 负责应用层业务逻辑,C++ 负责底层推理性能优化"\\ 的分工模式。llama.cpp 就是最典型的案例,它用 C++ 实现了极致的模型推理性能,上层应用通过 API 调用它的能力,完美结合了 C++ 的性能优势与 Python 的开发效率。
2.3 框架选型的核心逻辑
框架没有绝对的优劣,只有是否适合业务场景,选型时只需遵循三个核心原则:
-
优先匹配团队技术栈:选择团队最熟悉的语言生态,最大化降低学习与落地成本;
-
精准匹配业务需求:研究型项目优先 Python LangChain,RAG 核心场景优先 LlamaIndex,Spring 企业应用优先 Spring AI,嵌入式推理优先 C++ llama.cpp;
-
关注社区与生态活跃度:Python 与 JS 生态的框架更新最快、社区最活跃,遇到问题能快速找到解决方案,是绝大多数入门与企业级项目的首选。
三. LangChain:LLM 应用开发的通用标准框架
LangChain 是目前业界最主流、生态最完善的 LLM 应用开发框架,它彻底解决了原生 LLM 嵌入业务应用的所有核心痛点,让企业级 AI 应用的开发从 "手工作坊" 模式,进入了 "标准化、工程化" 的时代。
3.1 原生 LLM 嵌入业务的六大核心痛点
我们以智能医疗咨询助手为例,就能清晰看到直接调用原生 LLM 接口,会遇到哪些无法回避的业务痛点:
痛点 1:幻觉频发,输出内容不可控
用户咨询 "三岁孩子吞下纽扣电池该怎么办",原生 LLM 可能会给出 "多喝水、吃香蕉让电池自然排出" 的致命错误建议。这就是 LLM 的幻觉问题 ------ 模型会基于训练数据生成看似合理、实则完全错误的内容,在生产环境中会造成不可预估的风险。

痛点 2:提示词规范缺失,应用行为不可预测
同一个医疗问答功能,工程师 A 写的提示词是 "你是一个医生,请回答以下医学问题",工程师 B 写的是 "基于最新医学知识,用通俗语言解释以下症状,不要给出确诊诊断"。提示词的质量与风格直接决定输出结果,没有统一规范会导致应用行为不可预测、难以调试,更无法规模化优化效果。

痛点 3:模型切换成本极高,代码与厂商强耦合
项目初期用 GPT-3.5 Turbo 做原型开发,后期想要切换到 GPT-5、通义千问或开源的 Llama 3,会发现不同厂商的 API 接口、输入输出格式、参数名称完全不同,切换模型几乎等于重写所有与 LLM 交互的代码,严重阻碍了技术选型的灵活性。

痛点 4:非结构化输出,无法与程序接口交互
应用需要将模型分析的 "可能疾病" 结果,结构化地展示在前端 UI 列表中,但原生 LLM 只会输出自然语言文本,程序无法直接提取 "疾病名称""可信度" 等核心字段,必须编写复杂脆弱的正则表达式,或额外调用模型做二次解析,极大增加了系统复杂度与出错概率。

痛点 5:知识滞后,无法获取实时信息
用户询问 "奥密克戎 XBB.1.5 变种最新加强针效果如何",主流大模型的训练数据有固定截止日期,对截止后的最新研究、变异株情况一无所知,要么拒绝回答,要么基于过时信息给出错误答案,完全无法满足医疗、金融等对信息实时性要求极高的场景。

痛点 6:无法连接外部工具,专业能力受限
用户问 "布洛芬和阿司匹林可以同时吃吗",这是专业的药物相互作用问题,模型的内在知识可能不准确。理想的流程是模型识别任务类型,调用权威的药物相互作用 API,基于返回的结构化数据给出答案,但原生 LLM 无法自发、可靠地完成工具调用与结果解析。

3.2 LangChain 如何系统性解决这些痛点
针对上述六大核心痛点,LangChain 提供了全链路的解决方案,这也是它成为业界标准的核心原因:
-
解决幻觉问题:内置完整的检索增强生成(RAG)全流程组件,强制模型在回答前先从权威、实时的知识库中检索信息,而非仅凭记忆生成答案;同时通过智能体(Agent)框架,让模型自主推导、验证答案,大幅降低幻觉概率。
-
解决提示词规范问题:提供提示词模板(Prompt Templates)组件,支持动态生成输入内容,统一管理提示词结构、少样本示例与输出策略,让应用的提示词规范可复用、可优化、可规模化管理。
-
解决模型切换问题:通过抽象化的统一接口,支持所有主流大语言模型与嵌入模型,开发者只需修改配置文件,无需改动业务代码,就能实现不同模型厂商、开源 / 闭源模型的无缝切换,彻底解耦业务代码与模型 API。
-
解决结构化输出问题:内置多种输出解析器,能强制模型以 JSON、XML 等格式输出,自动将模型输出解析为预定义的 Pydantic 对象,100% 保证输出格式合规,无需额外编写后处理代码,可直接与程序接口交互。
-
解决知识滞后问题:通过 RAG 系统注入实时、外部的私有知识与公开信息,同时内置搜索引擎工具集成,让模型能实时检索互联网上的最新数据,彻底突破训练数据截止日期的限制。
-
解决外部工具连接问题:内置数百种第三方工具的集成,同时提供标准化的工具调用接口,让 LLM 能作为 "大脑",根据用户请求自主规划步骤、选择工具、执行任务,完成多步骤的复杂业务流程。


3.3 LangChain 的核心技术特点与组件体系
LangChain 的设计精髓,在于以链式(Chain)的方式整合多个标准化组件,让开发者能自由组合、串联模块,一次性执行完整的 NLP 工作流,无需单独管理每个组件的执行逻辑。
它的核心组件体系包括六大模块,覆盖了 LLM 应用开发的全流程:
-
统一的模型调用层
抽象了所有主流 LLM 与嵌入模型的接口,无论是 OpenAI、Anthropic 的闭源模型,还是 Llama、Qwen 的开源本地模型,都能通过同一套代码调用,实现灵活的模型切换与对比。
-
灵活的提示词管理
提供提示词模板、少样本提示、动态参数注入等能力,让开发者能标准化管理提示词,无需在代码中硬编码提示内容,提升代码可维护性。
-
可组合的任务链(Chains)
允许将多个步骤串联成完整的业务流程,比如 "先检索文档→填充提示词模板→调用 LLM→解析输出结果",只需一次调用就能执行完整链,实现复杂任务的标准化编排。
-
上下文记忆机制(Memory)
用于存储多轮对话的状态信息,实现连贯的多轮交互体验,目前该能力已由 LangGraph 做更完善的支持,适配长时间运行的有状态任务。
-
检索与向量存储集成
兼容所有主流向量数据库(FAISS、Pinecone、Chroma、Milvus 等),提供了文档加载、文本分割、向量化、存储、检索的全流程组件,几行代码就能搭建企业级 RAG 系统。
-
工具调用与智能体(Agent)
提供了标准化的工具定义、调用、结果解析能力,内置 ReAct 等智能体框架,让 LLM 能自主规划任务、调用外部工具、处理中间结果,完成多步骤的复杂业务任务。


3.4 LangChain 的发展历程
LangChain 由 Harrison Chase 于 2022 年 10 月开源发布,从诞生之初就精准命中了 LLM 应用开发的核心痛点,迅速成为业界标杆:
-
2023 年:成立 LangChain 公司,完成数千万美元融资,推出 JS/TS 版本支持,将生态扩展到全栈开发领域;
-
2024 年 1 月:发布 0.1.0 稳定版本,架构重大调整,拆分出 langchain-core 核心库与 langchain-community 社区集成库,提升了模块化程度,同时推出 LangChain 表达式语言 (LCEL);
-
2024 年中:推出 LangGraph 实验性功能,从链式架构向图式架构扩展,解决复杂工作流编排问题;
-
2025 年 9 月:发布 1.x Alpha 内测版,统一了主流 LLM 的现代功能接口,新增预构建的 LangGraph 链与代理,进一步缩小核心包范围,专注核心抽象能力。


四. LangGraph:复杂 AI 工作流与智能体的图式编排利器
随着 AI 应用从简单的问答机器人,向复杂的多轮客服工单、多智能体协作、长时间运行的业务流程演进,LangChain 的链式架构逐渐显现出局限性。而 LangGraph,正是 LangChain 团队为了解决复杂工作流编排问题,推出的图式架构框架。
4.1 LangChain 链式架构的核心局限性
LangChain 的线性链式结构,非常适合简单的、预先定义好的线性任务,但面对需要循环、分支、人工介入、长期状态维护的复杂场景,会变得极其笨拙,甚至无法实现。
我们以 AI 客服工单处理系统为例,一个完整的工单处理流程是这样的:
Plain
用户提交工单 → 判断用户意图(退货/咨询/投诉) → 收集必要信息 → 信息验证与处理 → 复杂场景人工介入 → 生成总结关闭工单

用传统的线性链式结构实现这个流程,会遇到四个无法回避的核心问题:
-
无法处理循环与分支逻辑
在 "信息收集" 阶段,如果用户提供的订单号不完整,链式流程是单向的,无法自动 "跳回" 上一步重新请求用户补充信息,只能让整个链执行失败,无法实现 "信息不完整就持续询问" 的循环逻辑。
-
状态维护极其困难
客服工单对话通常是多轮的,可能持续几小时甚至几天,而传统的链是 "无状态" 的,每次调用都是全新的执行过程。状态管理的重担完全落在开发者身上,需要手动通过数据库、缓存存储对话状态,代码会变得极其臃肿、脆弱。
-
无法无缝融入人工介入
当 AI 无法处理复杂投诉、高风险场景时,需要转交给人工客服。在链式流程中,这意味着链的执行直接中断,无法实现 "暂停 AI 流程→等待人工处理→恢复执行后续步骤" 的无缝衔接,整个流程会断裂成 AI 和人工两个独立部分,需要额外开发大量的通知、状态同步、流程触发代码。
-
流程僵化,无法动态路由
不同的用户意图需要完全不同的子流程,比如 "投诉" 和 "产品咨询" 的处理路径天差地别。在链式结构中,只能通过大量的 if-else 语句调用不同的子链,流程图的逻辑变成了代码中的控制流,难以设计、调试、可视化,后期维护成本极高。

4.2 LangGraph 的设计理念与痛点解决
LangGraph 是 LangChain 团队于 2024 年推出的图结构、状态化的编排框架,它的核心设计理念是将应用逻辑建模为有向图,用节点表示操作 / 状态,用边表示节点之间的转移与数据流,彻底突破了线性链式结构的局限。
它并非要取代 LangChain,而是对 LangChain 的扩展与补充。LangGraph 底层大量复用了 LangChain 的模型接口、工具、提示词等核心组件,开发者可以在 LangGraph 的节点中直接使用 LangChain 的链或代理作为子流程,二者是互补关系:
-
简单的线性任务,LangChain 的链式结构足够高效、简洁;
-
需要复杂控制流、长期状态、多智能体、人工介入的场景,LangGraph 提供了更强大、更灵活的支持。

4.3 LangGraph 的核心技术特性
相比 LangChain 的链式架构,LangGraph 的图式架构带来了六大颠覆性的核心特性,完美解决了复杂工作流的编排痛点:
-
原生支持循环与分支
LangGraph 中的节点可以连接到任何其他节点,包括自身。可以轻松为 "信息收集" 节点设置自循环,只要信息不完整,就自动回到该节点重新执行,直到满足条件为止,无需编写复杂的 if-else 语句。
-
动态路由与条件边
通过条件边,能根据当前状态的值,动态决定下一个执行的节点。比如在 "意图分类" 节点后,根据分类结果,自动路由到 "退货处理""咨询处理""投诉处理" 等不同的子图中,业务逻辑清晰可见,无需硬编码在代码里。
-
内置全局状态自动管理
LangGraph 有一个核心的全局状态对象,在整个图的执行过程中自动持久化、传递。每个节点都可以读取和修改这个状态,用户的对话历史、已收集的信息、流程决策点都会自动保留,无需开发者手动维护状态存储,轻松支持长时间运行的任务。
-
无缝支持人机协作(Human-in-the-loop)
可以在图执行的任何节点设置暂停点,等待人工检查、修改状态、补充信息后,再继续执行后续流程。完美实现 "AI 处理→人工审核→AI 继续执行" 的业务闭环,无需拆分流程,保持了工作流的完整性与可管理性。
-
持久化执行与故障恢复
内置 Checkpoint(检查点)机制,能定期保存图的执行状态,当程序出现故障、重启后,能自动从上次中断的地方恢复执行,不会丢失中间结果,完全满足生产环境长时间运行的稳定性要求。
-
完善的调试与可观测性
与 LangSmith 深度集成,提供了可视化的执行路径追踪、状态转换捕获、运行时指标监控,能深入洞察复杂智能体的行为,极大降低了复杂工作流的调试难度。

4.4 LangGraph 的发展历程
-
2024 年初:作为 LangChain 0.1.0 版本的一部分,以实验性功能发布,标志着 LangChain 从链式架构向图式架构的扩展;
-
2024 年中:开始独立演进,建立专属的代码仓库与文档,发布 0.2.x 版本,引入 Checkpoint 检查点机制,支持故障恢复与状态持久化;
-
2024 年底:发布 0.3.x 版本,增强异步执行、并发支持,完善类型定义与错误处理;
-
2025 年中:发布 0.6 版本,启动 v1.0 路线图,发展出完善的 Python 与 JS/TS 双语言实现,推出 LangGraph Platform 配套产品,用于复杂代理应用的部署与运维。

五. 实战落地:从 0 到 1 构建 LangChain 与 LangGraph 基础应用(先见一见)
理论的最终价值在于落地,本节我们将通过两个实战案例,带你从零实现 LangChain 的基础对话链,以及 LangGraph 的简单循环工作流,并对代码做逐行深度解析。
5.1 环境准备
首先安装项目所需的核心依赖,执行以下 pip 命令:
bash
# 安装LangChain核心库、OpenAI集成、LangGraph框架
pip install langchain langchain-openai langgraph python-dotenv
5.2 LangChain 实战:基础提示词链实现
我们将实现一个最经典的 LangChain 应用:标准化的医疗咨询提示词链,通过提示词模板 + LLM 调用的链式执行,实现规范、可控的医疗问答输出。
完整代码实现
python
# 1. 导入核心依赖
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from dotenv import load_dotenv
import os
# 2. 加载环境变量,读取OpenAI API Key
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
# 3. 初始化组件:提示词模板、LLM模型、输出解析器
# 3.1 定义标准化提示词模板,统一医疗问答的提示规范
prompt_template = ChatPromptTemplate.from_messages([
("system", "你是一名专业的医疗咨询助手,必须遵循以下规则:\n"
"1. 仅提供通用健康信息,不得替代专业医疗诊断、治疗建议\n"
"2. 回答必须严谨,对于不确定的内容,明确告知用户咨询专业医生\n"
"3. 语言通俗易懂,避免使用过于专业的医学术语\n"
"4. 任何情况下,都必须先声明免责提示"),
("human", "用户问题:{user_question}")
])
# 3.2 初始化LLM模型,通过统一接口调用,后续可无缝切换其他模型
llm = ChatOpenAI(
model="gpt-3.5-turbo",
api_key=api_key,
temperature=0.3 # 温度值越低,输出越严谨、稳定
)
# 3.3 初始化字符串输出解析器,提取模型输出的文本内容
output_parser = StrOutputParser()
# 4. 构建执行链:提示词模板 → LLM调用 → 输出解析
# LangChain的链式调用,用 | 符号实现组件的串联,一次性执行全流程
chain = prompt_template | llm | output_parser
# 5. 调用链,传入用户问题,获取最终结果
if __name__ == "__main__":
user_question = "布洛芬和阿司匹林可以同时吃吗?"
result = chain.invoke({"user_question": user_question})
print("AI回答:\n", result)
代码逐行深度解析
-
依赖导入
-
ChatPromptTemplate:LangChain 核心的提示词模板类,用于构建标准化、可动态传参的提示词; -
ChatOpenAI:OpenAI 模型的 LangChain 封装类,实现了 LangChain 统一的 LLM 接口; -
StrOutputParser:字符串输出解析器,用于提取模型返回的纯文本内容,过滤掉无关的元数据; -
dotenv:用于从.env 文件中读取 API Key,避免硬编码密钥,符合企业级安全规范。
-
-
提示词模板定义
我们将医疗问答的系统提示词、用户输入做了标准化拆分,通过
{user_question}占位符实现动态参数注入。这样做的好处是:提示词规范统一管理,业务代码与提示内容解耦,后续优化提示词无需修改业务逻辑。 -
LLM 模型初始化
这里我们通过 LangChain 的统一接口初始化了 OpenAI 模型,后续如果想要切换到通义千问、DeepSeek 等其他模型,只需替换这个初始化类,无需修改后续的链执行代码,完美解决了模型切换的耦合问题。
-
链式构建与执行
我们用
|符号将三个组件串联成了一个完整的执行链,这是 LangChain 表达式语言 (LCEL) 的核心语法。当调用chain.invoke()时,会自动按顺序执行:-
用用户输入填充提示词模板,生成完整的 prompt;
-
将 prompt 传入 LLM 模型,获取模型响应;
-
通过输出解析器,提取纯文本回答,返回给用户。
-
5.3 LangGraph 实战:信息收集循环工作流
我们将实现一个客服工单信息收集的循环工作流,演示 LangGraph 的核心能力:循环执行、条件判断、全局状态管理,实现 "用户信息不完整,就持续询问,直到信息完整" 的业务逻辑。
完整代码实现
python
# 1. 导入核心依赖
from typing import TypedDict, Annotated
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage
from dotenv import load_dotenv
import os
# 2. 加载环境变量
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
# 3. 定义全局状态类型:LangGraph的核心,整个图执行过程中自动传递、持久化
class WorkflowState(TypedDict):
# 用户输入的原始问题
user_input: str
# 已收集的用户信息:字典存储订单号、问题描述等
collected_info: dict
# 信息是否完整的标志位,用于条件边判断
info_complete: bool
# AI生成的回复内容
assistant_reply: str
# 4. 初始化LLM模型
llm = ChatOpenAI(
model="gpt-3.5-turbo",
api_key=api_key,
temperature=0.2
)
# 5. 定义节点1:信息收集节点 - 核心执行逻辑
def info_collection_node(state: WorkflowState) -> WorkflowState:
"""
信息收集节点:检查已收集的信息,若不完整则询问用户补充
"""
# 从全局状态中读取数据
user_input = state["user_input"]
collected_info = state.get("collected_info", {})
info_complete = state.get("info_complete", False)
# 系统提示词:定义需要收集的必填信息
system_prompt = """
你是电商客服工单处理助手,需要收集用户退货申请的必填信息:
1. 订单号(必须是数字组成的10位编号)
2. 退货原因
3. 商品是否已拆封
请检查用户已提供的信息,若有缺失,礼貌地询问用户补充缺失的内容;
若所有信息都已收集完整,告知用户信息已收集完成,正在处理退货申请。
"""
# 构建对话消息
messages = [
SystemMessage(content=system_prompt),
HumanMessage(content=f"用户输入:{user_input}\n已收集信息:{collected_info}")
]
# 调用LLM生成回复
response = llm.invoke(messages)
reply_content = response.content
# 简单的信息完整性校验逻辑(生产环境可替换为更严谨的正则/规则校验)
required_fields = ["订单号", "退货原因", "商品是否已拆封"]
all_fields_collected = all(field in collected_info for field in required_fields)
# 更新全局状态
return {
**state,
"assistant_reply": reply_content,
"info_complete": all_fields_collected
}
# 6. 定义条件边逻辑:判断流程走向
def decide_next_step(state: WorkflowState) -> str:
"""
条件路由函数:根据信息是否完整,决定下一步走向
若信息完整,走向END,结束流程;否则,回到信息收集节点,继续循环
"""
if state["info_complete"]:
return END
else:
return "info_collection"
# 7. 构建StateGraph状态图
# 7.1 初始化图,传入我们定义的状态类型
workflow = StateGraph(WorkflowState)
# 7.2 向图中添加节点:节点名称 + 节点执行函数
workflow.add_node("info_collection", info_collection_node)
# 7.3 设置图的入口点:流程开始时,先执行哪个节点
workflow.set_entry_point("info_collection")
# 7.4 添加条件边:从info_collection节点出发,根据条件函数决定下一步
workflow.add_conditional_edges(
source="info_collection", # 边的起点节点
path=decide_next_step, # 条件判断函数
)
# 7.5 编译图,生成可执行的应用
app = workflow.compile()
# 8. 执行工作流,测试效果
if __name__ == "__main__":
# 第一次执行:用户只提供了部分信息
initial_state = {
"user_input": "我要申请退货,买的衣服不合适",
"collected_info": {"退货原因": "衣服尺码不合适"},
"info_complete": False
}
# 运行图,获取结果
result = app.invoke(initial_state)
print("第一次执行AI回复:\n", result["assistant_reply"])
print("信息是否完整:", result["info_complete"])
print("-" * 50)
# 第二次执行:用户补充了所有必填信息
full_state = {
"user_input": "我要申请退货,买的衣服不合适",
"collected_info": {
"订单号": "1234567890",
"退货原因": "衣服尺码不合适",
"商品是否已拆封": "已拆封,仅试穿"
},
"info_complete": False
}
full_result = app.invoke(full_state)
print("第二次执行AI回复:\n", full_result["assistant_reply"])
print("信息是否完整:", full_result["info_complete"])
代码核心逻辑解析
-
全局状态定义
我们通过
TypedDict定义了WorkflowState状态类型,这是 LangGraph 的核心。整个图的执行过程中,这个状态对象会自动在节点之间传递、持久化,每个节点都可以读取和修改它,无需开发者手动管理状态存储。 -
节点函数设计
info_collection_node是图的核心执行节点,它接收当前的全局状态,执行信息收集、LLM 调用、完整性校验逻辑,最终返回更新后的状态。这是 LangGraph 的核心设计思想:每个节点只负责处理自己的业务逻辑,通过修改全局状态传递数据。 -
条件边与循环逻辑
decide_next_step是条件路由函数,它根据状态中的info_complete标志位,决定流程的走向:-
若信息完整,返回
END,结束流程; -
若信息不完整,返回节点名称
info_collection,让流程回到该节点,重新执行,形成循环。
-
-
图的构建与执行
我们通过
StateGraph构建了完整的工作流,添加节点、设置入口点、添加条件边,最终通过compile\(\)编译成可执行的应用。调用app.invoke()时,LangGraph 会自动按照我们定义的图结构执行流程,管理状态流转,实现循环逻辑。
六. 学习路径与职业成长:AI 时代开发者的核心竞争力
掌握 LangChain 与 LangGraph,不是简单的工具学习,而是对开发者思维模式的升级与职业竞争力的重塑。这里我们给出循序渐进的三步学习路径,以及掌握框架的核心价值。
6.1 三步学习路径,从入门到精通
-
LangChain 核心精通阶段
深入掌握 LangChain 的核心组件与设计思想,重点攻克:提示词模板、模型调用抽象、输出解析、链式编排、RAG 全流程、基础工具调用,能独立搭建简单的问答机器人、知识库应用。
-
LangGraph 进阶突破阶段
学习用 LangGraph 构建复杂、有状态的应用程序,重点掌握:状态管理、节点与边的设计、循环与条件路由、人机介入、多智能体协作、Checkpoint 持久化,能独立实现客服工单、多步骤业务流程等复杂应用。
-
项目实战与持续学习阶段
通过综合项目巩固知识,将两个框架结合落地到真实业务场景中,同时关注社区的版本迭代、最佳实践与生态扩展,形成自己的 AI 应用架构设计方法论。
6.2 掌握框架的核心价值
技术实现价值
AI 开发框架通过标准化的工具库与抽象机制,显著降低了企业级 AI 应用开发、部署、运维的复杂度。它让开发者无需从零处理模型适配、状态管理、工具集成、流程编排等底层问题,能专注于业务逻辑与产品创新,大幅提升 AI 应用的落地效率与稳定性。
个人成长价值
-
吸收行业最佳实践:框架凝聚了 LLM 应用领域专家的设计智慧与成熟方法,能帮助开发者快速掌握构建可靠 AI 系统的工程范式,避开落地过程中的各种坑。
-
培养系统架构思维:AI 应用开发是涵盖数据处理、模型调优、API 设计、业务编排、运维监控的全链路工程,理解框架的底层设计,能帮助开发者形成全链路的系统认知,提升架构设计与把控能力。
-
增强职业竞争力:熟练掌握 LangChain 与 LangGraph,已经成为 AI 工程师、大模型应用开发工程师的核心必备能力。在 AI 时代,能驾驭框架、用架构思维设计 AI 系统的开发者,才不会被 AI 工具淘汰,反而能借助 AI 工具实现个人能力的指数级放大。
结尾:
html
🍓 我是草莓熊 Lotso!若这篇技术干货帮你打通了学习中的卡点:
👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长
❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量
⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用
💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑
🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解
技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标!
结语:在 Vibe Coding 席卷开发圈的今天,我们必须清醒地认识到:AI 永远只是工具,而驾驭工具的核心,永远是开发者的架构思维、工程能力与对业务的深度理解。LangChain 与 LangGraph 的价值,从来不是简单的 API 封装,而是为我们提供了一套标准化、工程化的 AI 应用开发范式,让我们能从 "调 API、写提示词" 的手工作坊模式,升级为 "架构设计、模块化编排、工程化落地" 的企业级开发模式。最终,"框架思维" 驾驭 "Vibe 工具",才是 AI 时代开发者最强的核心竞争力**。未来,能被 AI 取代的,从来不是会写代码的开发者,而是不会用 AI 工具、没有架构思维的开发者。希望本文能帮你建立 LangChain 与 LangGraph 的完整认知,在 AI 时代的技术变革中,把握先机,持续成长。**
✨把这些内容吃透超牛的!放松下吧✨ ʕ˘ᴥ˘ʔ づきらど
