迭代

定义

对数组执行多次步骤直至输出所有结果。

迭代步骤在列表中的每个条目(item)上执行相同的步骤。使用迭代的条件是确保输入值已经格式化为列表对象。迭代节点允许 AI 工作流处理更复杂的处理逻辑,迭代节点是循环节点的友好版本,它在自定义程度上做出了一些妥协,以便非技术用户能够快速入门。


场景

示例1:长文章迭代生成器

  1. 开始节点 内输入故事标题和大纲

  2. 使用 代码节点 从用户输入中提取出完整内容

  3. 使用 参数提取节点 将完整内容转换成数组格式

  4. 通过 迭代节点 包裹的 LLM 节点 循环多次生成各章节内容

  5. 直接回复 节点添加在迭代节点内部,实现在每轮迭代生成之后流式输出

具体配置步骤

  1. 开始节点 配置故事标题(title)和大纲(outline);

  1. 通过 Jinja-2 模板节点 将故事标题与大纲转换为完整文本;

  1. 通过 参数提取节点,将故事文本转换成为数组(Array)结构。提取参数为 sections ,参数类型为 Array[Object]

参数提取效果受模型推理能力和指令影响,使用推理能力更强的模型,在指令内增加示例可以提高参数提取的效果。

  1. 将数组格式的故事大纲作为迭代节点的输入,在迭代节点内部使用 LLM 节点 进行处理

在 LLM 节点内配置输入变量 GenerateOverallOutline/output Iteration/item

迭代的内置变量:items[object]index[number]

items[object] 代表以每轮迭代的输入条目;

index[number] 代表当前迭代的轮次;

  1. 在迭代节点内部配置 直接回复节点 ,可以实现在每轮迭代生成之后流式输出。

  1. 完整调试和预览

示例 2:长文章迭代生成器(另一种编排方式)

  • 开始节点 内输入故事标题和大纲

  • 使用 LLM 节点 生成文章小标题,以及小标题对应的内容

  • 使用 代码节点 将完整内容转换成数组格式

  • 通过 迭代节点 包裹的 LLM 节点 循环多次生成各章节内容

  • 使用 模板转换 节点将迭代节点输出的字符串数组转换为字符串

  • 在最后添加 直接回复节点 将转换后的字符串直接输出

什么是数组内容

列表是一种特定的数据类型,其中的元素用逗号分隔,以 [ 开头,以 ] 结尾。例如:

数字型:

[0,1,2,3,4,5]

字符串型:

["monday", "Tuesday", "Wednesday", "Thursday"]

JSON 对象:

[
    {
        "name": "Alice",
        "age": 30,
        "email": "alice@example.com"
    },
    {
        "name": "Bob",
        "age": 25,
        "email": "bob@example.com"
    },
    {
        "name": "Charlie",
        "age": 35,
        "email": "charlie@example.com"
    }
]

支持返回数组的节点

  • 代码节点

  • 参数提取

  • 知识库检索

  • 迭代

  • 工具

  • HTTP 请求

如何获取数组格式的内容

使用 CODE 节点返回

使用 参数提取 节点返回

如何将数组转换为文本

迭代节点的输出变量为数组格式,无法直接输出。你可以使用一个简单的步骤将数组转换回文本。

使用代码节点转换

def main(articleSections: list):
    data = articleSections
    return {
        "result": "\n".join(data)
    }

使用模板节点转换

{{ articleSections | join("\n") }}

最后更新于