Langflow 中的逻辑组件
逻辑组件提供路由、条件处理和流程管理功能。
在流程中使用逻辑组件
此流程使用 Loop 组件创建一个用于摘要的“for each”循环。
该组件会遍历一个 Data 对象列表,直到完成,然后 Done 循环会汇总结果。
File 组件从您的本地机器加载文本文件,然后 Parse Data 组件将它们解析为结构化的 Data
对象列表。Loop 组件将每个 Data
对象传递给 Prompt 进行摘要。
当 Loop 组件处理完所有 Data
后,Done 循环会激活,统计页面数量并使用另一个 Prompt 总结它们的语气。在 Langflow 中,这通过将 Parse Data 组件的 Data List 输出连接到 Loop 组件的 Data
循环输入来实现。
输出类似于此
_10文档摘要_10处理的总页数_10总页数:2_10文档的整体语气_10语气:信息丰富且具有指导性_10本文档概述了微服务架构模式和最佳实践。_10它强调服务隔离和跨服务通信协议。_10建议使用异步消息模式以提高系统可伸缩性。_10它包含 REST 和 gRPC 实现的代码示例,以演示集成方法。
条件路由器 (If-Else 组件)
此组件通过比较两个字符串来路由消息。它使用指定的运算符比较两个文本输入来评估条件,并将消息路由到 true_result
或 false_result
。
运算符根据您定义的操作符行为查找单个字符串,但也可以通过正则表达式匹配搜索多个单词。
要使用 Conditional router 组件检查传入消息的正则表达式匹配,请执行以下操作
- 将 If-Else 组件的 Text Input 端口连接到 Chat Input 组件。
- 在 If-Else 组件中,输入以下值。
- 在 Match Text 字段中,输入
.*(urgent|warning|caution).*
。该组件会查找这些值。正则表达式匹配区分大小写,因此要查找warning
的所有变体,请输入warning|Warning|WARNING
。 - 在 Operator 字段中,输入
regex
。该组件会查找字符串urgent
、warning
和caution
。有关更多运算符,请参见运算符行为。 - 在 Message 字段中,输入
New Message Detected
。此字段是可选的。消息会发送到 True 和 False 两个端口。现在组件已设置为,如果匹配任何字符串,则从其 True 端口发送New Message Detected
消息。如果未检测到任何字符串,则从 False 端口发送消息。
- 创建两个相同的流程来处理消息。将 Open AI 组件、Prompt 组件和 Chat Output 组件连接在一起。
- 将一个链连接到 If-Else 组件的 True 端口,将另一个链连接到 False 端口。
流程如下所示
- 将您的 OpenAI API key 添加到两个 OpenAI 组件中。
- 在两个 Prompt 组件中,输入您希望每条路由采取的行为。当找到匹配项时
_10发送一条消息,说明已收到一条新消息并已添加到紧急队列。
当未找到匹配项时
_10发送一条消息,说明已收到一条新消息并已添加到积压工作。
- 打开 Playground。
- 向流程发送一些消息。您的消息会根据 if-else 组件的评估结果路由到不同的路径。
_11用户_11创建了一个新用户。_11_11AI_11已收到一条新消息并已添加到积压工作。_11_11用户_11登录警告:新用户已被锁定。_11_11AI_11已收到一条新消息并已添加到紧急队列。请尽快查看。
参数
输入
名称 | 类型 | 描述 |
---|---|---|
input_text | 字符串 | 操作的主要文本输入。 |
match_text | 字符串 | 用于比较的文本。 |
operator | 下拉菜单 | 用于比较文本的运算符。选项包括 equals(等于)、not equals(不等于)、contains(包含)、starts with(开头是)、ends with(结尾是)和 regex(正则表达式)。默认为 equals。 |
case_sensitive | 布尔值 | 设置为 true 时,比较区分大小写。此设置不适用于正则表达式比较。默认为 false。 |
message | 消息 | 通过任一路由传递的消息。 |
max_iterations | 整数 | 条件路由器允许的最大迭代次数。默认为 10。 |
default_route | 下拉菜单 | 达到最大迭代次数时要采取的路由。选项包括 true_result 或 false_result。默认为 false_result。 |
输出
名称 | 类型 | 描述 |
---|---|---|
true_result | 消息 | 条件为 true 时产生的输出。 |
false_result | 消息 | 条件为 false 时产生的输出。 |
运算符行为
If-else 组件包含一个比较运算符,用于比较 input_text
和 match_text
中的值。
除 regex 外,所有选项都遵循 case_sensitive
设置。
- equals(等于):精确匹配比较。
- not equals(不等于):精确匹配的反向。
- contains(包含):检查
input_text
中是否找到match_text
。 - starts with(开头是):检查
input_text
是否以match_text
开头。 - ends with(结尾是):检查
input_text
是否以match_text
结尾。 - regex(正则表达式):执行正则表达式匹配。它始终区分大小写,并忽略
case_sensitive
设置。
监听
此组件监听通知并检索其关联的状态。
参数
输入
名称 | 类型 | 描述 |
---|---|---|
name | 字符串 | 要监听的通知名称。 |
输出
名称 | 类型 | 描述 |
---|---|---|
output | 数据 | 与通知关联的状态。 |
循环
此组件遍历 Data 对象列表,逐个输出项并汇总循环输入的结果。
在此示例中,Loop 组件通过 Item 端口遍历 CSV 文件,直到没有行需要处理。然后,Loop 组件执行连接到 Done 端口的操作,在本例中是将结构化数据加载到 Chroma DB 中。
可以这样理解:Item 端口构成了“主”循环,该循环会重复执行直到达到“完成”条件。
- Loop 组件接受来自 Load CSV 组件的 Data,并从 Item 端口输出数据。
- 每个 CSV 行被转换为 Message,并使用 Structured Output 组件处理成结构化数据。从 Structured Output 组件的 Looping 端口连接出的虚线表示循环再次开始的地方。
- Loop 组件通过 Text Key 重复提取行,直到没有更多行可提取。
处理完所有项后,执行连接到 Done 端口的操作。在此示例中,数据被加载到 Chroma DB 中。
跟随这个分步视频指南学习如何创建此流程并添加 Agentic RAG:Mastering the Loop Component & Agentic RAG in Langflow。
参数
输入
名称 | 类型 | 描述 |
---|---|---|
data | Data/列表 | 要处理的 Data 对象初始列表。 |
输出
名称 | 类型 | 描述 |
---|---|---|
item | 数据 | 正在从数据列表中处理的当前项。 |
done | 数据 | 处理完所有项后的汇总结果。 |
通知
此组件生成供 Listen 组件使用的通知。
参数
输入
名称 | 类型 | 描述 |
---|---|---|
name | 字符串 | name |
data | 数据 | 要存储在通知中的数据。 |
append | 布尔值 | 设置为 true 时,记录被添加到现有通知中。 |
输出
名称 | 类型 | 描述 |
---|---|---|
output | 数据 | 通知中存储的数据。 |
传递消息
此组件转发输入的原始消息。
参数
输入
名称 | 显示名称 | 信息 |
---|---|---|
input_message | 输入消息 | 要转发的消息。 |
ignored_message | 被忽略的消息 | 被忽略的第二条消息。用作连续性的权宜之计。 |
输出
名称 | 显示名称 | 信息 |
---|---|---|
output_message | 输出消息 | 从输入转发的消息。 |
运行流程
此组件允许您运行存储在 Langflow 数据库中的任何流程,而无需打开流程编辑器。
Run Flow 组件连接到 Agent 时也可以用作工具。Agent 用于注册工具的 name
和 description
元数据会自动创建。
选择流程后,组件会获取流程的图结构,并用它为 Run Flow 组件生成输入和输出。
要将 Run Flow 组件用作工具,请执行以下操作
- 将 Run Flow 组件添加到Simple Agent流程中。
- 在 Flow Name 菜单中,选择要运行的子流程。Run Flow 组件的外观会随所选流程的输入和输出而改变。
- 在 Run Flow 组件上,启用 Tool Mode。
- 将 Run Flow 组件连接到 Agent 的 Toolset 输入。您的流程现在应如下图所示:
- 运行流程。Agent 使用 Run Flow 组件作为工具来运行选定的子流程。
参数
输入
名称 | 类型 | 描述 |
---|---|---|
flow_name_selected | 下拉菜单 | 要运行的流程名称。 |
flow_tweak_data | 字典 | 用于自定义流程行为的调整字典。 |
dynamic inputs | 多种 | 根据所选流程生成的额外输入。 |
输出
名称 | 类型 | 描述 |
---|---|---|
run_outputs | Data、Message 或 DataFrame 类型的 List | 所有输出均由运行流程生成。 |
旧版组件
Legacy(旧版)组件可供使用,但不再受支持。
数据条件路由器
此组件为 Legacy(旧版),这意味着从 Langflow 1.3 版本起,它不再处于积极开发中。
此组件根据应用于指定键的条件(包括布尔验证)路由 Data
对象。它可以处理单个 Data 对象或 Data 对象列表。
此组件在需要对复杂数据结构进行条件路由的工作流中特别有用,能够基于数据内容实现动态决策。
输入
名称 | 类型 | 描述 |
---|---|---|
data_input | 数据 | 要处理的 Data 对象或 Data 对象列表。此输入可以处理单个项和列表。 |
key_name | 字符串 | 要检查的 Data 对象中的键名称。 |
operator | 下拉菜单 | 要应用的运算符。选项:“equals”(等于)、“not equals”(不等于)、“contains”(包含)、“starts with”(开头是)、“ends with”(结尾是)、“boolean validator”(布尔验证器)。默认:“equals”。 |
compare_value | 字符串 | 用于比较的值。当运算符为“boolean validator”时不显示/使用。 |
输出
名称 | 类型 | 描述 |
---|---|---|
true_output | Data/列表 | 满足条件时的输出。 |
false_output | Data/列表 | 不满足条件时的输出。 |
运算符行为
- equals(等于):键的值与 compare_value 之间的精确匹配比较。
- not equals(不等于):精确匹配的反向。
- contains(包含):检查键的值中是否找到 compare_value。
- starts with(开头是):检查键的值是否以 compare_value 开头。
- ends with(结尾是):检查键的值是否以 compare_value 结尾。
- boolean validator(布尔验证器):将键的值视为布尔值。以下值被视为 true:
- 布尔值
true
。 - 字符串:“true”、“1”、“yes”、“y”、“on”(不区分大小写)。
- 任何其他值使用 Python 的
bool()
函数进行转换。
- 布尔值
列表处理
处理 Data 对象列表时会发生以下操作:
- 列表中的每个对象都被单独评估
- 满足条件的对象进入 true_output
- 不满足条件的对象进入 false_output
- 如果所有对象都进入一个输出,则另一个输出为空
已弃用组件
已弃用组件已被更新的替代组件取代,不应在新项目中使用。
流程作为工具
此组件自 Langflow 1.1.2 版本起已弃用。请改用Run flow component
此组件根据运行已加载流程的函数构建一个工具。
输入
名称 | 类型 | 描述 |
---|---|---|
flow_name | 下拉菜单 | 要运行的流程名称。 |
tool_name | 字符串 | 工具的名称。 |
tool_description | 字符串 | 工具的描述。 |
return_direct | 布尔值 | 如果为 true,则直接从工具返回结果。 |
输出
名称 | 类型 | 描述 |
---|---|---|
api_build_tool | 工具 | 从流程构建的工具。 |
子流程
此组件自 Langflow 1.1.2 版本起已弃用。请改用Run flow component
此 SubFlowComponent
根据流程及其所有输入和输出生成一个组件。
此组件可以将整个流程作为组件集成到更大的工作流中。它根据所选流程动态生成输入,并使用提供的参数执行流程。
输入
名称 | 类型 | 描述 |
---|---|---|
flow_name | 下拉菜单 | 要运行的流程名称。 |
输出
名称 | 类型 | 描述 |
---|---|---|
flow_outputs | List[Data] | 流程生成的输出。 |