定制日期:2026-11-10 | 针对环境:Windows 10 + Git Bash + i7-8550U/16GB/无独显 姊妹篇(概念详解与代码示例):LangGraph(Agent 编排).md 总时长:6 周,每天 1.5-2 小时(每天都能看到可运行成果,无枯坐读文档环节)
〇、学习前 10 分钟决策(开始前必须定好的三件事)
决策 1:模型供给 ✅ 已定:硅基流动(SiliconFlow),key 已验证可用(2026-11-10)
| 方案 | 成本 | 用法 | 建议 |
|---|---|---|---|
| 硅基流动 API(主力) | key 已验证;Qwen3.5-4B/9B 等小模型极便宜(部分免费,以官网价格页为准) | langchain-openai + base_url(见下方模板) |
全程主力:学习用小模型,验收换 DeepSeek |
| 本地 Ollama + qwen3:1.7b | 0 元 | langchain-ollama 备用 |
断网/限额/想省钱时的应急备份 |
已完成的配置(2026-11-10):
- 环境变量已写入:SILICONFLOW_API_KEY(新开终端生效)
- ⚠️ 该 key 曾在对话中明文出现,尽快到硅基流动后台「API 密钥」重置一个新 key,然后只改环境变量一处
- 推荐模型(先看官网价格页选便宜的):学习用 Qwen/Qwen3.5-4B;质量验收用 deepseek-ai/DeepSeek-V3.2 或 zai-org/GLM-5.3
接入代码模板(学习文档中所有示例统一改用这个写法):
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="Qwen/Qwen3.5-4B", # 学习用;验收时换 deepseek-ai/DeepSeek-V3.2
api_key=os.environ["SILICONFLOW_API_KEY"],
base_url="https://api.siliconflow.cn/v1",
temperature=0,
)
# 用法:create_agent(model=llm, tools=..., ...);自定义图里直接 llm.invoke(...)
注意:硅基流动是 OpenAI 兼容协议,所以不需要
init_chat_model("deepseek-chat")这种写法,直接传llm实例即可。
决策 2:开发工具
- 编辑器:VS Code + Python 扩展 + LangGraph Studio 插件(
langgraph-cli[inmem]自带,看图执行是学习加速器) - Python:3.11+(
python --version确认;没有就用winget install Python.Python.3.12) - 笔记:每学完一节,在
doc/学习笔记/LangGraph/下写一篇"我学到了什么+踩了什么坑"(费曼式输出,第 6 周回看会发现自己进步惊人)
决策 3:成功标准(6 周后你应该能)
- 白板手写一个带条件边和检查点的状态图
- 给 Agent 加"危险操作人工审批"并演示断点续跑
- 搭出 Supervisor 双智能体协作
- 交付一个真实可用的知识库问答 Agent(第 5-6 周实战)
一、阶段 0:环境搭建(第 1 天,约 1 小时)
# 1. 项目目录(在 E 盘,空间充足)
mkdir -p /e/zcode/DeepTraining/langgraph-learn && cd /e/zcode/DeepTraining/langgraph-learn
# 2. 虚拟环境(隔离依赖)
python -m venv .venv
source .venv/Scripts/activate # Git Bash 写法;cmd 用 .venv\Scripts\activate.bat
# 3. 安装全家桶(清华镜像加速)
pip install -U langgraph langchain langchain-openai langchain-ollama \
"langgraph-cli[inmem]" -i https://pypi.tuna.tsinghua.edu.cn/simple
# 4. 本地模型(备用,约 1.2GB,下载后断网也能跑;不急可跳过)
ollama pull qwen3:1.7b
# 5. 环境变量(key 不进代码!)——已于 2026-11-10 配置硅基流动 key
setx SILICONFLOW_API_KEY "你的key" # 新开终端生效
# 6. 验证安装 + 验证 key(新开终端后执行)
python -c "import langgraph; print(langgraph.__version__)"
curl -s https://api.siliconflow.cn/v1/models -H "Authorization: Bearer $SILICONFLOW_API_KEY" | head -c 200
✅ 过关检查点 0:langgraph dev 能启动并在浏览器打开 Studio 空白页;ollama run qwen3:1.7b 能对话。
坑速查:Git Bash 激活 venv 用
source .venv/Scripts/activate;langgraph dev默认端口 2024,防火墙拦截就放行。
二、阶段 1(第 1 周):建立"图"的心智模型
本周目标:彻底理解 State → Node → Edge → Reducer 四件套。所有练习用 Ollama(不耗赠金)。
Day 1:跑通第一个工具 Agent(高层 API)
- 读:官方文档
create_agent一节(15 分钟) - 做:跑 姊妹篇第九节示例 A,模型按「决策 1」的硅基流动模板接入(
ChatOpenAI+ base_url),然后改 3 次:①换model="Qwen/Qwen3.5-4B"↔"deepseek-ai/DeepSeek-V3.2"观察工具调用差异 ②加第二个工具 ③改 system_prompt 观察行为变化 - 改示例比看示例重要 10 倍——每改一次都要预测输出再对照
Day 2:手写最小 StateGraph(低层 API)
# 练习:不查资料,写出"写诗 → 审诗 → 通过/重写"的图
# 状态:messages + draft(当前诗) + revisions(重写次数)
# 节点:poet(写) / critic(审) ;条件边:revisions >= 3 或 critic 通过 → END
卡住就看文档 Low Level: StateGraph 一节,但先尝试 20 分钟再看。
Day 3:Reducer 深挖
- 实验:把
Annotated[list, add_messages]改成普通list,让两个节点都返回 messages,观察覆盖 vs 追加的差异(这是最多人栽的坑) - 做一个自定义 reducer:
def merge_dicts(a, b): return {**a, **b}
Day 4:条件边 + 循环
- 练习:ReAct 风格循环(agent ⇄ tools)自己手写一遍(不要用 create_agent!)——这是理解 Agent 本质的必经之路
- 工具随便造两个:
@tool def get_weather(city)、@tool def calculator(expr)
Day 5:Streaming 四种模式
- 对同一个图分别用
values / updates / messages / custom四种stream_mode打印,用纸笔记下每种输出的形状差异
Day 6-7:小测 + 笔记
- 综合练习:写一个"数学解题 Agent":解析题目 → 判断是否需要计算器 → 循环调用 → 最终给答案。要求:手写 StateGraph、至少 1 个自定义 Reducer、2 个工具、条件边循环
- 写第 1 篇学习笔记
✅ 过关检查点 1(自测): - [ ] 能说清"为什么 Agent 是图不是链"(用 30 秒讲给假想的新手听) - [ ] 不查资料写出带条件边的循环图 - [ ] 能解释 Reducer 为什么必须存在
三、阶段 2(第 2 周):生产级能力三件套
本周目标:Checkpointer(持久化)+ interrupt(人工审批)+ Send(并行)。从这周开始,你写的东西已经有企业级雏形。
Day 8:Checkpointer 与 thread_id
# 练习:给 Day7 的解题 Agent 加 SqliteSaver
from langgraph.checkpoint.sqlite import SqliteSaver
saver = SqliteSaver.from_conn_string("checkpoints.db")
graph = builder.compile(checkpointer=saver)
# 实验:① 同一 thread_id 连续对话→有记忆;② 换 thread_id→失忆;③ 中途 Ctrl+C 重跑→从存档恢复
Day 9-10:interrupt 人工审批(本框架的灵魂)
- 跑姊妹篇示例 B(转账审批),然后升级:审批人可以选择 批准 / 拒绝 / 修改金额 三种 resume
- 练习:给解题 Agent 加规则——"计算结果 > 1000 时必须人工确认"
Day 11:Send 并行(Map-Reduce)
# 练习:给 10 篇短文并行做摘要再汇总
from langgraph.types import Send
def fan_out(state):
return [Send("summarize", {"article": a}) for a in state["articles"]]
# summarize 是一个节点,Reducer 合并 10 份摘要,最后一个节点汇总成报告
Day 12:Subgraph 子图
- 把 Day 7 的解题图改造成子图,外面套一个"路由图":数学题走解题子图,闲聊走直接回复节点
Day 13:时间旅行调试
- 用
graph.get_state_history(cfg)列出历史检查点,挑一个旧状态invoke(None, config)重跑——体验"回到过去改决策"
Day 14:小测 + 笔记
- 综合练习:"报销审批流水线":读发票(模拟 OCR 数据)→ 金额校验 → 超过 500 元 interrupt 人工审批 → 通过则记账(更新状态字典)。要求 SqliteSaver 持久化 + 三种审批结果
- 写第 2 篇笔记
✅ 过关检查点 2: - [ ] 能演示"杀掉进程后从检查点恢复" - [ ] 能解释 interrupt 为什么要配 checkpointer - [ ] 能写出并行 fan-out/fan-in 图
四、阶段 3(第 3 周):多智能体与生态打通
本周目标:Supervisor/Swarm 模式 + MCP 工具接入 + deepagents 模板。本周起用 DeepSeek API(质量要求上来了)。
Day 15-16:Supervisor(主管分派模式)
- 官方教程
multi-agent supervisor跟写一遍:主管 + 研究员 + 写手 - 改造:把研究员换成"知识库检索员"(接一个假知识库字典)
Day 17:Swarm(移交模式)
- 跑官方 swarm 教程:模拟"售前客服 → 售后客服 → 人工"的转接链
- 对比两种模式的适用场景,写进笔记(一句话:能明确分工用 Supervisor,要"转接"用 Swarm)
Day 18:MCP 接入
- 用
langchain-mcp-adapters把一个现成 MCP server(如 filesystem)接进你的 Agent - 这一步让你同时踩中两个市场最高频关键词(LangGraph + MCP)
Day 19-20:deepagents 模板
- 跑通 https://github.com/langchain-ai/deep-agents 的最小示例,读它的结构:规划节点 + 子代理 + 虚拟文件系统——这就是第 5 周投研项目的骨架
Day 21:Middleware + 小测
- 给 Agent 加自定义 middleware:所有输出先过敏感词替换再返回
- 写第 3 篇笔记
✅ 过关检查点 3: - [ ] 能搭 Supervisor 双专家协作并说清何时用 Swarm - [ ] 能把任一 MCP server 接进 Agent - [ ] 能解释 deepagents 的规划-执行结构
五、阶段 4(第 4-6 周):实战项目(三选一,必选其一)
学而不产 = 白学。项目直接对应你的变现路线(长远价值项目低配计算机.md)。
项目 A:企业知识库问答 Agent(★推荐,对应 S1 项目骨架)
- Week 4:LlamaIndex + Chroma + bge-small 建中文索引;Agent 加"检索→不够好自动改写重查→给答案"循环
- Week 5:加权限(interrupt:涉及敏感文档时人工放行)+ SqliteSaver 多租户 + Streamlit 前端
- Week 6:自建 30 题评测集(promptfoo 跑分),给出准确率数字——这是与 90% 撸库存学习者的差距所在
- 交付物:
langgraph dev可演示 + 一页 README(架构图+评测数字)
项目 B:票据处理流水线(对应 S2 的 Agent 化)
- Week 4:RapidOCR 识别 → 字段校验 Agent(结构化输出)
- Week 5:异常单据 interrupt 人工复核 + Send 批量并行 + 断点续跑演示
- Week 6:Web 界面 + 实测 100 张真实票据的准确率
项目 C:企微客服 Agent(对应 S3)
- Week 4:Swarm 三角色(欢迎/问答/转人工)+ 知识库检索节点
- Week 5:企微 webhook 对接(测试号即可)
- Week 6:全流程演示视频 + 部署脚本
每周节奏:工作日每天 1.5h 推进 → 周末各 3h 攻关 → 每周日写周记(做了什么/卡在哪/怎么解决)。
✅ 过关检查点 4(毕业标准):你的项目能当着别人的面完整演示:提问 → 图执行(Studio 可见)→ 人工审批环节 → 断网重启后续跑 → 给出带溯源的答案。
六、学习方式总纲(比路线更重要)
- 改 > 跑 > 看:改别人的示例 10 分钟 > 跑通示例 30 分钟 > 看教程 1 小时。每接触新概念,必做"改动实验"并预测结果
- 先猜后看:卡住时强制自己先写 20 分钟再查文档——检索记忆比阅读记忆牢 3 倍
- Studio 当 debugger:
langgraph dev打开图视图,单步看状态流转;看不懂别人代码时先画成图 - LangSmith 看真相(免费额度):每次执行的完整 trace——模型实际收到什么 prompt、工具返回了什么。调试幻觉和工具调用失败全靠它
- 费曼笔记:每周一篇,格式固定:
这周学会了 X / 卡过 Y / 坑是 Z / 给一个月前的我一句忠告 - 绝不背 API:API 会变(1.0 就刚大改过),背的是思想:状态机、检查点、审批、并行模式——这些 5 年内不会过时
- 时间预算纪律:单日卡壳超过 40 分钟 → 记录问题 → 跳过 → 周末集中解决(避免"一行代码卡一晚"的经典时间黑洞)
七、资源清单(按使用顺序)
| 优先级 | 资源 | 用途 |
|---|---|---|
| ★★★ | 官方 Python 文档 | 主教材,教程区按 01→persistence→HITL→map-reduce→multi-agent 顺序做 |
| ★★★ | 官方示例仓库 | 每个概念的最小可运行代码 |
| ★★ | LangGraph Academy 免费视频课 | 通勤/吃饭时看,建立直觉 |
| ★★ | deep-agents 模板 | 第 3-4 周实战骨架 |
| ★ | LangChain 1.0 发布博客 | 了解 1.0 变化,避免旧教程误导 |
| ★ | 姊妹篇概念指南 | 卡壳时回来查概念与示例 |
八、自测清单(第 6 周末,全部能答 = 出师)
- 为什么要 Reducer?没有它并发节点会发生什么?
- interrupt() 和普通异常中断的区别?为什么必须配 checkpointer?
- Supervisor 和 Swarm 各适合什么场景?
- Send 解决什么问题?和"循环里逐个处理"差在哪?
- 你的知识库 Agent 里,哪三处用了 LangGraph 独有能力(链式框架做不到)?
- 如果模型 API 突然不可用,你的图会怎样?怎么设计降级?(加分题)
九、常见坑速查表(遇到就回来翻)
| 症状 | 原因 | 解法 |
|---|---|---|
interrupt 后 resume 报错 |
没配 checkpointer 或 thread_id 变了 | 图 compile 时加 checkpointer;resume 用同一 cfg |
| 并发节点状态丢失 | Reducer 缺失(默认覆盖) | 列表用 add_messages,字典自定义 merge |
| 多用户记忆串台 | thread_id 没按用户隔离 | 每用户唯一 thread_id |
| 工具没被调用 | 模型太弱或 prompt 没说"必须用工具" | 换 deepseek 验证;prompt 加硬性要求 |
| 旧教程代码报错 | 1.0 前 API(create_react_agent 等) | 对照 v1.0 变更 |
langgraph dev 打不开 |
端口 2024 被防火墙拦 | 放行或 --port 3000 |
| Ollama 模型不调用工具 | 小模型工具调用能力弱 | 学习期 qwen3:1.7b 够用;验收换 deepseek/qwen3:4b |
十、6 周后的去向(衔接你的价值主线)
学完 LangGraph ≠ 结束,是三岔口(对应 长期价值评估 Top50 排名): - 向 RAG 深挖:LlamaIndex + 评测(promptfoo)→ 补齐"企业 RAG 工程师"技能(Top3 技能) - 向底层深挖:读 llama.cpp 量化/GGUF → 补齐"私有化部署"技能(Top3 技能) - 直接接单:把第 4-6 周项目包装成案例,去代账公司/中小企业找第一单(MVP 2万-15万)
三岔口都通,先走哪个取决于你第 5 周实战项目选了 A/B/C。