AI开发基础:Langgraph框架从入门到实战开发智能体-附带完整可运行代码
LangGraph 实战教程:从小白到高手
一份让你真正学会用 LangGraph 构建 AI Agent 的实战指南
写在前面
如果你想用大语言模型(LLM)做点有意思的事情,比如做一个能自己查资料、能记住上下文、能调用各种工具的智能助手,那 LangGraph 绝对是你需要了解的东西。
这份教程不会堆砌一堆概念把你绕晕,而是用真实可运行的代码带你一步步搞懂这玩意儿到底怎么用。
直接可以运行的代码已经整理好了,需要的话找老师拿
第一章 LangGraph 是什么
一句话解释
LangGraph 就是用来编排 AI 工作流的框架,让你可以把复杂的 AI 任务拆成一个个小步骤,然后像搭积木一样把它们连起来。
为什么需要它?
假设你要做一个客服机器人:
- 先要判断用户问的是技术问题还是销售问题
- 技术问题交给技术 Agent 处理
- 销售问题交给销售 Agent 处理
- 如果答案质量不够好,还得循环改进
这种有分支、有循环、有状态的复杂流程,用普通代码写起来会很乱。LangGraph 就是专门解决这个问题的。
LangGraph vs LangChain
很多人搞不清这俩的关系:
| 特性 | LangChain | LangGraph |
|---|---|---|
| 定位 | 通用 LLM 工具库 | 工作流编排框架 |
| 流程 | 线性链条(A→B→C) | 图结构(支持分支、循环) |
| 状态 | 需要手动管理 | 自动管理 |
| 适合场景 | 简单的问答、RAG | 复杂的 Agent、多步骤任务 |
简单说:LangChain 是做零件的,LangGraph 是用这些零件搭建复杂系统的。
第二章 环境准备
安装依赖
1 | # 核心依赖 |
设置 API Key
1 | import os |
第三章 核心概念
LangGraph 就三个核心概念,搞懂了这三个,其他都是组合拳。
State 就是一个在所有节点间共享的数据结构。你可以把它想象成一个”快递包裹”,每经过一个节点,就往里面加点东西或者修改点东西。
1 | from typing_extensions import TypedDict |
Node 就是干活的。每个节点是一个 Python 函数,接收当前状态,返回需要更新的字段。
1 | def my_node(state: MyState): |
Edge 定义节点之间怎么连接,决定执行顺序。
1 | # 普通边:A 执行完必定执行 B |
第四章 第一个程序
让我们写一个最简单的计数器程序,理解状态是怎么流转的。
完整代码
1 | from langgraph.graph import StateGraph, START, END |
运行结果
1 | 执行历史: |
关键点
- 只返回需要更新的字段:节点不用返回完整的 state,只返回变化的部分
- 状态自动传递:每个节点执行完,更新后的状态自动传给下一个节点
- 必须编译:调用
compile()后才能运行
第五章 Reducer 机制
这是很多人一开始搞不明白的点:为什么有时候状态会被覆盖,有时候会累加?
答案就是 Reducer。
问题:状态被覆盖
默认情况下,每个节点返回的值会覆盖之前的值:
1 | class State(TypedDict): |
解决方案:使用 Reducer
1 | from typing import Annotated |
实际例子:游戏得分
1 | from langgraph.graph import StateGraph, START, END |
常用 Reducer
| Reducer | 作用 | 适用场景 |
|---|---|---|
| operator.add | 数值相加 | 计数、得分 |
| operator.add | 列表拼接 | 历史记录、消息列表 |
| add_messages | 消息智能合并 | 聊天历史 |
第六章 条件分支
真实的应用不可能一条路走到黑,肯定需要根据情况走不同的路。
关键函数:add_conditional_edges
1 | workflow.add_conditional_edges( |
实际例子:智能客服路由
1 | from langgraph.graph import StateGraph, START, END |
第七章 循环流程
有时候一次处理不够好,需要反复迭代优化。LangGraph 天然支持循环。
关键点
- 条件边可以指回前面的节点:形成循环
- 必须有退出条件:否则会无限循环
- 建议设置最大迭代次数:兜底保护
实际例子:答案优化器
1 | from langgraph.graph import StateGraph, START, END |
第八章 聊天机器人
做聊天机器人最头疼的是消息历史管理。LangGraph 提供了专门的工具来解决这个问题。
核心:MessagesState 和 add_messages
1 | from langgraph.graph import MessagesState |
add_messages 是一个智能 Reducer,它会:
- 自动追加新消息
- 处理消息 ID 去重
- 保持消息顺序
完整聊天机器人
1 | import os |
第九章 Agent 工具调用
Agent 和普通聊天机器人的区别是:Agent 能使用工具。
定义工具
使用 @tool 装饰器:
1 | from langchain_core.tools import tool |
工具定义要点
- 必须有 docstring:描述工具用途,AI 靠这个判断什么时候用
- 参数要有类型注解:让 AI 知道怎么传参
- Args 部分详细说明:每个参数是干什么的
第十章 ReAct Agent
ReAct = Reasoning + Acting,是目前最流行的 Agent 架构。
工作流程
- Thought:AI 思考需要做什么
- Action:选择并调用工具
- Observation:观察工具返回结果
- 重复:直到任务完成
使用预置组件
LangGraph 提供了现成的组件:
1 | from langgraph.prebuilt import create_react_agent, ToolNode |
手动实现 ReAct Agent
如果需要完全控制,可以手动实现:
1 | from langgraph.graph import StateGraph, START, END |
第十一章 多Agent协作
当任务复杂时,一个 Agent 搞不定,需要多个专业 Agent 配合。
Supervisor 模式
核心思想:一个 Supervisor 负责调度,多个专业 Agent 负责执行。
完整实现
1 | from langgraph.graph import StateGraph, START, END |
第十二章 实战项目
智能客服系统架构
把前面学的所有东西整合起来,做一个完整的智能客服系统:
- Supervisor 分析问题类型
- 技术支持 Agent 处理技术问题
- 销售顾问 Agent 处理产品咨询
- 账单专员 Agent 处理财务问题
- 每个 Agent 都有自己的专业工具
- 支持多轮对话和历史记忆
完整代码见附带的 langgraph_supervisor_1.py 文件。
第十三章 进阶话题
使用 checkpointer 保存对话状态:
1 | from langgraph.checkpoint.memory import MemorySaver |
实现打字机效果:
1 | # 方式1:使用 streaming=True 的模型 |
复杂系统可以拆成多个子图:
1 | # 定义子图 |
让人类参与决策:
1 | # 设置断点 |
1 | # 可视化图结构 |
最后更新: 2026年09月10日 11:10