LangGraph 是什么?4.3 万星的 Agent 编排运行时,LangChain 家把状态、节点、循环焊成一张图(基础篇)

LangGraph 是什么?4.3 万星的 Agent 编排运行时,LangChain 家把状态、节点、循环焊成一张图(基础篇)

LangGraph 是什么?4.3 万星的 Agent 编排运行时,LangChain 家把状态、节点、循环焊成一张图(基础篇)

聊 Agent 框架,绕不开 LangChain 家。但真正把 LangChain 从「调模型的工具箱」抬成「能上生产的 Agent 底座」的,是 2023 年 8 月才开仓的 LangGraph。GitHub 4.3 万星(写稿时 42,990,本周还在涨),MIT 协议,Klarna、Uber、摩根大通、Replit 都在用。官方定位说得很直白:低层编排运行时(low-level orchestration framework),专门造长时间运行、有状态的 Agent。

项目介绍:它到底管什么

先泼盆冷水:LangGraph 不是 Dify、Flowise 那种拖拽平台,甚至比 LangChain 本体还底层。官方文档原话——它「不抽象 prompt,也不给你现成的架构」。你得到的是造 Agent 的三件套:

  • State(状态):一个共享数据结构,通常是 TypedDict 或 Pydantic 模型,配上 reducer 决定更新怎么合并。比如消息列表用 add_messages 追加而不是覆盖;
  • Node(节点):普通 Python 函数,接收 State、算完返回更新,同步异步都行;
  • Edge(边):普通边固定走向,条件边调一个路由函数决定下一跳跑哪个节点。

把节点和边连成图,跑起来是「超级步(super-step)」迭代:同一步里被激活的节点并行执行,靠消息传递推进状态——这套执行模型学自 Google 的 Pregel 和 Apache Beam,接口长得像 NetworkX。所以它天生能表达「LLM 决策步」和「手写确定性步骤」混排的流程:该可靠的环节写死代码,该灵活的环节交给模型,这正是别家黑盒框架给不了的控制粒度。

它真正花力气的地方是生产环境的四个老大难:

  1. 持久执行(durable execution):每走一步 Checkpointer 存快照,进程挂了按 thread_id 原地续跑,几周的长任务不怕断电;
  2. 人在环(human-in-the-loop):interrupt() 随时暂停,你检查甚至改状态,再 resume 继续;
  3. 长短双记忆:会话内工作记忆 + 跨会话持久记忆;
  4. 流式输出:中间每步都能 stream 出来,不是干等最终答案。

概念关系看这张图:

LangGraph 执行模型:调用方 invoke 后进入 StateGraph,LLM 节点与条件边路由循环,有工具调用走 ToolNode 写回 State,无调用走 END 返回;每超级步 Checkpointer 存档,interrupt() 可暂停人工审批后 resume 恢复
LangGraph 一次 invoke 的完整旅程:状态在图里流转,每步落盘,随时可暂停给人看

生态位置也顺手交代:LangGraph 本身可以脱离 LangChain 单用;往上叠 Deep Agents(带规划、子代理、文件系统的 Agent 保险箱),往外配 LangSmith 做追踪评估,往下有 LangGraph Platform 托管部署。周下载 1600 万上下,被 4.5 万个仓库当依赖,发版节奏是周更(最新 1.2.x,CLI 0.4.33,10 月 7 日刚发)。

上手:20 行代码一个能续命的 Agent

pip install langgraph langchain-openai
from typing import TypedDict, Annotated
from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.memory import MemorySaver
from langgraph.graph.message import add_messages

class S(TypedDict):
    messages: Annotated[list, add_messages]

def call_model(state: S):
    return {"messages": [llm.invoke(state["messages"])]}

def route(state: S):
    last = state["messages"][-1]
    return "tools" if last.tool_calls else END

g = StateGraph(S)
g.add_node("agent", call_model)
g.add_node("tools", tool_node)
g.add_edge(START, "agent")
g.add_conditional_edges("agent", route, {"tools": "tools", END: END})
g.add_edge("tools", "agent")          # 工具结果写回 State,循环继续
app = g.compile(checkpointer=MemorySaver())
print(app.invoke({"messages": [...]}, {"configurable": {"thread_id": "1"}}))

就这些:状态、节点、边、条件路由,一个带工具调用循环、能断点续跑的 Agent 骨架成型了。把 MemorySaver 换成 Postgres checkpoint,它就是能扛生产事故的版本。

实话:什么人该用,什么人别碰

该用:任务要跑几分钟到几周、要人工审批关卡、要精确控制每一步逻辑的场景——客服审核流、数据管道、多 Agent 协作系统。想认真做生产级 Agent,这套 State/Node/Edge 心智模型值得花两天啃。

别碰:只想拖拽出个聊天机器人、快速验证个想法的,直接 Dify/Flowise,LangGraph 的低层是负担不是福利;只想调 prompt 不想写代码的更不用来。

几个坑提前说:一是学习曲线真陡,reducer、超级步、interrupt 这些概念不上手写两个 demo 根本没感觉;二是星数 4.3 万看着不如 LangChain 本体 14.8 万,但社区流量和商业资源都在往 LangGraph + LangSmith 这条线倾斜,LangChain 本体越来越像兼容层;三是自托管部署要 LangGraph Platform 那套 server,不是 pip 装个包就完事,托管省心但要掏钱。

一句话总结:LangGraph 是「Agent 时代的数据库」而不是「Agent 时代的 WordPress」。要的是控制力和可靠性,它就是当前开源阵营里最扎实的那一档;要的是开箱即用,出门左转找拖拽平台。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注