Skip to main content
LangGraph 提供两种不同的 API 来构建智能体工作流:Graph APIFunctional API。两种 API 共享相同的底层运行时,可以在同一应用中一起使用,但它们是为不同的用例和开发偏好而设计的。 本指南将帮助你根据具体需求理解何时使用每种 API。

快速决策指南

在以下情况使用 Graph API
  • 复杂的工作流可视化,用于调试和文档
  • 显式状态管理,跨多个节点共享数据
  • 条件分支,具有多个决策点
  • 并行执行路径,需要后续合并
  • 团队协作,可视化表示有助于理解
在以下情况使用 Functional API
  • 最小代码改动,应用于现有的过程式代码
  • 标准控制流(if/else、循环、函数调用)
  • 函数作用域状态,无需显式状态管理
  • 快速原型开发,更少的样板代码
  • 线性工作流,具有简单的分支逻辑

详细对比

何时使用 Graph API

Graph API 使用声明式方法,通过定义节点、边和共享状态来创建可视化的图结构。 1. 复杂的决策树和分支逻辑 当你的工作流有多个依赖于各种条件的决策点时,Graph API 使这些分支变得明确且易于可视化。
2. 跨多个组件的状态管理 当你需要在工作流的不同部分之间共享和协调状态时,Graph API 的显式状态管理非常有用。
3. 带同步的并行处理 当你需要并行运行多个操作然后合并其结果时,Graph API 可以自然地处理这种情况。
4. 团队开发和文档化 Graph API 的可视化特性使团队更容易理解、记录和维护复杂的工作流。

何时使用 Functional API

Functional API 使用命令式方法,将 LangGraph 功能集成到标准的过程式代码中。 1. 现有的过程式代码 当你有使用标准控制流的现有代码,并且想以最少的重构添加 LangGraph 功能时。
2. 具有简单逻辑的线性工作流 当你的工作流主要是顺序执行,具有简单直接的条件逻辑时。
3. 快速原型开发 当你想快速测试想法而不需要定义状态模式和图结构的额外开销时。
4. 函数作用域的状态管理 当你的状态自然地限定在单个函数范围内,不需要广泛共享时。

组合使用两种 API

你可以在同一应用中同时使用两种 API。当系统的不同部分有不同的需求时,这非常有用。

API 之间的迁移

从 Functional API 迁移到 Graph API

当你的函数式工作流变得复杂时,可以迁移到 Graph API:

从 Graph API 迁移到 Functional API

当你的图对于简单的线性流程来说过于复杂时:

总结

当你需要对工作流结构进行显式控制、复杂分支、并行处理或团队协作优势时,选择 Graph API 当你想以最小的改动将 LangGraph 功能添加到现有代码中、拥有简单的线性工作流或需要快速原型开发能力时,选择 Functional API 两种 API 都提供相同的核心 LangGraph 功能(持久化、流式输出、人机协作、记忆),但以不同的范式包装它们,以适应不同的开发风格和用例。