菜单

图系统

相关源文件

图系统是 AutoGPT 平台的一个基础组件,它将代理工作流表示和管理为由互联节点组成的定向图。该系统通过将不同的功能块连接成结构化的、可执行的格式,实现了复杂代理行为的创建、存储、验证和执行。

本文档涵盖了图系统本身的内部架构和操作。有关图执行的信息,请参阅 执行引擎

核心概念

图系统将代理工作流表示为有向图,其中

  • 是节点及其连接的集合,定义了完整代理的工作流
  • 节点 是可以执行的单个操作或动作(AI 任务、计算、I/O 操作等)
  • 链接 是节点之间的连接,定义了数据如何从一个节点流向另一个节点
  • 是节点执行的底层实现(在 块系统 中定义)

图系统架构

来源:autogpt_platform/backend/backend/data/graph.py31-480

图系统数据模型

图系统由几个核心类组成,它们对代理工作流的结构和行为进行建模。

基类

链接定义了节点之间的数据流

链接将数据从源节点的输出定向到目标节点的输入。当一个节点产生输出时,图系统会使用链接来确定哪些节点应该接收该数据以及在哪个输入字段上。

节点

节点代表图中的单个操作

节点是图系统中的基本计算单元。每个节点都关联一个定义其行为、输入/输出模式和执行逻辑的特定块。

BaseGraph

BaseGraph 为图表示提供了基础

此类维护图的基本结构,并提供基于其包含的节点生成输入和输出模式的方法。

来源:autogpt_platform/backend/backend/data/graph.py32-223

扩展类

NodeModel

NodeModel 扩展了 Node,增加了数据库和操作功能

NodeModel 为节点添加了图特定的上下文,并提供了 webhook 交互和导出功能的方法。

GraphModel

GraphModel 扩展了 Graph,增加了用户和数据库相关的功能

GraphModel 提供了标识执行入口点、验证图结构以及准备图以便存储或传输的方法。

来源:autogpt_platform/backend/backend/data/graph.py71-480

图数据库模式

图系统数据存储在 PostgreSQL 数据库中,包含以下关键表

来源:autogpt_platform/backend/schema.prisma104-294

图数据流

图系统通过链接管理节点之间的数据流。当一个节点执行时,其输出会根据链接配置定向到连接的节点。

图系统支持两种类型的链接:

  1. 动态链接(默认):当数据通过动态链接流经时,目标节点只能消耗一次。

  2. 静态链接:流经静态链接的数据可以跨目标节点的多个执行被重用。这对于配置数据或持久值很有用。

当节点具有静态链接时,数据会在所有后续需要的执行中重复使用,而不是被消耗一次后丢弃。

来源:autogpt_platform/backend/backend/data/graph.py356-373

图创建与管理

图系统提供了一套全面的函数来创建和管理图。

CRUD 操作

图系统支持图的标准 CRUD 操作。

  • 创建create_graph() - 创建一个带有节点和链接的新图
  • 读取get_graph(), get_graphs() - 检索图及其内容
  • 更新:REST API PUT 端点 /graphs/{graph_id} - 更新现有图
  • 删除delete_graph() - 删除图及其组件

图验证

validate_graph() 方法确保图的构造正确。

  1. 验证节点引用的所有块是否存在
  2. 检查是否提供了或连接了每个节点的所有必需输入
  3. 验证所有链接连接的节点引脚是否具有兼容的数据类型
  4. 验证字段之间的依赖关系是否已满足

来源:autogpt_platform/backend/backend/data/graph.py310-454 autogpt_platform/backend/backend/server/routers/v1.py450-541

图执行流程

当执行一个图时,系统会遵循特定的操作顺序。

执行过程始于识别起始节点——那些没有传入链接或作为输入节点的节点。然后,执行引擎在节点的必需输入可用时处理节点。

来源:autogpt_platform/backend/backend/server/routers/v1.py591-624 autogpt_platform/backend/backend/executor/manager.py562-812

高级图特性

子图

图系统通过子图支持分层组合。一个图可以包含执行其他图的节点,从而实现模块化设计和功能重用。

该系统包含递归获取和处理子图的方法。

来源:autogpt_platform/backend/backend/data/graph.py624-670

图输入和输出模式生成

图系统根据图中存在的输入和输出节点自动生成输入和输出模式。

这些模式用于前端在运行代理时呈现适当的输入字段,并正确格式化输出。

来源:autogpt_platform/backend/backend/data/graph.py169-223

与其他系统集成

块系统集成

图系统与块系统(块系统)紧密集成。

  1. 图中的每个节点通过其 block_id 引用特定的块。
  2. 节点可以访问其关联块的输入/输出模式以进行验证。
  3. 在执行期间,节点块实现会与节点的输入数据一起被调用。

来源:autogpt_platform/backend/backend/data/graph.py61-68

执行引擎集成

图系统与执行引擎(执行引擎)携手合作。

  1. 执行引擎识别图中的起始节点以开始执行。
  2. 随着节点完成执行,图系统提供连接信息以识别哪些节点应接收输出数据。
  3. 图系统的验证确保了图可以正确执行。

来源:autogpt_platform/backend/backend/executor/manager.py272-396

Webhook 系统集成

可以通过 webhooks 由外部事件触发图。

当 webhook 事件到来时,系统会识别相应的图并触发执行,将 webhook 负载作为输入提供。

来源:autogpt_platform/backend/backend/data/graph.py253-261

REST API 接口

图系统公开了以下关键 REST API 端点:

端点方法描述
/graphsGET检索已认证用户的所有图
/graphsPOST创建新图
/graphs/{graph_id}GET检索特定图
/graphs/{graph_id}PUT更新现有图
/graphs/{graph_id}DELETE删除图
/graphs/{graph_id}/execute/{graph_version}POST执行图
/graphs/{graph_id}/executionsGET获取图的执行历史
/graphs/{graph_id}/executions/{graph_exec_id}GET获取特定执行的详细信息
/graphs/{graph_id}/versionsGET获取图的所有版本
/graphs/{graph_id}/versions/activePUT设置图的活动版本

这些端点为创建、管理和执行图提供了完整的接口。

来源:autogpt_platform/backend/backend/server/routers/v1.py399-751

WebSocket 事件

图系统利用 WebSockets 在图执行过程中提供实时更新。

  1. 客户端可以订阅特定图执行的执行事件。
  2. 服务器发布事件,包括节点排队、开始执行、完成或失败。
  3. 事件包括有关节点输入/输出数据的详细信息。

来源:autogpt_platform/backend/backend/server/ws_api.py98-159

结论

图系统是 AutoGPT 平台的基本组成部分,它为定义和执行代理工作流提供了结构。通过将工作流表示为具有定义数据流的互联节点,它能够创建复杂、可重用的代理行为。

该系统与块、执行引擎以及 webhook 等外部系统的集成,为构建复杂的 AI 代理提供了灵活的基础。