Dify工作流中的迭代节点

一.定义

迭代节点的本质就是对数组内容循环处理。对数组执行多次步骤直至输出所有结果。

迭代步骤在列表中的每个条目(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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NLP工程化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值