LangGraph: 构建复杂、循环的 AI 代理
LangGraph 是 LangChain 生态中最重要的进阶工具。它允许你将 AI 逻辑定义为图 (Graph) 结构,非常适合构建具有循环(Cycles)、状态管理(State)和多代理协作(Multi-agent)的应用。
1. 为什么需要 LangGraph?
传统的 Chain 是线性的(A -> B -> C)。但在实际开发中,我们往往需要循环:
- 循环调试:模型写完代码 -> 运行报错 -> 回到模型进行修复 -> 再次运行。
- 反思模式:模型生成答案 -> 另一个模型审核 -> 审核不通过则回到生成节点。
2. 核心概念
- Nodes (节点):普通的 Python 函数,负责处理数据。
- Edges (边):连接节点的路径。
- State (状态):在节点间传递的共享数据(通常是一个 TypedDict)。
- Conditional Edges (条件边):根据逻辑判断下一步走向哪个节点。
3. 基础代码示例
from typing import TypedDict, Annotated
from langgraph.graph import StateGraph, END
# 1. 定义状态
class State(TypedDict):
input: str
output: str
# 2. 定义节点
def call_model(state: State):
# 这里调用 LLM
return {"output": "模型生成的答案"}
# 3. 构建图
workflow = StateGraph(State)
workflow.add_node("model", call_model)
# 设置起点和终点
workflow.set_entry_point("model")
workflow.add_edge("model", END)
# 4. 编译并运行
app = workflow.compile()
result = app.invoke({"input": "你好"})
4. LangGraph 的独特优势
A. 状态持久化 (Persistence)
内置 Checkpointer。即使程序崩溃或需要用户人工确认(Human-in-the-loop),它也能从断点处精准恢复。
B. 多代理协作 (Multi-agent)
你可以轻松定义多个代理节点(如:Researcher 节点, Writer 节点, Reviewer 节点),并让它们在图中按照逻辑流转。
C. 可视化
LangGraph 支持导出图形结构,方便调试和展示逻辑流。
5. LangGraph Studio (开发利器)
如果你在本地安装了 Docker,可以使用 LangGraph Studio。它提供了一个可视化的 IDE,可以让你实时观察节点状态的变化、手动回滚步骤以及调试复杂的逻辑循环。
总结:如果你正在构建一个简单的 RAG 或聊天机器人,LCEL 足够了。但如果你在构建一个真正的 AI Agent(代理),LangGraph 是必选工具。