基础概念

什么是 LangGraph?

深入了解 LangGraph 的核心概念、设计理念和与传统链式结构的区别

📚 学习目标

学完这篇文章后,你将能够:

  • 理解 LangGraph 的定义和核心理念
  • 辨析图结构与链式结构的区别
  • 掌握 LangGraph 的四大核心构建块(状态、节点、边、图)
  • 初步了解 LangGraph 应用的执行流程

前置知识

在开始学习之前,建议先阅读:

你需要了解:

  • 基本的 JavaScript/TypeScript 语法
  • 对 Mermaid 图表有基本阅读能力

1️⃣ LangGraph 的定义

LangGraph 是一个用于构建智能代理(Agent)应用的 JavaScript/TypeScript 框架。它将 LLM 应用的控制流程建模为图结构,其中:

  • 节点(Nodes) 代表不同的功能组件
  • 边(Edges) 代表信息流和控制流
  • 状态(State) 代表应用的当前快照

[!TIP] 核心理念:LangGraph 的核心理念是让 LLM 能够自主决定应用的执行路径,而不是按照预定义的固定步骤执行。


2️⃣ 图结构 vs 链式结构

让我们通过可视化图表来理解两种架构的区别:

关键特性对比

特性链式结构 (Chain)图结构 (Graph)
特点✅ 高度可靠和可预测
✅ 易于理解和调试
❌ 执行路径固定
❌ 缺乏动态决策能力
✅ 动态控制流
✅ LLM 自主决策
✅ 支持复杂交互
⚠️ 需要更多的设计考虑
适用场景简单的数据处理流程
固定的业务逻辑
智能代理系统
复杂的多步骤任务
需要动态决策的应用

3️⃣ LangGraph 的核心构建块

理解 LangGraph 需要掌握四个核心概念:

1. 状态(State)

状态是贯穿整个图执行过程的数据容器。所有节点都可以读取和修改状态。

// 使用 Annotation 定义状态结构
const StateAnnotation = Annotation.Root({
  messages: Annotation<BaseMessage[]>({
    reducer: messagesStateReducer,
    default: () => [],
  }),
  step: Annotation<number>({
    default: () => 0,
  }),
});

2. 节点(Node)

节点是执行具体逻辑的函数。每个节点接收当前状态,返回状态更新(部分更新)。

const analyzeInput = (state: typeof StateAnnotation.State) => {
  return {
    step: state.step + 1,
  };
};

3. 边(Edge)

边定义了节点之间的连接关系:

  • 普通边addEdge('nodeA', 'nodeB')
  • 条件边addConditionalEdges('nodeA', routeFunction)

4. 图(Graph)

图是将状态、节点、边组合在一起的容器,必须经过 .compile() 才能执行。

const graph = new StateGraph(StateAnnotation)
  .addNode('analyze', analyzeInput)
  .addEdge(START, 'analyze')
  .compile();

4️⃣ 执行流程可视化


💡 练习题

  1. 选择题:LangGraph 中的节点函数通常返回什么?

    • A. 完整的全新状态对象
    • B. 部分状态更新对象
    • C. 布尔值
    • D. 空值
  2. 分析题:在上面的“执行流程可视化”流程图中,状态是在哪里被维护的?这与无状态的 API 调用有什么本质区别?


📚 参考资源

官方文档


✅ 总结

本章要点

  • LangGraph 将应用流程建模为图,提供了比传统链式结构更高的灵活性。
  • 核心构建块包括状态(数据)、节点(逻辑)、边(流转)和图(容器)。
  • 状态在整个图的执行过程中被持久化维护,这是实现多轮对话和复杂逻辑的关键。

下一步:在下一篇文章中,我们将详细拆解《核心概念》,深入每个组件的具体用法。

登录以继续阅读

解锁完整文档、代码示例及更多高级功能。

立即登录

On this page