LangGraph
活跃简介
LangGraph 是一个用于构建可控、可调试、长期运行的有状态 Agent 框架,以图的方式描述 Agent 的状态与控制流。
核心特性
- 图模型编排 — 用节点、边、条件分支描述 Agent 流程,比线性 Chain 更灵活
- 持久化与时间旅行 — 内置 checkpointer 支持断点恢复与状态回放
- 人机协同 — 内置 interrupt 与 Human-in-the-loop 节点,可在关键步骤暂停等待人工确认
- 并行与子图 — 支持并行分支、Send 与子图嵌套,便于复杂工作流
- LangSmith 集成 — 与 LangSmith 深度集成,便于追踪、调试与评估
- 多语言 SDK — 提供 Python 与 TypeScript 双版本 SDK
适用场景
💡 搭建需要审批、回滚的人工监督 Agent 工作流
💡 构建可中断、可恢复的长时间运行 Agent 任务
💡 用图模型描述带循环与条件分支的研究型 Agent
💡 与 LangChain 工具链组合实现生产级 RAG + 工具 Agent
💡 把现有 Chain 改写为带状态与可观测性的图
分类
快速开始
# 安装依赖
pip install langgraph langchain-openai
# 定义一个带工具的图
from langgraph.graph import StateGraph, MessagesState, START, END
from langgraph.prebuilt import ToolNode
from langchain_openai import ChatOpenAI
def call_model(state: MessagesState):
model = ChatOpenAI(model='gpt-4o').bind_tools([search])
return {'messages': [model.invoke(state['messages'])]}
def should_continue(state):
return 'tools' if state['messages'][-1].tool_calls else END
graph = StateGraph(MessagesState)
graph.add_node('agent', call_model)
graph.add_node('tools', ToolNode([search]))
graph.add_edge(START, 'agent')
graph.add_conditional_edges('agent', should_continue)
graph.add_edge('tools', 'agent')
app = graph.compile()
app.invoke({'messages': [('user', '什么是 LangGraph?')]})