进阶篇 EP.06

StateGraph 状态图 — LangGraph 核心引擎

在 GitHub 编辑此页

LangGraph 的核心是 StateGraph——一个有状态、带条件分支的图执行引擎。与 LCEL 的固定流水线不同,StateGraph 支持循环和复杂路由。

为什么需要状态图?

LCEL 链是直线流水线——数据从 A 到 B 到 C,一路到底。

但 Agent 的工作流不是线性的——它可能需要循环(思考→行动→观察→再思考)、条件分支(是调用工具还是直接回答)、并行执行等。

StateGraph 就是为了解决这个问题而生的。

核心概念

State(状态)→ Node(节点)→ Edge(边)→ Conditional Edge(条件边)

构建你的第一个图形

from typing import TypedDict, Literal
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage

llm = ChatOpenAI(
    model="deepseek-v4-flash",
    api_key="sk-你的密钥",
    base_url="https://dualseason.com/v1"
)

# 1. 定义状态
class AgentState(TypedDict):
    input: str
    reasoning: str
    answer: str
    steps: int

# 2. 定义节点
def reason_node(state: AgentState) -> dict:
    prompt = f"分析以下问题,给出解决思路: {state['input']}"
    resp = llm.invoke([HumanMessage(content=prompt)])
    return {"reasoning": resp.content, "steps": state["steps"] + 1}

def answer_node(state: AgentState) -> dict:
    prompt = f"问题: {state['input']}\n分析: {state['reasoning']}\n请给出最终答案:"
    resp = llm.invoke([HumanMessage(content=prompt)])
    return {"answer": resp.content, "steps": state["steps"] + 1}

# 3. 条件判断
def should_continue(state: AgentState) -> Literal["answer", "reason"]:
    if state["steps"] < 1:
        return "reason"  # 继续分析
    return "answer"      # 给出答案

# 4. 构建图
workflow = StateGraph(AgentState)
workflow.add_node("reason", reason_node)
workflow.add_node("answer", answer_node)
workflow.set_entry_point("reason")
workflow.add_conditional_edges("reason", should_continue)
workflow.add_edge("answer", END)

app = workflow.compile()

# 5. 运行
result = app.invoke({
    "input": "解释量子计算的基本原理",
    "reasoning": "",
    "answer": "",
    "steps": 0
})

print(f"推理: {result['reasoning']}")
print(f"答案: {result['answer']}")

与 LCEL 的区别

特性LCELStateGraph
数据流直线管道图结构
状态管理无(每次重新计算)共享状态
循环不支持原生支持
条件分支不支持Conditional Edge
适用场景简单流水线Agent 循环、复杂编排

小结

StateGraph 是构建 Agent 的基础。有了状态管理和条件路由,我们可以实现真正的 ReAct 循环。下一章将用 StateGraph 实现一个完整的 ReAct Agent。

相关资源