什么是 LangGraph?
LangGraph 是一个低层编排框架和 Runtime,用确定性代码、模型调用、Tool 与人工输入构建长时间运行且有状态的 Workflow 和 Agent。
快速了解
| 全称 | LangGraph Agent 编排运行时 |
|---|---|
| 创建时间 | 由 LangChain 团队推出,解决传统 Chain 缺乏循环能力的痛点 |
| 规范文档 | 官方规范 |
工作原理
LangGraph 提供执行原语,而不是规定一种固定 Agent 架构。它的 Graph API 用 State、Node 和 Edge 表达工作:Node 接收 State Snapshot 并返回部分 Update,Edge 选择后续工作,每个 State Channel 的 Reducer 决定并发或串行 Update 是覆盖还是合并。图可以包含循环与条件路由,但不必包含 LLM 或多个 Agent。
Functional API 通过 Entrypoint 和 Task 使用同一套 Runtime,因此采用 Persistence 或 Interrupt 不要求把所有应用都重构为显式图。Compile 会验证图结构并绑定运行时组件,但仅编译不会让执行自动持久化。Checkpointer 保存单个 Thread 的 State Snapshot,Store 保存跨 Thread 的应用数据。Durable Execution 还要求稳定 Thread ID、持久化 Checkpointer、确定性 Replay 和幂等 Side Effect;内存 Saver 只适合开发,进程重启后数据会丢失。
Run 在故障或 Interrupt 后恢复时,会从相关 Node 或 Entrypoint 开头重放,而不是从原代码行继续,所以 Interrupt 前的代码可能再次执行。外部写入必须使用稳定 Operation ID、Idempotency Key、结果对账和独立 Authorization。Time Travel 是从 Checkpoint Replay 或 Fork,不会撤销已经发送的邮件、付款、数据库写入或其他现实副作用,后续模型与 Tool 调用也可能得到不同结果。
Input、Output 和 Private State Schema 约束接口,却不是保密边界,因为部分 Streaming Mode 会暴露内部 Channel。LangGraph 可以不依赖 LangChain 运行;LangChain 提供更高层 Agent 抽象,LangSmith 则提供独立的 Trace、Evaluation 和 Deployment 服务。LangGraph v1 稳定了核心 Graph API,并弃用旧的 LangGraph 预构建 create_react_agent 路径,推荐使用基于 LangGraph Runtime 的 LangChain create_agent。
生产评测应覆盖路由与终态正确性、State 和 Reducer 不变量、Retry、重复 Side Effect、Interrupt 授权、Checkpoint 恢复、延迟、成本和完整 Trajectory 证据。
主要特点
- 提供低层编排 Runtime,不规定唯一 Agent、Prompt、Tool 或 Multi-Agent 架构
- 在同一 Persistence、Streaming 与 Interrupt Runtime 上支持声明式 Graph API 和 Functional API
- 通过每个 Channel 的 Reducer 应用 Node 返回的部分 Update,而不是依赖语义未定义的全局可变 State
- 区分 Thread 范围 Checkpoint 与跨 Thread Store,并要求持久化后端才能在重启后恢复
- 通过确定性 Replay 恢复,因此非确定性操作与外部 Side Effect 仍需要 Task、幂等和对账
- 可以混合确定性步骤与模型驱动步骤,但 Authorization、租户隔离、Evaluation 和 Deployment 仍由应用栈负责
常见用途
- 构建包含条件分支、循环、Retry 和显式终态的长时间运行 Workflow
- 在经外部授权的人工审核点暂停 Run,再通过已验证的 Interrupt Payload 恢复
- 持久化 Thread State 以恢复故障,同时把跨 Thread 的用户或应用 Memory 单独存储
- 在类型化输入、输出、State 与权限边界后组合 Subgraph 或专业 Agent
- 为调试和评测 Replay 或 Fork 已记录的 Trajectory,同时不把重放误当现实副作用回滚
示例
Loading code...常见问题
LangGraph 与 LangChain 有什么区别?
LangGraph 是面向自定义有状态 Workflow、Persistence、Streaming 与人工 Interrupt 的低层编排 Runtime。LangChain 提供更高层的模型和 Tool 集成以及预构建 Agent Loop,其 create_agent 抽象运行在 LangGraph 上。需要直接控制时可以独立使用 LangGraph;标准 Agent Loop 已满足需求时则应优先采用 LangChain。
LangGraph 必须使用 LLM 或 Multi-Agent 吗?
不必。LangGraph Node 可以运行确定性代码、调用 API、调用模型、执行 Tool 或组合另一个 Graph;同一个 Workflow 也能混合这些步骤。Functional API 还可以沿用普通 Python 控制流。只有专业分工带来可测收益时才需要多个 Agent,LangGraph 本身不会让系统自动获得自主性或可靠性。
LangGraph Checkpointer 与 Store 有什么区别?
Checkpointer 为一个执行 Thread 记录 State Snapshot,用于会话连续性、Interrupt、Replay 和故障恢复;Store 保存用户偏好或共享知识等跨 Thread 应用数据。InMemorySaver 只存在于当前进程,不适合重启恢复;生产系统还需要保留期限、访问控制、加密和删除策略。
LangGraph Checkpoint 能阻止重复副作用吗?
不能。Resume 和 Interrupt 处理可能从 Node 或 Entrypoint 开头重放,外部写入成功但 Task 未完成时也可能再次执行。应把非确定性操作与 Side Effect 放入显式 Task 或 Node,使用稳定 Operation ID 和 Idempotency Key,对未知结果执行对账,并在模型之外授权写入。State Snapshot 不是 Exactly-Once 事务。
LangGraph Time Travel 会回滚 Workflow 吗?
Time Travel 会从旧 Checkpoint Replay 或 Fork 执行,但不会逆转已经提交的现实副作用。选中 Checkpoint 之后的 Node 会再次运行,因此模型回答、API 结果与 Tool 效果可能不同。应把历史重放视为拥有独立 Run Identity、权限、Budget、Trace 和 Side Effect Policy 的新分支。