文章目录

LangGraph 基本概念与编码思路详解

在 AI Agent、Multi-Agent、Workflow AI 快速发展的今天,越来越多开发者开始接触:

  • Agent Workflow
  • Tool Calling
  • 状态管理
  • 长链路推理
  • 多步骤决策

而在这些能力背后,LangChain 推出的 LangGraph 正在成为构建 Agent Workflow 的核心框架之一。

很多人第一次看到 LangGraph 会疑惑:

  • 为什么它叫 Graph?
  • 和普通链式调用(Chain)有什么区别?
  • State 是什么?
  • Node 怎么组织?
  • Conditional Edge 是什么?
  • Multi-Agent 为什么都在用 DAG / Graph?

这篇文章会从:

  • 基础概念
  • 核心架构
  • 编码思维
  • 状态流转
  • 条件路由
  • Agent Workflow
  • 实战代码

系统讲清楚 LangGraph 的核心设计思想。


一、什么是 LangGraph?

LangGraph 是一个:

基于 Graph(图)模型的 AI Workflow 编排框架。

它本质上解决的是:

LLM 多步骤任务如何组织?

例如:

用户问题
   ↓
意图识别
   ↓
工具调用
   ↓
RAG 检索
   ↓
LLM 推理
   ↓
结果校验
   ↓
输出

传统 Chain 难以处理:

  • 循环
  • 条件分支
  • 状态共享
  • 多 Agent 协作
  • 长生命周期 Workflow

因此 LangGraph 引入:

State + Node + Edge

形成真正的:

有向图工作流(Graph Workflow)

二、LangGraph 核心思想

LangGraph 的核心:

状态在图中流动

整个系统类似:

success

retry

User Input

Intent Node

Tool Node

LLM Node

Validation Node

END

这里:

概念 含义
Node 节点(执行逻辑)
Edge 边(执行路径)
State 全局共享状态
Conditional Edge 条件路由
START 起点
END 终点

三、为什么 LangGraph 比 Chain 更强?

传统 Chain:

A → B → C → D

本质是:

线性流程

而真实 AI Workflow 往往是:

A
├── B
├── C
└── D
     └── retry

例如:

  • Agent 失败重试
  • Tool 多轮调用
  • 动态决策
  • 多 Agent 协作
  • Planner / Executor 模式

这已经不是:

链(Chain)

而是:

图(Graph)

四、LangGraph 最核心的三个概念


1. State(状态)

State 是 LangGraph 的灵魂。

为什么需要 State?

因为 Agent Workflow 是:

多步骤共享上下文

例如:

{
    "question": "...",
    "documents": [...],
    "tool_result": "...",
    "final_answer": "..."
}

所有节点都操作同一个状态。


(补充解释)

在这里插入图片描述

1. 代码示例部分

JSON结构示例:

{
  "question": "...",
  "documents": [...],
  "tool_result": "...",
  "final_answer": "..."
}

这是一个共享状态对象的典型表示,包含:

  • question: 用户提出的问题
  • documents: 检索到的相关文档
  • tool_result: 工具执行的结果
  • final_answer: 最终生成的答案

这个JSON结构代表了系统在处理过程中需要维护和更新的全局状态

2. "所有节点都操作同一个状态"说明

明确指出"所有节点都操作同一个状态",这正是图片展示的核心概念。在分布式系统中,这意味着系统中的每个组件(节点)都基于同一个共享状态进行操作和更新,而不是各自维护独立的状态副本。

3. State 流转示意图分析

共享状态区域 (Shared State)
  • 位于图表上部,被明确标记为"Shared State"
  • 包含三个关键状态元素:questiondocumentsanswer
  • 这表示系统中所有组件都能访问和修改这些状态变量
处理流程
  • Input: 系统接收初始输入
  • Retriever: 检索组件,负责根据问题检索相关文档
    • 作用:填充documents字段
    • 与共享状态交互:从question获取信息,将结果写入documents
  • LLM: 大型语言模型组件
    • 作用:基于问题和文档生成答案
    • 与共享状态交互:读取questiondocuments,生成并写入answer
  • Validator: 验证组件
    • 作用:验证生成的答案是否符合要求
    • 与共享状态交互:读取answer进行验证

4. 系统架构意义

这种设计体现了"所有节点都操作同一个状态"的核心思想:

  • 状态一致性:所有组件操作的是同一个状态对象,避免了数据不一致问题
  • 流程协同:组件间通过共享状态进行通信,而不是直接传递数据
  • 可扩展性:可以轻松添加新组件,只要它们遵循访问和更新共享状态的规则
  • 容错性:如果某个组件失败,其他组件仍可以基于最新状态继续工作

5. 实际应用场景

这种架构常见于:

  • RAG(检索增强生成)系统:如图片所示,Retriever检索文档,LLM生成回答
  • 多步骤处理流程:需要多个组件协作完成复杂任务的系统
  • 对话系统:维护对话历史和上下文状态

总结

这张图片清晰地展示了在分布式处理系统中,如何通过共享状态机制确保所有处理节点操作同一数据视图。与传统分布式系统不同,这里不是多个独立节点维护相同数据的副本,而是所有组件共同操作一个单一的、集中的状态对象。这种设计使系统更加简洁、一致,特别适合需要多步骤处理的AI应用,如基于LLM的问答系统。

State 流转示意图

Shared State

question

documents

answer

Input

Retriever

LLM

Validator


State 通常怎么定义?

最常见:

from typing import TypedDict

class AgentState(TypedDict):
    question: str
    documents: list
    answer: str

LangGraph 中:

