LangGraph的介绍

在大模型应用从 "单轮对话" 走向 "复杂决策" 的今天,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

python 复制代码
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. 写节点函数

python 复制代码
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

python 复制代码
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. 运行

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

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

这就是最精简的 LangGraph 智能体。


四、进阶

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

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

流程:

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

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

2. 多智能体协作

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

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

3. 可视化流程图

LangGraph 支持直接画出流程图:

python 复制代码
from IPython.display import Image, display
display(Image(app.get_graph().draw_mermaid_png()))

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

五、总结

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

  • 用 State 管理全局信息
  • 用 Node 拆分功能
  • 用 Edge 控制逻辑
  • 支持循环、分支、中断、恢复
  • 完美适配复杂 Agent
相关推荐
FRing033 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
秋天的怀念_David3 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
外收内放3 小时前
Python基础语法练习题(73)
java·前端·python
Wang's Blog3 小时前
Java 项目实战: 交友项目 - 环信后台发送消息测试
java·交友
用户3721574261354 小时前
Java 操作 Word 脚注和尾注:添加、读取与删除
java
小嘉丶学长4 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
字节探索4 小时前
Spring Boot 接口幂等性设计:从唯一索引到 Redis+Lua 的工程实践
java·spring boot
用户3721574261354 小时前
Java 实现 Excel 与 Markdown 相互转换:表格导出、格式设置与多表提取
java
迪菲赫尔曼4 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测
SL_staff4 小时前
制造业订单交付总踩坑?用结构化节点协同模型重构计划系统
java·开源·全栈