必学收藏!LangChain与LangGraph大模型应用开发指南:从入门到智能客服实战
第一部分:LangChain 完全指南
一、LangChain 是什么?
1.1 一句话解释
LangChain:大模型应用的"乐高积木"
它帮你做好了:
- 连接各种 AI 模型
- 处理提示词模板
- 管理对话记忆
- 连接外部工具
- 处理文档做 RAG
1.2 生动比喻:乐高积木
| 传统LLM开发 | LangChain |
|---|---|
| 像手工雕刻 | 像乐高积木 |
| 每个项目从头开始 | 提供标准化组件 |
| 处理各种底层细节 | 快速组合成复杂应用 |
| 重复劳动,效率低下 | 可复用、可扩展 |
二、LangChain 整体架构
2.1 架构图
┌─────────────────────────────────────────────────────────────────┐
│ LangChain 架构 │
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Models │ │Prompts │ │ Output │ │ Chains │ │
│ │ 模型层 │ │ 提示词 │ │ 解析器 │ │ 链 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │ │
│ └────────────┼────────────┼────────────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ LCEL │ ← 管道语法,用 | 连接 │
│ └──────┬──────┘ │
│ │ │
│ ┌─────────┐ ┌────┴────┐ ┌─────────┐ ┌─────────┐ │
│ │ Agents │ │ Memory │ │ Tools │ │ Indexes │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────────────────────────┘
三、LangChain 组件详解
3.1 Models(模型层)
作用:统一调用各种 AI 模型
不用 Models 的问题
不同模型 API 各不相同,换模型要重写代码:
# OpenAIimport"gpt-4"# DeepSeekimport"deepseek-chat"# 每换一个模型,代码都要改!
用 Models 的好处
一次代码,随意切换模型:
fromimport# 切换模型只需要改这一行!"deepseek-chat"# model = init_chat_model("gpt-4o")"你好"
3.2 Prompts(提示词)
作用:模板化提示词
不用 Prompts 的问题
每次调用都要写完整提示词:
# 重复代码"你是一个医生,请回答:发烧怎么办""你是一个医生,请回答:咳嗽怎么办"
用 Prompts 的好处
模板化,一次定义,重复使用:
fromimport"你是一个{role},请回答关于{topic}的问题""role""医生""topic""发烧"
3.3 Output Parsers(输出解析)
作用:把 AI 输出变成结构化数据
不用 Output Parsers 的问题
需要手动解析字符串:
"返回JSON"# 返回:"{"fruit": "苹果", "color": "红色"}"# 要自己解析!
用 Output Parsers 的好处
自动解析成结构化数据:
fromimportfromimportclass水果BaseModelstrstrprint# 直接访问!
3.4 Chains(链)
作用:把多个组件串起来
fromimportfromimportfromimport"用一句话概括:{topic}""deepseek-chat""topic""AI"
3.5 Agents(代理)
作用:能自主决策和执行工具
不用 Agents 的问题
模型只会回答,不会做事:
"北京天气怎么样?"# 回答:抱歉我不知道(因为模型训练数据是过去的)
用 Agents 的好处
自主判断并调用工具:
fromimportfromimport@tooldefget_weathercity: strstr"""获取城市天气"""returnf"{city}今天晴天,25℃""deepseek-chat""你是一个助手""messages""role""user""content""北京天气怎么样?"# 自动调用工具!
3.6 Tools(工具)
作用:给 AI 增加超能力
fromimport@tooldefquery_orderorder_id: strstr"""查订单""""12345""已发货"return"未找到"
3.7 Memory(记忆)
作用:让 AI 记住对话历史
fromimport"chat_history"True"我叫小明""messages""role""user""content""我叫什么?"# 回答:小明!
3.8 Indexes(RAG)
作用:让 AI 读取自己的文档
fromimportfromimportfromimport"公司政策.txt"
3.9 Callbacks(回调)
作用:监控调试
import"LANGSMITH_TRACING""true""LANGSMITH_API_KEY""your-key"
四、LangChain 智能客服实战
fromimportfromimportfromimport@tooldefquery_orderorder_id: str"12345""已发货""12346""处理中"return"未找到"@tooldefcreate_returnorder_id: str, reason: strreturnf"已提交退货,订单{order_id}""chat_history"True"deepseek-chat""你是电商客服""messages""role""user""content""查订单12345"
第二部分:LangGraph 完全指南
五、LangGraph 是什么?
5.1 一句话解释
LangGraph:复杂工作流的"交通控制系统"
5.2 生动比喻:城市交通系统
| 简单链式调用 | LangGraph |
|---|---|
| 像单行道 | 像智能交通系统 |
| 只能单向顺序执行 | 管理多条路径和交叉口 |
| 没有分支,没有回头路 | 处理拥堵和动态调整路线 |
| 遇到问题只能停下 | 有条件跳转、循环执行 |
单行道(简单链式调用):
A → B → C → D
智能交通系统(LangGraph):
A
↙ ↘
B C
↓ ↘
D → E
六、LangGraph 整体架构
6.1 架构图
┌─────────────────────────────────────────────────────────────────┐
│ LangGraph 架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Graph (图) │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ StateGraph (状态图) │ │ │
│ │ │ │ │ │
│ │ │ ┌─────────┐ │ │ │
│ │ │ │ Node │ ← 节点(工作流中的一个步骤) │ │ │
│ │ │ └─────────┘ │ │ │
│ │ │ ↓ ↑ │ │ │
│ │ │ ┌─────────┐ │ │ │
│ │ │ │ Edge │ ← 边(连接步骤) │ │ │
│ │ │ └─────────┘ │ │ │
│ │ │ ↓ │ │ │
│ │ │ ┌─────────────────────────────────────────┐ │ │ │
│ │ │ │ Conditional Edge (条件边) │ │ │
│ │ │ │ 根据状态选择不同分支 │ │ │
│ │ │ └─────────────────────────────────────────┘ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Checkpointer (检查点) │ │
│ │ 持久化状态,支持断点续传 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Runnable (可运行对象) │ │
│ │ invoke() / stream() / batch() │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
6.2 核心组件关系
┌────────────────────────────────────────────────────────────────┐
│ LangGraph 核心组件 │
├────────────────────────────────────────────────────────────────┤
│ │
│ StateGraph ─────┬───────────────────────────────────── │
│ (状态图) │ │
│ │ 管理 │
│ ▼ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ State(状态) │ │
│ │ • 整个工作流共享的数据 │ │
│ │ • 包含 messages、order_id、step 等 │ │
│ └──────────────────────────────────────────────────────┘ │
│ ↑ ↑ ↑ ↑ │
│ │ │ │ │ │
│ ┌────┴───┐ ┌────┴───┐ ┌────┴───┐ ┌────┴───┐ │
│ │ Node A │ │ Node B │ │ Node C │ │ Node D │ │
│ │ 接收 │ │ 识别 │ │ 处理 │ │ 结束 │ │
│ └────────┘ └────────┘ └────────┘ └────────┘ │
│ │ │ │ │
│ └───────────┴───────────┘ │
│ ↓ │
│ ┌────────────┐ │
│ │ Edge │ ← 普通边 / 条件边 │
│ └────────────┘ │
│ │
│ Checkpointer(持久化)← 保存/恢复状态 │
│ │
└────────────────────────────────────────────────────────────────┘
七、LangGraph 核心概念详解
7.1 Graph vs StateGraph vs MessageGraph
| 类 | 说明 | 适用场景 |
|---|---|---|
| Graph | 通用图 | 任意工作流 |
| StateGraph | 带状态的图 | 最常用! |
| MessageGraph | 消息图 | 对话场景 |
# Graph - 通用fromimport# StateGraph - 带状态(最常用)fromimportfromimportclassStateTypedDictlist# MessageGraph - 对话专用fromimport
7.2 State(状态)- ★★★★★
作用:整个工作流共享的数据
不用 State 的问题
无法在多个步骤之间传递数据:
# 简单链式调用defstep1return"order_id""12345"defstep2# 不知道 order_id!return"status""已发货"# 每一步是独立的,无法共享数据
用 State 的好处
所有节点共享同一个状态:
fromimport# 定义状态class客服状态TypedDictlist# 对话历史str# 订单号(跨步骤共享!)bool# 订单是否验证str# 当前步骤# 节点都可以读写这些数据def查询订单state"order_id"# 读取return"status""已发货"# 写入def验证订单state"order_id""12345"return"verified"# 更新状态
State 的多种定义方式
# 方式一:TypedDict(推荐)class客服状态TypedDictliststr# 方式二:Annotated(自动追加消息)fromimportfromimportclass对话状态TypedDictlist# 自动追加!
7.3 Node(节点)- ★★★★★
作用:工作流中的每一个步骤
不用 Node 的问题
无法精确控制每一步:
# 简单调用# 只能顺序执行,无法暂停、分支
用 Node 的好处
每个步骤独立,可精确控制:
fromimportclassStateTypedDictint# 定义多个节点def接收消息state"""节点1:接收用户消息"""return"step""received"def意图识别state"""节点2:识别用户意图""""messages"1if"退货"inreturn"step""退货"return"step""其他"def处理退货state"""节点3:处理退货"""return"messages""好的,请提供订单号"# 添加节点"receive""classify""handle_return"
7.4 Edge(边)- ★★★★★
作用:连接节点,决定执行顺序
不用 Edge 的问题
只能顺序执行:
# 简单链式# 只能是 A → B → C
用 Edge 的好处
灵活控制流程:
fromimport# 入口"receive"# 普通边:固定顺序"receive""classify""handle_return"# 条件边:根据状态选择分支def路由函数statereturn"step""classify""退货""handle_return""其他"
7.5 Conditional Edge(条件边)- ★★★★★
作用:根据状态动态选择下一步
不用 Conditional Edge 的问题
无法处理分支:
# 简单链:总是执行相同的路径# 用户问"退货" → 回答退货# 用户问"订单" → 还是回答退货(错误!)
用 Conditional Edge 的好处
根据情况走不同分支:
def路由函数state"""根据当前状态返回下一步""""messages"1if"退货"inor"退款"inreturn"退货流程"elif"订单"inor"快递"inreturn"订单流程"elsereturn"一般问题"# 条件边:根据意图分流"classify"# 从意图识别节点# 判断函数"退货流程""handle_return"# 退货 → 处理退货"订单流程""handle_order"# 订单 → 处理订单"一般问题""handle_general"# 其他 → 一般问题
7.6 Entry Point(入口)
作用:工作流从哪里开始
fromimport# 默认入口"receive"# 等价于"receive"
7.7 End(结束)
作用:工作流在哪里结束
fromimport# 结束"handle_return"# 多个结束点"success""failure"
7.8 Checkpointer(持久化)- ★★★★☆
作用:保存和恢复状态,支持断点续传
不用 Checkpointer 的问题
每次对话都是全新开始:
# 问题:无法记住之前的状态"我要退货"# 下次再调用,Agent 不记得上次的"退货"意图了
用 Checkpointer 的好处
记住状态,断点续传:
fromimport# 创建检查点# 编译时启用compile# 第一次对话"configurable""thread_id""customer_001""messages""role""user""content""我要退货"# 第二次对话(状态自动恢复!)"messages""role""user""content""订单12345"# 自动记得上次是"退货"流程!
八、LangGraph 智能客服实战
8.1 完整代码
fromimportfromimportfromimport# ==================== 1. 定义状态 ====================class客服状态TypedDict"""客服系统状态 - 所有节点共享"""list# 对话历史str# 订单号bool# 订单是否验证str# 当前步骤# ==================== 2. 定义节点 ====================defreceivestate"""节点1:接收消息"""return"step""received"defclassifystate"""节点2:意图识别""""messages"1if"退货"inor"退款"inreturn"step""退货流程"elif"订单"inor"快递"inreturn"step""订单流程"return"step""一般问题"defhandle_returnstate"""节点3:处理退货"""return"messages""messages""role""ai""content""好的,请问您的订单号是多少?"defhandle_orderstate"""节点4:处理订单"""return"messages""messages""role""ai""content""请问要查询的订单号是?"defhandle_generalstate"""节点5:一般问题"""return"messages""messages""role""ai""content""这个问题让我查一下...满99元免运费,7天无理由退货"defendstate"""节点6:结束对话"""return"messages""messages""role""ai""content""感谢咨询,再见!""step""completed"# ==================== 3. 构建图 ====================# 添加节点"receive""classify""handle_return""handle_order""handle_general""end"# 设置入口"receive"# 连接节点"receive""classify"# 条件边:根据意图分流defroutestatereturn"step""classify""退货流程""handle_return""订单流程""handle_order""一般问题""handle_general"# 普通边:处理完到结束"handle_return""end""handle_order""end""handle_general""end"# 结束"end"# ==================== 4. 编译(启用持久化)====================compile# ==================== 5. 运行 ====================if"__main__""configurable""thread_id""customer_001""messages""role""user""content""我要退货""order_id""""verified"False"step"""print"="50forin"messages"printf"{msg['role']}: {msg['content']}"
8.2 执行流程图
用户:我要退货
│
▼
┌───────────────────┐
│ receive (接收) │ ← 接收消息,step="received"
└────────┬──────────┘
│
▼
┌───────────────────┐
│ classify (识别) │ ← 意图识别,step="退货流程"
└────────┬──────────┘
│
▼
┌────┴────┐
│ 条件边 │
│ route() │
└────┬────┘
│
┌────┴──────────┐
│ │
▼ ▼
┌─────────┐ ┌────────────┐
│ handle │ │ handle │
│ return │ │ general │
│ (退货) │ │ (其他) │
└────┬────┘ └─────┬──────┘
│ │
└──────┬───────┘
▼
┌──────────┐
│ end (结束)│
└────┬─────┘
│
▼
END
第三部分:对比与总结
九、LangChain vs LangGraph
9.1 区别
| 对比项 | LangChain | LangGraph |
|---|---|---|
| 定位 | 快速构建 AI 应用 | 复杂工作流编排 |
| 复杂度 | 简单,10行代码 | 较复杂 |
| 流程 | 线性、固定 | 可分支、可循环 |
| 状态 | 基本无状态 | 有状态 |
| 持久化 | Memory | Checkpointer |
9.2 选型建议
用 LangChain:
- 刚入门,想快速做出原型
- 需求简单(问答、单一工具调用)
- 只需要 RAG
用 LangGraph:
- 需要复杂多轮对话
- 流程有分支
- 需要人工介入
- 需要断点续传
- 生产环境
9.3 关键结论
✅ LangChain 1.0+ 的 Agent 是基于 LangGraph 运行时构建的。
❌ 但 LangChain ≠ LangGraph:
- LangChain 是一个完整的 LLM 应用开发框架
- LangGraph 是其内部用于复杂工作流编排的底层引擎
🔗 两者关系:
- LangChain 提供高层 API 和组件生态
- LangGraph 提供底层执行能力
十、学习路径
第1步:LangChain 基础
- Models + Prompts(调用 LLM)
- Chains
第2步:LangChain 进阶
- Tools + Agents
- Memory
- Indexes(RAG)
第3步:复杂需求 → LangGraph
- StateGraph + State
- Node + Edge
- Conditional Edge
- Checkpointer
总结
| 技术 | 比喻 | 一句话 |
|---|---|---|
| LangChain | 乐高积木 | 快速构建 AI 应用 |
| LangGraph | 交通系统 | 复杂流程编排 |
最后唠两句
为什么AI大模型成为越来越多程序员转行就业、升职加薪的首选
很简单,这些岗位缺人且高薪
智联招聘的最新数据给出了最直观的印证:2025年2月,AI领域求职人数同比增幅突破200% ,远超其他行业平均水平;整个人工智能行业的求职增速达到33.4%,位居各行业榜首,其中人工智能工程师岗位的求职热度更是飙升69.6%。

