一.定义
迭代节点的本质就是对数组内容循环处理。对数组执行多次步骤直至输出所有结果。
迭代步骤在列表中的每个条目(item)上执行相同的步骤。使用迭代的条件是确保输入值已经格式化为列表对象。迭代节点允许 AI 工作流处理更复杂的处理逻辑,迭代节点是循环节点的友好版本,它在自定义程度上做出了一些妥协,以便非技术用户能够快速入门。
二.场景
1.示例1:长文章迭代生成器
(1)在 开始节点内输入故事标题和大纲
在 开始节点配置故事标题(title)和大纲(outline)。
(2)使用 代码节点从用户输入中提取出完整内容
通过 Jinja-2 模板节点 将故事标题与大纲转换为完整文本。
(3)使用 参数提取节点将完整内容转换成数组格式
通过 参数提取节点,将故事文本转换成为数组(Array)结构。提取参数为 sections
,参数类型为 Array[Object]
。
(4)通过 迭代节点包裹的LLM 节点循环多次生成各章节内容
将数组格式的故事大纲作为迭代节点的输入,在迭代节点内部使用 LLM 节点进行处理。
在 LLM 节点内配置输入变量 GenerateOverallOutline/output
和 Iteration/item
其中,迭代的内置变量包括items[object]
和 index[number]
。items[object]
代表以每轮迭代的输入条目;index[number]
代表当前迭代的轮次。
(5)将 直接回复 节点添加在迭代节点内部,实现在每轮迭代生成之后流式输出
在迭代节点内部配置 直接回复节点 ,可以实现在每轮迭代生成之后流式输出。
(6)完整调试和预览
按故事章节多轮迭代生成,如下所示:
2.示例 2:长文章迭代生成器(另一种编排方式)
-
在 开始节点内输入故事标题和大纲
-
使用 LLM 节点生成文章小标题,以及小标题对应的内容
-
使用 代码节点将完整内容转换成数组格式
-
通过 迭代节点包裹的 LLM 节点循环多次生成各章节内容
-
使用 模板转换节点将迭代节点输出的字符串数组转换为字符串
-
在最后添加 直接回复节点将转换后的字符串直接输出
三.什么是数组内容
列表是一种特定的数据类型,其中的元素用逗号分隔,以 [
开头,以 ]
结尾。比如,数字型,字符串型,JSON 对象。
四.支持返回数组的节点
-
代码节点
-
参数提取
-
知识库检索
-
迭代
-
工具
-
HTTP 请求
五.如何获取数组格式的内容
1.使用 CODE 节点返回
2.使用 参数提取 节点返回
六.如何将数组转换为文本
迭代节点的输出变量为数组格式,无法直接输出。可使用一个简单的步骤将数组转换回文本。
1.使用代码节点转换
def main(articleSections: list):
data = articleSections
return {
"result": "\n".join(data)
}
2.使用模板节点转换
{{ articleSections | join("\n") }}
参考文献
[1] 迭代:https://docs.dify.ai/v/zh-hans/guides/workflow/node/iteration