在大模型应用从 “单轮对话” 走向 “复杂决策” 的今天,LangGraph 已经成为构建 LLM 智能体(Agent)最主流、最实用的框架之一。它基于 LangChain 生态,专门用来解决多步骤、有状态、可循环的 AI 工作流问题。

一、LangGraph 是什么?

简单说:LangGraph = 带状态 + 可循环 + 可视化的 LLM 工作流编排工具。

对比一下你就懂了:

  • 普通 LangChain:线性执行,一步接一步,很难回头。
  • LangGraph:像流程图一样,可以判断分支、循环重试、持久化状态、多节点协作

它最适合做:

  • 多智能体协作
  • 复杂推理
  • 工具自动调用
  • 长流程任务

核心特点:

  1. State(状态):全局共享数据,所有节点都能读写
  2. Node(节点):每个节点是一个函数 / LLM / 工具调用
  3. Edge(边):节点之间的跳转逻辑
  4. Graph(图):把节点和边拼成完整流程
  5. 可循环、可中断、可恢复:不像普通链那样一跑到底

二、核心概念

1. State(状态)

整个流程的 “共享内存”。比如:

  • 用户问题
  • 历史消息
  • 检索到的文档
  • 工具返回结果
  • 是否完成任务

所有节点都能读写这个状态。

2. Node(节点)

一个节点 = 一个功能单元

  • 调用 LLM
  • 调用工具(搜索、计算器)
  • 数据处理
  • 条件判断

3. Edge(边)

决定下一步去哪

  • 普通边:A → B
  • 条件边:根据结果决定去 B 还是 C
  • 循环边:做完后回到前面重试(如 “反思→修正”)

三、实战示例

我们直接写一个最小可用 Demo,用 Python + LangGraph + ChatOpenAI(可换成任何模型)。

1. 安装依赖

pip install langgraph langchain langchain-openai

2. 定义 State

from typing import TypedDict, Annotated
from langgraph.graph import StateGraph, END
import operator

class AgentState(TypedDict):
    question: str
    thought: str
    answer: str
    is_done: bool

3. 写节点函数

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-3.5-turbo")

# 思考节点
def think_node(state: AgentState):
    question = state["question"]
    thought = llm.invoke(f"请分析问题:{question}").content
    return {"thought": thought}

# 回答节点
def answer_node(state: AgentState):
    thought = state["thought"]
    answer = llm.invoke(f"根据思考给出最终答案:{thought}").content
    return {"answer": answer, "is_done": True}

# 条件判断:是否结束
def should_end(state: AgentState):
    if state["is_done"]:
        return END
    else:
        return "think"

4. 构建 Graph

workflow = StateGraph(AgentState)

# 添加节点
workflow.add_node("think", think_node)
workflow.add_node("answer", answer_node)

# 设置起点
workflow.set_entry_point("think")

# 添加边
workflow.add_edge("think", "answer")
workflow.add_conditional_edges(
    "answer",
    should_end
)

# 编译
app = workflow.compile()

5. 运行

inputs = {"question": "为什么天空是蓝色的?"}
result = app.invoke(inputs)

print("思考过程:", result["thought"])
print("最终回答:", result["answer"])

这就是最精简的 LangGraph 智能体


四、进阶

上面只是线性流程,LangGraph 真正的威力在循环与多智能体

1. 自我修正(反思循环)

流程:

思考 → 生成 → 反思 → (不合格→重新生成)→ 结束

非常适合写作、代码、论文。

2. 多智能体协作

  • 研究员:查资料
  • 分析师:整理信息
  • 写手:生成内容
  • 评审:检查质量

每个角色一个 Node,通过 State 传递信息。

3. 可视化流程图

LangGraph 支持直接画出流程图:

from IPython.display import Image, display
display(Image(app.get_graph().draw_mermaid_png()))

调试、展示、汇报都非常直观。

五、总结

LangGraph 把 LLM 应用从 “一条直线”变成了“一张智能流程图”:

  • State 管理全局信息
  • Node 拆分功能
  • Edge 控制逻辑
  • 支持循环、分支、中断、恢复
  • 完美适配复杂 Agent
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