节点输入 = State
节点输出 = State 更新

2. Node(节点)

Node 是:

执行逻辑单元

例如:

  • LLM 调用
  • Tool 调用
  • RAG 检索
  • 数据处理
  • Agent 推理

Node 的本质

Node 就是:

def node(state):
    ...
    return updated_state

例如:

def retrieve_node(state):
    docs = retriever.invoke(state["question"])

    return {
        "documents": docs
    }

3. Edge(边)

Edge 决定:

节点之间如何流转

例如:

Retriever

LLM

Validator


五、Conditional Edge(条件边)

这是 LangGraph 最重要能力之一。

AI Workflow 本质上:

不是固定路径

而是:

动态决策路径

示例:Agent 是否继续调用 Tool?

need_tool

final_answer

LLM Decision

Tool Node

END


编码方式

def router(state):
    if state["need_tool"]:
        return "tool_node"

    return "end"

然后:

graph.add_conditional_edges(
    "agent",
    router
)

六、LangGraph 工作流执行过程

整个执行过程:

Next Node State Node Graph User Next Node State Node Graph User input execute update route update final output

核心思想:

Graph 控制流程
State 保存上下文
Node 负责逻辑

七、最小 LangGraph 示例


安装

pip install langgraph langchain openai

基础代码

from typing import TypedDict
from langgraph.graph import StateGraph, END

class State(TypedDict):
    input: str
    output: str

def chatbot(state):
    text = state["input"]

	# 状态合并
    return {
        "output": f"Echo: {text}"
    }

graph = StateGraph(State)

graph.add_node("chatbot", chatbot)

graph.set_entry_point("chatbot")

graph.add_edge("chatbot", END)

app = graph.compile()

result = app.invoke({
    "input": "hello"
})

print(result)

需要:

pip install langgraph

运行结果:

{'input': 'hello', 'output': 'Echo: hello'}

(注意)状态合并:LangGraph 不会用节点返回的结果完全替换当前状态,而是将返回的字典与当前状态进行合并(类似 Python 的 dict.update() 操作)

八、LangGraph 编码思路(非常重要)

很多人学不会 LangGraph。

原因不是 API。

而是:

没有 Graph 思维

正确思维方式

不要想:

我下一步调用谁?

而要想:

状态下一步流向哪里?

推荐设计流程


第一步:先设计 State

先问:

整个流程需要共享什么数据?

例如:

class AgentState(TypedDict):
    messages: list
    tool_result: str
    final_answer: str

第二步:拆分 Node

每个 Node:

只做一件事

例如:

Node 职责
planner 规划
retriever 检索
tool 工具调用
generator 生成答案
validator 校验

第三步:设计 Edge

思考:

流程如何跳转?

例如:

retry

success

Planner

Retriever

Generator

Validator

END


九、为什么 Multi-Agent 都在用 Graph?

因为 Multi-Agent 本质:

多个智能体协作

这天然就是:

图结构

例如:

User Request

Planner Agent

Research Agent

Coding Agent

Review Agent

Final Synthesizer

这里:

  • 每个 Agent 是 Node
  • Agent 间通信是 Edge
  • 共享 Memory 是 State

这也是:

  • AutoGen
  • CrewAI
  • OpenAI Agents
  • DeepResearch

越来越 Graph 化的原因。


十、LangGraph 与 DAG 的关系

很多人会问:

LangGraph 是 DAG 吗?

答案:

部分是

DAG(有向无环图)

特点:

不能回环

例如:

A

B

C

D


LangGraph 更强

LangGraph 支持:

循环(Loop)

例如:

Agent

Tool

这对于 Agent 极其重要:

  • ReAct
  • Tool Retry
  • Self Reflection
  • Auto Correction

都需要循环。


十一、典型 Agent Workflow


ReAct Agent

Tool Needed

Final Answer

Question

LLM Reasoning

Tool Call

END

这其实就是:

经典 LangGraph 模型

十二、LangGraph 常见组件


1. START

起始节点。


2. END

结束节点。


3. StateGraph

图对象。


4. compile()

编译 Workflow。


5. invoke()

执行 Workflow。


十三、生产级编码建议


1. State 不要过大

错误:

state["everything"]

正确:

state["messages"]
state["tool_result"]

2. Node 单一职责

不要:

一个 Node 做全部事情

而要:

一个 Node 一个能力

3. Conditional Edge 保持简单

不要:

if-else 地狱

而要:

router()

集中管理。


4. Graph 先画图再编码

强烈推荐:

先 Mermaid
再代码

因为:

Graph 本质是架构设计

十四、LangGraph 适合什么场景?

非常适合:

场景 是否适合
AI Agent
Multi-Agent
Tool Calling
RAG Workflow
长链路推理
自动化流程
Retry Workflow

不太适合:

场景 原因
简单聊天机器人 过重
单次 Prompt 不需要 Graph
极简单 API 封装 没必要

十五、总结

LangGraph 本质是:

用图结构管理 AI Workflow

核心三要素:

State
Node
Edge

核心思想:

状态在图中流动

它解决的是:

复杂 Agent Workflow 编排问题

相比传统 Chain:

Chain LangGraph
线性 图结构
固定流程 动态路由
无状态 状态共享
不擅长循环 支持循环
难做 Multi-Agent 天然支持

可以这样理解:

Chain 是函数调用
LangGraph 是操作系统调度

未来:

  • AI Agent
  • Deep Research
  • Multi-Agent
  • Autonomous Workflow

几乎都会走向:

Graph Workflow

而 LangGraph 正是当前最主流的 Graph AI 编排框架之一。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