首页 › AI Agent › Agent100道面试题 › 框架选型-frameworks/ › LangGraph 的核心概念:节点、边、状态

LangGraph 的核心概念:节点、边、状态

难度:基础 分类:Frameworks​

简短回答​

LangGraph 是 LangChain 生态中专门用于构建有状态、可恢复(durable)的多步骤 Agent 工作流的框架,于 2025 年 10 月 22 日发布 1.0 GA,成为 durable agent(持久化 Agent)框架领域首个稳定版本,月 PyPI 下载量超 3800 万(2026),被称为"Agent 编排的 React"。1.0 GA 之后,2026 Q2 更新进一步补齐生产级能力:per-node 超时(逐节点设置执行时限,防止单步卡死拖垮整图)、v2 streaming(新一代结构化流式输出,配合 DeltaChannel 实现增量推送);LangChain 侧也同步重构,聚焦核心 agent loop 并引入 middleware(中间件)概念,便于统一拦截、改写请求与响应。其核心思想是将 Agent 的执行流程建模为一个有向图(Graph),包含三个基本构建块:(1) State(状态)——图的共享记忆,是一个 TypedDict,所有节点通过读写 State 来传递信息,支持 Reducer 函数自定义状态合并逻辑(如消息列表追加而非覆盖);(2) Node(节点)——图中的"工作单元",每个节点是一个 Python 函数,接收当前 State 并返回 State 更新(可以是 LLM 调用、工具执行、条件判断等任何操作);(3) Edge(边)——连接节点的"路由器",分为普通边(固定路由)和条件边(基于 State 动态路由,实现分支逻辑)。LangGraph 还提供 Checkpointer(检查点) 实现状态持久化,支持 Human-in-the-Loop(interrupt() 暂停等待人工审批)、错误恢复、长时间任务。执行模型是"超步骤(Super-step)"——每个超步骤中并行执行所有就绪节点,然后同步 State,直到到达 END 节点。​

详细解析​

核心架构图​

​

飞书文档 - 图片

​

LangGraph 把 Agent 建成图:节点读写共享 State,条件边决定循环还是终止,Checkpointer 让图可暂停、可恢复。​

State:图的共享记忆​

​

代码块​

Python

from typing import Annotated, TypedDict​

from langgraph.graph import StateGraph, START, END​

from langgraph.graph.message import add_messages​

from langchain_core.messages import BaseMessage​

​

# 定义 State:所有节点共享的数据结构​

class AgentState(TypedDict):​

# Annotated + add_messages = Reducer 模式​

​

Node:图中的工作单元​

​

代码块​

Python

from langchain_openai import ChatOpenAI​

from langchain_core.messages import HumanMessage, AIMessage​

​

llm = ChatOpenAI(model="gpt-4o")​

​

# 节点 1:调用 LLM​

def call_llm(state: AgentState) -> dict:​

"""每个节点接收 State,返回 State 更新"""​

response = llm.invoke(state["messages"])​

# 返回的字典会与当前 State 合并​

return {"messages": [response]}​

​

# 节点 2:执行工具​

def execute_tools(state: AgentState) -> dict:​

​

Edge:连接节点的路由器​

​

代码块​

Python

​

Checkpointer:状态持久化与 Human-in-the-Loop​

​

代码块​

Python

​

1.0 GA 与 2026 生产化新特性​

LangGraph 1.0 GA(2025-10-22)的标志性意义在于把"durable agent"从实验概念确立为生产标准——凭借 Checkpointer 持久化 + 超步骤执行模型,Agent 进程可在任意超步骤崩溃后从最近检查点恢复,长时任务不再依赖进程常驻。2026 Q2 更新围绕"生产可控性"补齐了三块关键能力:​

​

