LangGraph 安装与使用指南:构建弹性有状态AI代理
LangGraph 是一个低级别编排框架,用于构建、管理和部署长期运行、有状态的AI代理。它提供了持久化执行、人机协作、综合记忆和调试等核心能力,被Klarna、Replit、Elastic等公司用于构建生产级AI应用。
1. 安装
LangGraph 是一个Python库,通过 pip 安装非常简单。
1.1 基本安装
1 | pip install -U langgraph |
1.2 可选依赖(按需安装)
根据您需要的功能,可以安装额外的依赖组:
1 | # 如果需要与LangSmith集成进行调试 |
1.3 验证安装
在Python环境中运行以下命令,确认安装成功:
1 | import langgraph |
2. 核心概念与基本使用
LangGraph 的核心是构建一个状态图 (StateGraph),其中节点(Nodes)代表执行步骤,边(Edges)定义执行流程,状态(State)在整个图执行过程中传递和演变。
2.1 定义状态结构
首先,定义您的代理状态。通常使用 TypedDict 或 Pydantic BaseModel。
1 | from typing import TypedDict, List |
2.2 创建节点函数
节点是执行实际工作的函数。它们接收当前状态,处理后返回状态的部分更新。
1 | def research_node(state: AgentState) -> dict: |
2.3 构建图并添加节点和边
1 | from langgraph.graph import StateGraph, END |
2.4 执行图(代理)
使用 invoke 方法(同步)或 ainvoke(异步)来运行图。
1 | # 初始化状态 |
3. 核心高级功能
3.1 持久化与检查点 (Persistence & Checkpointing)
LangGraph 支持将图的状态保存到检查点,以实现持久化执行和从失败中恢复。这对于长时间运行或需要人工介入的代理至关重要。
使用 MemorySaver(内存存储,适合测试):
1 | from langgraph.checkpoint.memory import MemorySaver |
使用 SqliteSaver(持久化到SQLite,适合生产):
1 | pip install langgraph-checkpoint-sqlite |
1 | from langgraph.checkpoint.sqlite import SqliteSaver |
3.2 人机协作 (Human-in-the-loop)
您可以配置图在特定节点中断执行,等待人工输入或审批后再继续。
1 | from langgraph.graph import StateGraph |
3.3 流式输出 (Streaming)
支持实时流式输出节点的执行结果,提升用户体验。
1 | # 流式执行 |
4. 与 LangChain 和其他工具集成
LangGraph 可以与 LangChain 生态无缝集成,利用其丰富的组件。
1 | from langchain_openai import ChatOpenAI |
5. 常见问题排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
导入错误 ModuleNotFoundError |
依赖未完整安装 | 检查是否安装了 langgraph 及所有可选依赖(如 langgraph-checkpoint)。 |
| 状态更新未生效 | 节点函数未正确返回状态更新字典 | 确保节点函数返回一个字典,包含需要更新的状态键值对。 |
| 持久化状态丢失 | 检查点存储器(saver)未正确配置或使用 | 确保编译时传入了 checkpointer 参数,并且后续执行时使用了相同的 thread_id 配置。 |
| 执行卡住或超时 | 图循环或死锁,或步骤过长 | 检查图逻辑,确保有明确的结束条件。考虑增加超时设置或拆分长步骤。 |
6. 总结
LangGraph 是一个强大的低级框架,用于构建复杂、有状态的AI代理。
核心使用路径:
- 安装:
pip install -U langgraph。 - 定义状态:使用
TypedDict描述代理状态。 - 构建图:创建
StateGraph,添加节点(函数)和边(流程)。 - 编译与执行:编译图,使用
invoke或stream运行。 - 添加持久化:集成
MemorySaver或SqliteSaver实现弹性。 - 探索高级功能:根据需求加入人机协作中断、流式输出等。
如果您是新手,建议从官方提供的 LangGraph Quickstart 和 LangChain Academy 的免费课程开始,通过简单示例理解图执行的基本逻辑。成功构建第一个简单代理后,再逐步引入状态管理和持久化等高级特性。













