Skip to main content

循环 Block

循环 block 允许在工作流中重复执行特定操作。它支持基于计数的循环和基于列表的遍历,并且可以嵌套使用来实现复杂的循环逻辑。

配置选项

{
  // 循环类型:count(计数循环)或 list(列表循环)
  type: "count",

  // 循环次数(type 为 count 时使用)
  count: 1,

  // 列表数据(type 为 list 时使用)
  list: [],

  // 是否并行执行
  parallel: false,

  // 并行执行时的最大并发数
  maxParallel: 5
}

参数说明

  1. type
    • 类型:string
    • 可选值:count、list
    • 默认值:count
    • 作用:决定循环的执行方式
  2. count
    • 类型:number
    • 默认值:1
    • 作用:设置循环执行的次数
    • 说明:仅在 type 为 count 时有效
  3. list
    • 类型:array
    • 默认值:空数组
    • 作用:提供遍历的数据列表
    • 说明:仅在 type 为 list 时有效
  4. parallel
    • 类型:boolean
    • 默认值:false
    • 作用:控制是否并行执行循环
    • 说明:启用后可提高执行效率
  5. maxParallel
    • 类型:number
    • 默认值:5
    • 作用:限制并行执行的最大数量
    • 说明:仅在 parallel 为 true 时有效

循环类型说明

计数循环 (count)

  • 按指定次数重复执行
  • 适用于固定次数的重复操作
  • 可以通过 index 访问当前循环次数

列表循环 (list)

  • 遍历指定的数据列表
  • 每次循环可以访问当前项的值
  • 支持任意类型的列表数据

嵌套使用说明

循环 block 支持多层嵌套,可以实现复杂的循环逻辑:
  1. 基本嵌套结构
{
  "type": "loop",
  "options": {
    "type": "count",
    "count": 3
  },
  "children": [
    {
      "type": "loop",
      "options": {
        "type": "list",
        "list": ["A", "B", "C"]
      }
    }
  ]
}
  1. 嵌套层级控制
  • 建议不超过 3 层嵌套
  • 每层循环使用不同的循环变量名
  • 注意内存使用和性能影响
  1. 数据传递
  • 外层循环的变量可以传递给内层循环
  • 内层循环的结果可以收集到外层循环

使用示例

  1. 基础计数循环
{
  "type": "loop",
  "options": {
    "type": "count",
    "count": 5,
    "parallel": false
  }
}
  1. 列表遍历
{
  "type": "loop",
  "options": {
    "type": "list",
    "list": ["项目1", "项目2", "项目3"],
    "parallel": false
  }
}
  1. 并行执行
{
  "type": "loop",
  "options": {
    "type": "list",
    "list": ["任务1", "任务2", "任务3", "任务4", "任务5"],
    "parallel": true,
    "maxParallel": 3
  }
}
  1. 嵌套循环示例
{
  "type": "loop",
  "options": {
    "type": "count",
    "count": 2
  },
  "children": [
    {
      "type": "loop",
      "options": {
        "type": "list",
        "list": ["A", "B"]
      },
      "children": [
        {
          "type": "loop",
          "options": {
            "type": "count",
            "count": 3
          }
        }
      ]
    }
  ]
}

注意事项

  1. 性能优化
    • 合理使用并行执行
    • 控制嵌套层级
    • 注意内存使用
  2. 数据处理
    • 注意列表数据的大小
    • 处理循环变量的作用域
    • 合理收集循环结果
  3. 错误处理
    • 考虑循环中断的情况
    • 处理并行执行的错误
    • 设置超时机制
  4. 与其他 Block 配合
    • 可以循环执行 generation block
    • 可以在循环中使用 ifElse block 进行条件控制
    • 可以循环调用其他工作流
    • 可以收集用户输入进行批处理
  5. 嵌套使用建议
    • 明确每层循环的目的
    • 使用有意义的变量名
    • 注意循环条件的终止
    • 避免死循环