#dKTWhnIbOuNk text{white-space:pre}.fb0{stroke:var(--N900-FG, 0.15)}.fx0{stroke-miterlimit:10}.fa1{fill:#bbbfc4}.fx1{font:normal 400 12px MonospacedNumber,LarkHackSafariFont,LarkEmojiFont,LarkChineseQuote,-apple-system,BlinkMacSystemFont,Helvetica Neue,Tahoma,PingFang SC,Microsoft Yahei,Arial,Hiragino Sans GB,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.fx2{text-anchor:middle}.fx3{dominant-baseline:central}.fx4{stroke:none}.fc0{fill:var(--text-caption)}.fa2{fill:var(--text-link-disabled)}.fx5{font:400 normal 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}.fx6{text-anchor:start}.fx7{dominant-baseline:alphabetic}.fc1{fill:rgb(0, 0, 0)}.fx8{font:400 normal 13px LarkHackSafariFont, LarkEmojiFont, "ui-monospace", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, "Noto Sans", Tahoma, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", STHeiti, SimHei, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", system-ui}.fb1{fill:var(--N900-FG, 0.15)}.fb2{fill:rgb(209, 217, 224)}.fa3{fill:var(--bg-body)}ABC1234特性per-node 超时v2 streamingmiddleware(中间件)解决的问题单个节点(如一次外部 API 调用、一段 LLM 推理)卡死会拖垮整图旧版 streaming 只能拿到最终结果或粗粒度 token 流,难以按结构化事件增量消费横切逻辑(日志、鉴权、改写请求/响应)散落在各节点难以维护要点在节点粒度声明执行时限,超时自动中断并触发重试或错误分支,与 、 组合形成分级容错新一代流式接口按节点输出粒度增量推送,配合 DeltaChannel 只下发状态变更部分(delta),降低流式场景的带宽和延迟LangChain 侧引入 middleware 概念,统一拦截 agent loop 的请求与响应,便于插拔可观测、限流、审计等横切关注点retry_policyinterrupt()

​

​

选型提示:1.0 GA 之前,"超时""流式增量""横切拦截"这些生产刚需大多要手写 wrapper 绕行;1.0 GA + 2026 Q2 后已转为框架一等能力,自研编排层前应先核对 LangGraph 是否已覆盖,避免重复造轮子。​

​

完整 ReAct Agent 示例​

​

代码块​

Python

# LangChain 1.0 GA(2025-10):推荐 langchain.agents.create_agent​

# langgraph.prebuilt.create_react_agent 已 deprecated​

from langchain.agents import create_agent​

from langgraph.checkpoint.memory import MemorySaver​

from langchain_openai import ChatOpenAI​

from langchain_core.tools import tool​

​

@tool​

def get_weather(city: str) -> str:​

"""获取城市天气"""​

return f"{city}:晴天,25°C"​

​

@tool​

def search_flights(origin: str, destination: str) -> str:​

"""搜索航班"""​

return f"{origin}→{destination}:找到 3 个航班"​

​

​

常见误区 / 面试追问​

误区:"LangGraph 就是 LangChain 的升级版" — LangGraph 不是 LangChain 的替代品,而是补充。LangChain 处理单步链式调用(Prompt → LLM → Parser),LangGraph 处理多步有状态工作流(循环、分支、人工审核)。简单任务用 LangChain,复杂 Agent 用 LangGraph。​

误区:"State 就是全局变量" — State 不是可变的全局变量。节点不能直接修改 State,只能返回更新字典,由框架通过 Reducer 合并。这种设计保证了状态变更的可追踪性和一致性。​

追问:"LangGraph 的执行模型是什么?" — "超步骤(Super-step)"模型:每个超步骤中,所有没有未满足依赖的节点并行执行,执行完毕后同步 State,然后进入下一个超步骤。这类似于 Pregel 图计算模型(Google 的大规模图处理框架)。​

追问:"LangGraph 如何处理错误?" — 三层错误处理:(1) 节点内 try/catch 处理预期错误;(2) Checkpointer 支持从失败点重试(不丢失已完成步骤);(3) Graph 级别的 retry_policy 配置自动重试策略。结合 interrupt() 还可以在错误时暂停并请求人工介入。1.0 GA 后还可在节点粒度配 per-node 超时,单步卡死时自动中断并走重试/错误分支,避免拖垮整图。​

追问:"什么是 durable agent?LangGraph 为什么适合生产部署?" — Durable agent 指 Agent 执行状态可持久化、崩溃后可从检查点恢复、长时任务不依赖进程常驻。LangGraph 靠 Checkpointer(每完成一个超步骤就落盘状态)实现这一点,2026 Q2 又补齐了 per-node 超时(防单步卡死)和 v2 streaming / DeltaChannel(增量流式输出)。这也是它月下载量超 3800 万、成为 durable agent 框架首个 GA 版本的核心原因。面试可顺势对比:纯内存编排(如裸 ReAct 循环)一旦进程退出则全部状态丢失,生产场景必须上 durable 化方案。​