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
相关推荐
kkeeper~4 小时前
0基础C语言积跬步之深入理解指针(5下)
c语言·开发语言
一直不明飞行4 小时前
Java的equals(),hashCode()应该在什么时候重写
java·开发语言·jvm
REDcker5 小时前
有限状态机与状态模式详解 FSM建模Java状态模式与C++表驱动模板实践
java·c++·状态模式
盲敲代码的阿豪5 小时前
Python 入门基础教程(爬虫前置版)
开发语言·爬虫·python
你的保护色5 小时前
【无标题】
java·服务器·网络
basketball6165 小时前
C++ 构造函数完全指南:从入门到进阶
java·开发语言·c++
互联科技报5 小时前
2026超融合选型:Top5品牌与市场格局解读
开发语言·perl
weixin199701080166 小时前
[特殊字符] 智能数据采集:数字化转型的“数据石油勘探队”(附Python实战源码)
开发语言·python
淘矿人6 小时前
Claude辅助DevOps实践
java·大数据·运维·人工智能·算法·bug·devops
想唱rap6 小时前
IO多路转接之poll
服务器·开发语言·数据库·c++