LangGraph 学习笔记
LangGraph 学习笔记
什么是 LangGraph?
LangGraph 是 LangChain 团队推出的一个用于构建有状态、多步骤 LLM 应用的框架。它的核心思想是把 AI 应用的执行流程建模为一张有向图(DAG),节点是执行逻辑,边是状态流转路径。
相比传统的链式调用(LangChain Chain),LangGraph 最大的特点是支持循环(Cycle),这让构建 Agent 的”思考—行动—观察”循环成为可能。
用户输入 → [Agent节点] → 决策:调用工具 or 返回结果 |
核心概念
1. State(状态)
LangGraph 中所有节点共享一个全局的 State 对象,通常用 TypedDict 定义:
from typing import TypedDict, Annotated |
Annotated[list, add_messages] 表示这个字段在更新时是追加而不是覆盖,这对保留对话历史非常关键。
2. Node(节点)
节点就是普通的 Python 函数,接收 State,返回 State 的更新部分:
from langchain_openai import ChatOpenAI |
3. Edge(边)
边定义了节点之间的跳转逻辑:
- 普通边:
graph.add_edge("node_a", "node_b")— 无条件跳转 - 条件边:根据函数返回值决定下一个节点
def should_continue(state: AgentState) -> str: |
构建一个简单的 ReAct Agent
ReAct(Reasoning + Acting)是目前最经典的 Agent 模式,LangGraph 实现起来非常直观:
from langgraph.graph import StateGraph, END |
持久化与断点(Checkpointing)
LangGraph 内置了 Checkpointer 机制,可以保存图的执行状态,支持:
- 多轮对话的记忆保持
- 任务中断后恢复
- Human-in-the-loop 审批
from langgraph.checkpoint.memory import MemorySaver |
多 Agent 协作
LangGraph 支持构建多 Agent 系统,不同 Agent 负责不同职责:
用户 → [Supervisor Agent] |
每个子 Agent 本身也是一个 LangGraph 子图,通过 Supervisor 协调调度,形成层次化的 Agent 网络。
与 LangChain 的对比
| 特性 | LangChain Chain | LangGraph |
|---|---|---|
| 执行结构 | 线性链 | 有向图(支持循环) |
| 状态管理 | 手动传递 | 全局 State 自动管理 |
| Agent 支持 | 有限 | 原生支持复杂 Agent |
| 调试工具 | 基础 | LangSmith 深度集成 |
| 适用场景 | 简单流程 | 复杂多步骤任务 |
小结
LangGraph 是目前构建生产级 Agent 系统的最佳选择之一,核心优势在于:
- 状态管理清晰:TypedDict 定义的 State 让数据流一目了然
- 循环支持:真正实现了 Agent 的”感知—决策—行动”闭环
- 持久化内置:Checkpointer 让多轮对话和任务恢复变得简单
- 生态完整:与 LangChain、LangSmith 无缝集成
下一步计划深入研究 LangGraph 的 Human-in-the-Loop 机制和子图嵌套用法。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Mag1code's blog!



