跳到主要内容

循环 (Loop)

循环 (Loop) 组件通过将单个项目传递给连接在 项目 (Item) 输出端口的其他组件来遍历输入列表,直到没有待处理的项目为止。 然后,循环 (Loop) 组件将所有循环的聚合结果传递给连接到 完成 (Done) 端口的组件。

循环过程

循环 (Loop) 组件就像是您工作流中的一个微型流。 以下是循环过程的详细说明:

  1. 通过 循环 (Loop) 组件的 输入 (Inputs) 端口接受 数据 (Data)数据框 (DataFrame) 对象列表(例如 CSV 文件)。

  2. 将输入拆分为单个项目。例如,CSV 文件按行拆分。

    具体而言,循环 (Loop) 组件会重复提取 DataDataFrame 对象中 text 键对应的项目,直到没有更多项目可提取为止。 每个 item 输出都是一个 Data 对象。

  3. 通过将每个 item 传递到 项目 (Item) 输出端口来对其进行遍历。

    此端口连接到一个或多个对每个项目执行操作的组件。 项目 (Item) 循环中的最后一个组件连接回 循环 (Loop) 组件的 循环中 (Looping) 端口,以处理下一个项目。

    只有一个组件连接到 项目 (Item) 端口,但您可以根据需要让数据流经任意数量的组件,只要链条中的最后一个组件连接回 循环中 (Looping) 端口即可。

    If-Else 组件循环 (Loop) 组件不兼容。 有关更多信息,请参阅 条件循环

  4. 处理完所有项目后,结果将聚合为单个 Data 对象,该对象从 循环 (Loop) 组件的 完成 (Done) 端口传递到工作流中的下一个组件。

以下简化的 Python 代码总结了 循环 (Loop) 组件的工作原理。 这不是实际的组件代码;它只是为了帮助您理解一般过程。


_10
for i in input: # 以列表形式接收输入数据
_10
process_item(i) # 通过连接在 Item 端口的组件处理每个项目
_10
if has_more_items():
_10
continue # 返回到 Looping 端口处理下一个项目
_10
else:
_10
break # 当没有剩余项目时退出循环
_10
_10
done = aggregate_results() # 编译所有返回的项目
_10
_10
print(done) # 将聚合结果从 Done 端口发送到另一个组件

循环示例

在以下示例中,循环 (Loop) 组件遍历一个 CSV 文件,直到没有剩余行可处理。 在这种情况下,项目 (Item) 端口将每一行传递给 类型转换 (Type Convert) 组件以将该行转换为 Message 对象,将 Message 传递给 结构化输出 (Structured Output) 组件以处理成结构化数据,然后将其传递回 循环 (Loop) 组件的 循环中 (Looping) 端口。 处理完所有行后,循环 (Loop) 组件通过连接到 完成 (Done) 端口的 Chroma DB 组件将聚合后的结构化数据列表加载到 Chroma DB 数据库中。

循环 CSV 解析器

提示

有关 循环 (Loop) 组件的更多示例,请尝试 Langflow 中的 Research Translation Loop 模板,或查看视频教程 Mastering the Loop Component & Agentic RAG in Langflow

条件循环

If-Else 组件循环 (Loop) 组件不兼容。 如果您需要条件循环事件,请重新设计您的工作流,在循环之前处理条件。 例如,如果您正在遍历一个 DataFrame,您可以使用多个 数据框操作 (DataFrame Operations) 组件 来有条件地过滤数据,然后在每组过滤后的数据上运行单独的循环。

具有条件循环的工作流。

Search