LangGraph:构建具有状态的多智能体工作流框架
1. 概述
LangGraph 是一个用于构建具有状态、多参与者应用程序的大语言模型(LLM)的库,专门用于创建智能体(Agent)和多智能体的工作流程。与传统的基于链式调用或无状态调用的 LLM 框架相比,LangGraph 提供了更强大的控制能力,使其能够处理复杂的业务逻辑。
与其他 LLM 框架相比,它提供以下核心优势:
- 循环(Loops):允许定义涉及循环的流程,这对于大多数智能体架构至关重要,使其区别于基于有向无环图(DAG)的解决方案。
- 可控性(Control):作为一个非常底层的框架,它提供了对应用程序流程和状态的细粒度控制,这对于创建可靠的智能体至关重要。
- 持久性(Persistence):包含内置的持久性功能,支持高级的'人类在环'(human-in-the-loop)和记忆功能。
LangGraph 的灵感来源于 Pregel 和 Apache Beam。其公共接口借鉴了 NetworkX 的设计。LangGraph 由 LangChain Inc. 创建,该公司也是 LangChain 的开发者,但它可以独立于 LangChain 使用。
1.1 关键特性
- 循环和分支:在应用程序中实现循环和条件判断,支持复杂的决策路径。
- 持久性:在图中的每一步之后自动保存状态。你可以在任意时间点暂停和恢复图的执行,以支持错误恢复、'人类在环'工作流、时间回溯等功能。
- 人类在环:在图执行过程中打断执行,以批准或编辑智能体计划的下一个动作,确保安全性。
- 流式支持:在每个节点生成输出时进行流式传输(包括 token 流式传输),提升用户体验。
- 与 LangChain 集成:LangGraph 可以与 LangChain 和 LangSmith 无缝集成(但不要求使用它们),便于利用现有的生态组件。
2. 安装与环境配置
在使用 LangGraph 之前,需要安装相应的依赖包。推荐使用 Python 3.9 及以上版本。
pip install -U langgraph
如果需要使用特定的大模型提供商(如 Anthropic),还需安装对应的适配器:
pip install langchain-anthropic
export ANTHROPIC_API_KEY=sk-...
可选地,为了获得最佳的可观测性和调试体验,可以设置 LangSmith:
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY=lsv2_sk_...
3. 核心概念解析
LangGraph 的核心概念之一是状态(State)。每次图执行都会创建一个状态对象,该状态在图中各节点执行时在它们之间传递。每个节点在执行后会用其返回值更新该内部状态。图更新其内部状态的方式由所选择的图类型或自定义函数定义。
3.1 状态图(StateGraph)
StateGraph 是构建应用的主要类。它允许你定义节点(Nodes)和边(Edges)。
- 节点(Nodes):代表图中的计算单元,通常是一个函数,接收当前状态并返回更新后的状态。
- 边(Edges):定义节点之间的连接关系,可以是普通边(无条件跳转)或条件边(根据函数返回值决定下一步)。
3.2 检查点器(Checkpointer)
为了实现持久化,LangGraph 使用检查点器。常见的实现包括 MemorySaver(内存存储,适合开发测试)和生产环境使用的数据库后端。检查点器负责在每次状态变更时保存快照,从而支持中断恢复。


