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
相关推荐
Chester_19995 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
EXI-小洲6 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
会周易的程序员7 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
机器视觉知识推荐、就业指导7 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan7 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
m0_695251497 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
2601_961901707 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
何以解忧,唯有..8 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
大衛說8 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
QQ_21696290968 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端