LangGraph
活跃简介
LangGraph 是一个用于构建可控、可调试、长期运行的有状态 Agent 框架,以图的方式描述 Agent 的状态与控制流。
核心特性
- 图模型编排 — 用节点、边、条件分支描述 Agent 流程,比线性 Chain 更灵活
- 持久化与时间旅行 — 内置 checkpointer 支持断点恢复与状态回放
- 人机协同 — 内置 interrupt 与 Human-in-the-loop 节点,可在关键步骤暂停等待人工确认
- 并行与子图 — 支持并行分支、Send 与子图嵌套,便于复杂工作流
- LangSmith 集成 — 与 LangSmith 深度集成,便于追踪、调试与评估
- 多语言 SDK — 提供 Python 与 TypeScript 双版本 SDK
适用场景
优势与不足
✅ 优势
- • 活跃维护,近期持续更新
- • 社区热度高(39.8k stars)
- • 开源许可证友好(MIT)
- • 项目有一定历史沉淀(已维护 3 年)
分类
快速开始
# 安装依赖
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?')]})