生态与工具 高级

LangGraph:有状态多智能体编排

认识 LangChain 生态的下一代编排框架 LangGraph:图结构、状态机与循环控制。

为什么出现 LangGraph

旧的 AgentExecutor 是"黑盒循环":只能线性执行,难以分支、并行、人工介入。生产级 Agent 需要更精细的控制流 —— 于是有了 LangGraph:把工作流建模为带状态的图(Graph)

三个核心概念

  • State(状态):一个共享的 TypedDict,节点间传递与累加更新;
  • Node(节点):普通函数,接收状态、返回状态更新(往往是"调用一次 LLM 或工具");
  • Edge(边):节点的转移关系,支持条件边实现分支与循环。

最小示例

from langgraph.graph import StateGraph, MessagesState, START, END

def chatbot(state: MessagesState):
    return {"messages": [llm.invoke(state["messages"])]}

graph = StateGraph(MessagesState)
graph.add_node("chatbot", chatbot)
graph.add_edge(START, "chatbot")
graph.add_edge("chatbot", END)

app = graph.compile()
result = app.invoke({"messages": [("user", "你好")]})

加上带条件边的工具节点,就是自定义版 ReAct Agent;再加 human-in-the-loop 检查点,即可实现"人工审批后继续执行"。

LangGraph 的杀手锏

  • 持久化 checkpoint:任意步骤可暂停/恢复,天然支持人工介入;
  • 循环与分支:多智能体协作、自我修正(reflect)等复杂拓扑;
  • time-travel:回到历史某节点换条路重新执行。
新项目做 Agent,直接从 LangGraph 开始。

📝 课后练习

quiz-1 LangGraph 的三个核心概念是?