AI产业的快速扩张,也让人才供需矛盾愈发突出。麦肯锡报告明确预测,到2030年中国AI专业人才需求将达600万人,人才缺口可能高达400万人,这一缺口不仅存在于核心技术领域,更蔓延至产业应用的各个环节。
那0基础普通人如何学习大模型 ?
深耕科技一线十二载,亲历技术浪潮变迁。我见证那些率先拥抱AI的同行,如何建立起效率与薪资的代际优势。如今,我将积累的大模型面试真题、独家资料、技术报告与实战路线系统整理,分享于此,为你扫清学习困惑,共赴AI时代新程。
我整理出这套 AI 大模型突围资料包【允许白嫖】:
-
✅从入门到精通的全套视频教程
-
✅AI大模型学习路线图(0基础到项目实战仅需90天)
-
✅大模型书籍与技术文档PDF
-
✅各大厂大模型面试题目详解
-
✅640套AI大模型报告合集
-
✅大模型入门实战训练
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

①从入门到精通的全套视频教程
包含提示词工程、RAG、Agent等技术点

② AI大模型学习路线图(0基础到项目实战仅需90天)
全过程AI大模型学习路线

③学习电子书籍和技术文档
市面上的大模型书籍确实太多了,这些是我精选出来的

④各大厂大模型面试题目详解

⑤640套AI大模型报告合集

⑥大模型入门实战训练

如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!
应届毕业生:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能 突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
👉获取方式:
有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)