你这门课的目标(从零版)
学完这个主题,你要达到的不是“看懂文档”,而是 4 件事:
- 能独立写出一个带工具调用的 LangChain agent。
- 能用 LangGraph 把 agent 改造成可分支、可循环、可恢复的状态图。
- 能把结果接到你后续 FastAPI/RAG 主题,形成可演示项目。
- 能在面试里讲清楚:为什么这样设计、哪里容易出故障、如何评估质量。
先把学习环境一次配好(Day0,约 40-60 分钟)
1) 建议环境
- Python: 3.11(推荐)
- 包管理:
venv 或 uv
- IDE:Cursor / VSCode
2) 最小安装
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install langchain langgraph langsmith python-dotenv
3) 环境变量(先占位)
# .env
OPENAI_API_KEY=xxx
# 若用其它模型,按官方文档设置相应 KEY
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=xxx
说明:你可以用任一兼容模型,课程重点在“编排与工程化”,不是绑定某个厂商。
从零认知图(先理解,不急写复杂代码)
| 层级 | 你要理解什么 | 你最终会产出什么 |
|---|
| L1 | LangChain 基础组件(messages/tools/runnables) | 一个可调用工具的最小 agent |
| L2 | LangGraph 状态机(nodes/edges/state) | 一个可分支、可循环的工作流 |
| L3 | 记忆与持久化(thread/checkpoint) | 可恢复会话的 agent |
| L4 | 观测与评估(trace/eval) | 一套“是否变好”的证据 |
| L5 | 项目化表达 | 简历可写 + 面试可讲 |
14 天冲刺计划(3h+ / 天)
第 1 阶段:打底(Day1-Day3)
Day1:LLM 调用与消息模型
- 学习目标:理解
System/Human/AI 消息格式与对话上下文。
- 任务:
- 跑通一次最小 LLM 调用。
- 做 3 次 prompt 对比(同问题不同 system 指令)。
- 验收:你能解释“为什么 system prompt 会稳定输出风格”。
- 学习目标:让模型调用函数,而不是只回答文本。
- 任务:
- 写 2 个工具:
get_weather(city)、search_notes(keyword)(先假数据)。
- 给工具加参数校验和报错信息。
- 验收:工具参数错误时,agent 能给出可读错误而不是崩溃。
Day3:Runnable/Chain 组合
- 学习目标:把多个步骤串起来(输入预处理 -> 调用 -> 输出格式化)。
- 任务:
- 用链式方式输出固定 JSON。
- 加入“失败重试 1 次”逻辑。
- 验收:同一输入多次运行,输出结构保持一致。
第 2 阶段:LangGraph 核心(Day4-Day8)
Day4:第一个 StateGraph
- 学习目标:理解
State、Node、Edge。
- 任务:
- 建 3 节点图:
analyze -> act -> respond。
- 增加一条条件边(是否需要调用工具)。
- 验收:你能在白板画出执行路径。
Day5:循环与终止条件
- 学习目标:防止死循环,明确何时停止。
- 任务:
- 增加
step_count 到 state。
- 设置最大步数 + 重复问题检测。
- 验收:任何输入都能在可控步数内结束。
Day6:Checkpoint 与 Thread(重点)
- 学习目标:理解为什么 LangGraph 能“记住会话并恢复”。
- 任务:
- 用内存 checkpointer 跑多轮对话(同
thread_id)。
- 观察状态如何跨轮次保留。
- 验收:重启一次调用后,仍可从同线程继续。
Day7:人机审批(Human-in-the-loop)
- 学习目标:高风险操作必须人工确认。
- 任务:
- 对“写文件/发送请求”等工具加审批节点。
- 审批拒绝时进入降级路径。
- 验收:审批拒绝后系统行为可预测,不乱调用工具。
Day8:子图与模块化
- 学习目标:把大图拆成可维护子图。
- 任务:
- 把“检索流程”拆成子图模块。
- 主图只负责路由与收口。
- 验收:改检索逻辑时不影响主流程其他节点。
第 3 阶段:工程化(Day9-Day12)
Day9:日志、Trace、可观测性
- 学习目标:每次请求都能追踪“做了什么、花了多久”。
- 任务:
- 接入 LangSmith tracing。
- 标记关键节点:检索、工具调用、最终回答。
- 验收:你能截图一条完整 trace,指出耗时瓶颈。
Day10:错误处理与降级
- 学习目标:API 超时、工具失败时系统不崩。
- 任务:
- 为工具加超时、重试、fallback。
- 统一异常映射(用户可读错误)。
- 验收:模拟工具失败时仍能返回兜底答案。
Day11:质量评估(最小评测集)
- 学习目标:建立“是否变好”的客观基线。
- 任务:
- 准备 20 条问题数据集(你简历与学习内容相关)。
- 记录命中率、幻觉率、平均延迟。
- 验收:改一版 prompt/graph 后能量化对比前后差异。
Day12:性能与成本控制
- 学习目标:学会控制 token 与延迟。
- 任务:
- 加对话摘要(历史压缩)。
- 统计每类问题的 token 消耗。
- 验收:在效果近似条件下,成本显著下降(你自己定阈值)。
第 4 阶段:项目与面试(Day13-Day14)
Day13:做一个可演示 Demo
建议做:学习助手 Agent(正好贴合你平台主题)
- 输入:学习目标(如“本周学 LangGraph + FastAPI”)
- 输出:学习任务拆分、资源推荐、每日复盘问题
- 能力:工具调用(读取本地笔记/搜索资料)、状态记忆、审批节点
Day14:简历与面试表达
- 写 1 段 STAR 项目描述(背景/任务/行动/结果)。
- 准备 10 个问答(见下方题库)。
- 目标:3 分钟讲清架构,10 分钟讲清 trade-off。
你每天 3h+ 的固定学习模板
- 第 1 小时:看官方文档(只看当天目标相关章节)
- 第 2 小时:跟着写最小代码(必须跑起来)
- 第 3 小时:做增强与记录(错误处理/日志/复盘)
- 额外时间:整理“今天能写进简历的 1 条产出”
每天必须交付的产物(防止假学习)
notes/dayX.md:今天学了什么、踩了什么坑、明天做什么。
demos/dayX/:至少一个可运行脚本。
screenshots/dayX/:关键运行图(尤其 trace)。
常见坑与规避(你一定会踩)
- 只看教程不写代码:当天必须有运行结果截图。
- 图太复杂,无法调试:先 3 节点,再逐步加。
- 没有终止条件:必须有
max_steps。
- 把所有逻辑塞一个节点:节点职责单一,便于追踪。
- 无评测就频繁改:先建立 20 条基线问题集。
面试高频题(强化版)
- LangChain 和 LangGraph 分别解决什么问题?
- 你为什么要用状态图而不是“while + if”手写流程?
- 如何设计 Agent 的终止条件?
- 如何做会话记忆与长期记忆分层?
- 工具调用失败时你如何降级?
- 你如何判断一次优化是“真的变好”?
- 如何在多轮对话中控制 token 成本?
- 人机协作审批节点放在哪些环节?
- 你如何防止 prompt 注入影响工具安全?
- 这个架构如何扩展到多 Agent?
可直接复用的项目验收标准
- 功能:能完成“理解问题 -> 调用工具 -> 给出结构化回答”。
- 稳定:异常场景(工具超时、参数错误)不崩溃。
- 可观测:至少有一条完整 trace。
- 可维护:节点职责清晰,支持增删模块。
- 可表达:你能画图讲清数据流与决策流。
详细资料索引(按优先级)
A 级(必看,官方)
B 级(辅助)
动画/架构学习建议(你提到“要动画和架构”)
- 优先看官方课程中的流程图与执行可视化章节。
- 你自己每学完一天都画一张“节点流转图”(哪怕手绘拍照),这是最有效的架构内化方式。
你今天就可以开始的第 1 天任务清单
做完后告诉我“Day1 完成”,我会按你项目实际进度继续给你 Day2 的代码级带练版(不是泛泛建议)。