工作流/业务逻辑节点/循环节点
循环节点
更新于: 2026-06-24 15:44:40
低代码工作流中的循环节点用于重复执行一系列任务。
循环是一种常见的控制机制,用于重复执行一系列任务,直到满足某个条件为止。扣子编程的低代码工作流提供循环节点,当需要重复执行一些操作,或循环处理一组数据时,可以使用循环节点实现。
例如,以下长文总结场景中,通过循环节点依次生成各个段落,并流式输出每个段落的内容。
循环节点的配置方式取决于循环类型。循环类型是循环节点的运行模式,支持设置为使用数组循环、指定循环次数和无限循环。
使用数组循环类似编程语言中的 for 语法结构。使用数组循环用于遍历一个已知的序列,对序列中的每个元素执行一系列相同的步骤。典型场景如下:
在编程中,数组是一种数据结构,用于存储一系列元素。数组中的基础概念如下:
例如,在数组 arrayOfNumbers = [10, 20, 30, 40, 50] 中:
arrayOfNumbers[0] 的 item 是 10,index 是 0。arrayOfNumbers[1] 的 item 是 20,index 是 1。使用数组循环时,需要指定循环数组,此参数仅支持引用上游节点的输出,且必须为数组格式。使用数组循环模式下执行循环节点时,循环的次数取决于循环数组引用的数组长度。例如数组 [1,2,3,4,5] 的长度为 5,循环节点会循环 5 次完成遍历。如果循环数组参数引用了多个数组,则将最短的数组作为循环次数。
使用数组循环时,循环节点会遍历数组中的每个元素,每次循环都会将当前循环到的元素赋值给内置变量。内置变量仅限循环节点内部使用。目前支持的内置变量如下:
item<String>:数组元素,即当前循环到的数组元素。index<Integer>:数组索引,index+1 为当前循环的轮次。例如在长文总结场景中,引用循环节点数组中的 item,指示模型节点总结 item 中传入的文章段落。
指定循环次数模式通常用于批量、顺序处理数据的场景,需要同时设置循环次数。循环次数默认为 10 次,支持设置为 1~1000 次,你也可以引用上游节点数值类型的输出参数。
说明
循环次数参数的引用值如果大于 1000,则设置为 1000,如果小于 1,则设置为 1。
无限循环类似编程语言中的 while等语法结构,需要通过终止循环节点停止循环。循环第一次运行之后,工作流对指定条件进行判断,满足一定条件时则结束循环,否则继续下一次循环。通常是基于循环节点的执行结果进行判断,例如循环调用插件获取数据,当插件执行失败时停止循环,否则持续执行循环只会得到同样的错误结果。
无限循环适用于以下场景:
无限循环需要通过终止循环节点停止循环。终止循环节点通常和条件判断节点关联使用,条件判断节点判断某个条件成立时,流转到终止循环节点,自动跳出循环。
例如批处理场景中,可以持续调用某个插件,如果插件返回报错,则停止循环。通过选择器节点判断插件的返回数据中是否存在 error_code,如果 error_code 不为空,说明插件执行报错,则流转到终止循环节点,主动跳出循环。
说明
循环节点支持设置中间变量,此变量可作用于每一次循环。中间变量通常和循环体中的设置变量节点搭配使用,在每次循环结束后为中间变量设置一个新的值,并在下次循环中使用新值。
例如在长文生成场景中,通过中间变量将每一轮的段落总结作为变量传递到下次循环中,让大模型参考之前的段落内容和下一段的主题,生成一个上下文衔接更流畅的段落。
各个节点配置如下:
last_paragraph,参数值设置为一个空格。首次循环中生成第一个段落时,不需要参考大纲以外的任何内容,所以将循环变量的值指定为一个空格,你也可以按需设置为其他内容。last_paragraph;设置值选择大模型的输出参数 output,表示开始下次循环前,将本次循环中大模型生成的段落赋值给循环变量。说明
在设置变量节点中,中间变量的数据类型必须和设置值的数据类型一致,否则无法赋值。
创建循环节点后,会生成一个循环节点和对应的循环体画布。循环体画布是循环节点的内部运行机制,用于编排循环的主逻辑,每个循环迭代中,工作流会依次执行画布内的各个节点。你需要在循环节点和上下游节点之间添加连线,但无需调整循环体和循环节点之间的连线。
选中循环体时,才能向循环体中添加新节点,或拖入新节点至循环体画布。循环体中无需设置开始节点或结束节点,默认按照连接线的箭头方向依次执行各个节点。
说明
设置变量节点、继续循环节点和停止循环节点只能在循环体中使用。
循环节点的输出参数可设置为循环体的执行结果集合,表示当数组中所有元素运行完毕之后,将所有循环的运行结果打包输出给下游。也支持设置为循环变量的取值。
配置循环节点之后,你还需要试运行这个节点,查看其输入输出是否符合预期。调试结束后,循环节点的运行结果中会显示循环节点在多轮循环之后汇总的输入输出内容。循环体中的每个节点也会展示每次循环中的输入输出、变量赋值内容。
循环节点中的循环数组参数必须引用上游节点的输出参数,且参数类型为数组类型。大模型、代码等节点均支持数组格式的输出参数。如果你只能拿到文本格式的内容,可以通过代码节点将文本内容转为数组格式。
例如长文总结场景下,需要通过 LinkReaderPlugin 插件提取 PDF 内容,并将其作为循环节点的循环参数。LinkReaderPlugin 插件的输出参数 pdf_content 为 String 类型,可以通过代码节点转为数组类型。
代码示例:
把段落按换行符(\n)拆分成数组。
async def main(args: Args) -> Output:
params = args.params
ret: Output = {
"key0": params['input'].split("\n") ,
}
return ret
配置示例:
循环节点模式不同,结束循环的方式不同。
选中循环体时,才能向循环体中添加新节点,或拖入新节点至循环体画布。不支持将循环体外部的节点拖动至循环体内,循环体中的节点也不可移动到循环体之外。