Parallel

在容器内并发运行子块

Parallel 块是 TradingGoose 中的容器块,可并发运行子块。

Parallel 块是容器节点。在画布上将子块拖入 Parallel 内部。入边从 Parallel Start 进入,子块输出在 Parallel End 重新连接,之后工作流才继续到容器外部。

概述

Parallel 块让你可以:

分配工作:并发处理多个项目

加速执行:同时运行独立操作

处理批量操作:高效处理大型数据集

汇总结果:收集所有并行执行的输出

配置选项

并行类型

在两种并行执行类型之间选择:

基于数量的并行 - 执行固定数量的并行实例。

当你需要多次并发运行同一操作时使用。

Example: Run 5 parallel instances
- Instance 1 ┐
- Instance 2 ├─ All execute simultaneously
- Instance 3 │
- Instance 4 │
- Instance 5 ┘

基于集合的并行 - 将集合分配到各个并行实例。

每个实例同时处理集合中的一个项目。

Example: Process ["task1", "task2", "task3"] in parallel
- Instance 1: Process "task1" ┐
- Instance 2: Process "task2" ├─ All execute simultaneously
- Instance 3: Process "task3" ┘

如何使用 Parallel 块

创建 Parallel 块

  1. 从工具栏将 Parallel 块拖到画布上
  2. 配置并行类型和参数
  3. 将需要并行运行的子块拖入容器内
  4. 将传入流连接到 Parallel Start,并将子块输出连接回 Parallel End,之后再继续到容器外部

访问结果

并行块完成后,在引用下拉菜单中选择它的 results 输出,并将 parallel-id 替换为该容器的实际 ID:

  • <parallel-id.results>:按实例索引排序的所有并行实例结果数组

示例用例

批量 API 处理

场景:同时处理多个 API 调用

  1. 并行块,集合为多个 API 端点
  2. 并行块内部:API 块调用每个端点
  3. 并行块之后:统一处理所有响应

多模型 AI 处理

场景:获取多个 AI 模型的响应

  1. 基于集合对模型 ID 列表进行并行(例如 ["gpt-4o", "claude-3.7-sonnet", "gemini-2.5-pro"])
  2. 并行块内部:Agent 的模型设置为集合中的当前项
  3. 并行块之后:比较并选择最佳响应

高级功能

结果聚合

所有并行实例的结果会自动收集:

// In a Function block after the parallel
const allResults = <parallel-id.results>;
return allResults;

实例隔离

块输出和当前项按实例记录,但工作流变量由所有实例共享。并发写入同一变量会产生竞争;请返回逐项输出,并在 Parallel 块之后聚合。

未处理的块错误可能导致执行失败;并行不保证错误隔离。如需恢复,请在容器内连接错误路径。

限制

容器块(循环和并行)不能相互嵌套。这意味着:

  • 你不能在并行块内放置循环块
  • 你不能在并行块内放置另一个并行块
  • 你不能在容器块内放置任何容器块

并行执行虽然更快,但需注意:

  • 并发请求时的 API 速率限制
  • 大数据集的内存占用
  • 计数模式最多创建 20 个实例;集合模式为每个元素创建实例,不受此限制。请显式分批处理大型集合。

并行与循环

了解何时使用每种方式:

特性并行循环
执行并发顺序
速度独立操作更快较慢但有序
顺序完成顺序不定;结果按实例索引排列保持顺序
适用场景独立操作依赖操作
资源占用更高更低

输入与输出

  • 并行类型:在 “count”(计数)或 “collection”(集合)之间选择

  • Count:要运行的实例数量(基于计数)

  • Collection:要分发的数组或对象(基于集合)

  • parallel.currentItem:当前实例的项

  • parallel.index:实例编号(从 0 开始)

  • parallel.items:完整集合(基于集合)

  • results:所有实例结果的数组

  • 访问:在并行块之后的块中可用

最佳实践

  • 仅限独立操作:确保各操作之间互不依赖
  • 处理速率限制:为 API 密集的工作流添加延迟或限流
  • 错误处理:每个实例都应妥善处理自身的错误