图系统是 AutoGPT 平台的一个基础组件,它将代理工作流表示和管理为由互联节点组成的定向图。该系统通过将不同的功能块连接成结构化的、可执行的格式,实现了复杂代理行为的创建、存储、验证和执行。
本文档涵盖了图系统本身的内部架构和操作。有关图执行的信息,请参阅 执行引擎。
图系统将代理工作流表示为有向图,其中
来源:autogpt_platform/backend/backend/data/graph.py31-480
图系统由几个核心类组成,它们对代理工作流的结构和行为进行建模。
链接定义了节点之间的数据流
链接将数据从源节点的输出定向到目标节点的输入。当一个节点产生输出时,图系统会使用链接来确定哪些节点应该接收该数据以及在哪个输入字段上。
节点代表图中的单个操作
节点是图系统中的基本计算单元。每个节点都关联一个定义其行为、输入/输出模式和执行逻辑的特定块。
BaseGraph 为图表示提供了基础
此类维护图的基本结构,并提供基于其包含的节点生成输入和输出模式的方法。
来源:autogpt_platform/backend/backend/data/graph.py32-223
NodeModel 扩展了 Node,增加了数据库和操作功能
NodeModel 为节点添加了图特定的上下文,并提供了 webhook 交互和导出功能的方法。
GraphModel 扩展了 Graph,增加了用户和数据库相关的功能
GraphModel 提供了标识执行入口点、验证图结构以及准备图以便存储或传输的方法。
来源:autogpt_platform/backend/backend/data/graph.py71-480
图系统数据存储在 PostgreSQL 数据库中,包含以下关键表
来源:autogpt_platform/backend/schema.prisma104-294
图系统通过链接管理节点之间的数据流。当一个节点执行时,其输出会根据链接配置定向到连接的节点。
图系统支持两种类型的链接:
动态链接(默认):当数据通过动态链接流经时,目标节点只能消耗一次。
静态链接:流经静态链接的数据可以跨目标节点的多个执行被重用。这对于配置数据或持久值很有用。
当节点具有静态链接时,数据会在所有后续需要的执行中重复使用,而不是被消耗一次后丢弃。
来源:autogpt_platform/backend/backend/data/graph.py356-373
图系统提供了一套全面的函数来创建和管理图。
图系统支持图的标准 CRUD 操作。
create_graph() - 创建一个带有节点和链接的新图get_graph(), get_graphs() - 检索图及其内容/graphs/{graph_id} - 更新现有图delete_graph() - 删除图及其组件validate_graph() 方法确保图的构造正确。
来源: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
图系统与块系统(块系统)紧密集成。
block_id 引用特定的块。来源:autogpt_platform/backend/backend/data/graph.py61-68
图系统与执行引擎(执行引擎)携手合作。
来源:autogpt_platform/backend/backend/executor/manager.py272-396
可以通过 webhooks 由外部事件触发图。
当 webhook 事件到来时,系统会识别相应的图并触发执行,将 webhook 负载作为输入提供。
来源:autogpt_platform/backend/backend/data/graph.py253-261
图系统公开了以下关键 REST API 端点:
| 端点 | 方法 | 描述 |
|---|---|---|
/graphs | GET | 检索已认证用户的所有图 |
/graphs | POST | 创建新图 |
/graphs/{graph_id} | GET | 检索特定图 |
/graphs/{graph_id} | PUT | 更新现有图 |
/graphs/{graph_id} | DELETE | 删除图 |
/graphs/{graph_id}/execute/{graph_version} | POST | 执行图 |
/graphs/{graph_id}/executions | GET | 获取图的执行历史 |
/graphs/{graph_id}/executions/{graph_exec_id} | GET | 获取特定执行的详细信息 |
/graphs/{graph_id}/versions | GET | 获取图的所有版本 |
/graphs/{graph_id}/versions/active | PUT | 设置图的活动版本 |
这些端点为创建、管理和执行图提供了完整的接口。
来源:autogpt_platform/backend/backend/server/routers/v1.py399-751
图系统利用 WebSockets 在图执行过程中提供实时更新。
来源:autogpt_platform/backend/backend/server/ws_api.py98-159
图系统是 AutoGPT 平台的基本组成部分,它为定义和执行代理工作流提供了结构。通过将工作流表示为具有定义数据流的互联节点,它能够创建复杂、可重用的代理行为。
该系统与块、执行引擎以及 webhook 等外部系统的集成,为构建复杂的 AI 代理提供了灵活的基础。