子图节点
概述
子图节点允许您在当前图中执行另一个图。这对于跨多个图重用逻辑或将复杂图分解为更小、更易管理的部分非常有用。
子图节点的输入和输出由子图内的Graph Input Nodes和Graph Output Nodes定义。Subgraph Node会自动更新其输入和输出以匹配所选子图的配置。
子图节点还具有一个可选的错误输出端口。如果启用该功能,执行子图时发生的任何错误都将被捕获并从错误输出端口输出。如果未启用,错误将导致整个图执行失败。
- 输入
- 输出
- 编辑器设置
输入项
标题 | 数据类型 | 描述 | 默认值 | 备注 |
---|---|---|---|---|
(自定义名称) | 任意 | 传入子图的输入值。根据子图中配置的输入动态变化。 | 不适用 | 始终接受任何数据类型。 |
输出
标题 | 数据类型 | 描述 | 备注 |
---|---|---|---|
(自定义名称) | 任意 | 子图执行后的输出值。根据子图中配置的输出动态变化。 | 始终接受任何数据类型。 |
Error | string | If the subgraph errors, will be populated with the error message. | Only enabled if Use Error Output is turned on. If Use Error Output is turned off, the node will error instead. |
编辑器设置
设置 | 描述 | 默认值 | 使用输入切换 | 输入数据类型 |
---|---|---|---|---|
Graph | 当该节点运行时需要执行的图。必须是同一项目中的一个图。 | (必填) | 否 | N/A |
Use Error Output | If enabled, then the Subgraph node will not fail, but instead any error will appear in the Error output port of the node. If disabled, the entire Subgraph node will error if the call errors. | False | No | N/A |
示例1:在多处复用同一个图形
- 在您的项目中创建一个新图表,并添加一个Graph Input Node和一个Graph Output Node。将Graph Input Node连接到Text Node,然后将该节点连接到Graph Output Node。
- 将Text节点更新为显示文本
{{input}} Hi, From Subgraph
。 - 在主图中添加一个子图节点。在编辑器设置中,将
Graph
设置为步骤1中创建的图。 - 将一个文本节点连接到子图节点的输入端口。
- 将文本节点的文本设置为
Hello Subgraph!
。 - 运行图形。请注意,文本会通过子图传递回主图,并将子图中的文本附加到主图文本中。
示例2:处理子图中的错误
- 使用与示例1相同的图表,在子图中添加一个向量存储节点。
- 将文本节点的所有输出连接到向量存储节点。
- 这将导致向量存储节点报错
- 在主图中添加一个子图节点。在编辑器设置中启用
Use Error Output
。 - 将文本节点连接到子图节点的两个输出端。
- 运行图形。请注意,错误会输出在Subgraph Node的
Error
端口上,而Output
端口不会运行。
错误处理
如果子图出错,那么子图节点也会出错。如果您想在图中处理错误,可以启用Use Error Output
设置。这将使子图节点不会出错,而是将错误消息传递到Error
输出端口。如果Error
端口有值,则不会运行Result
端口。您可以使用If Node来检查Error
端口是否有值,并相应地处理错误。
常见问题
问:我可以使用子图节点在不同的项目中执行图形吗?
A: 不,Subgraph Node只能执行同一项目内的图表。
问:我可以使用Subgraph Node在循环中执行图形吗?
A: 是的,你可以使用Loop Controller Node来循环执行Subgraph Node。每次循环迭代都会以当前循环值作为输入来执行子图。
问:我可以使用子图节点有条件地执行图形吗?
A: 是的,你可以使用If Node来有条件地执行子图节点。如果条件为假,子图节点将不会被执行。