跳到主要内容

Langflow 中的逻辑组件

逻辑组件提供路由、条件处理和流程管理功能。

在流程中使用逻辑组件

此流程使用 Loop 组件创建一个用于摘要的“for each”循环。

该组件会遍历一个 Data 对象列表,直到完成,然后 Done 循环会汇总结果。

File 组件从您的本地机器加载文本文件,然后 Parse Data 组件将它们解析为结构化的 Data 对象列表。Loop 组件将每个 Data 对象传递给 Prompt 进行摘要。

Loop 组件处理完所有 Data 后,Done 循环会激活,统计页面数量并使用另一个 Prompt 总结它们的语气。在 Langflow 中,这通过将 Parse Data 组件的 Data List 输出连接到 Loop 组件的 Data 循环输入来实现。

Sample Flow looping summarizer

输出类似于此


_10
文档摘要
_10
处理的总页数
_10
总页数:2
_10
文档的整体语气
_10
语气:信息丰富且具有指导性
_10
本文档概述了微服务架构模式和最佳实践。
_10
它强调服务隔离和跨服务通信协议。
_10
建议使用异步消息模式以提高系统可伸缩性。
_10
它包含 REST 和 gRPC 实现的代码示例,以演示集成方法。

条件路由器 (If-Else 组件)

此组件通过比较两个字符串来路由消息。它使用指定的运算符比较两个文本输入来评估条件,并将消息路由到 true_resultfalse_result

运算符根据您定义的操作符行为查找单个字符串,但也可以通过正则表达式匹配搜索多个单词。

要使用 Conditional router 组件检查传入消息的正则表达式匹配,请执行以下操作

  1. If-Else 组件的 Text Input 端口连接到 Chat Input 组件。
  2. 在 If-Else 组件中,输入以下值。
  • Match Text 字段中,输入 .*(urgent|warning|caution).*。该组件会查找这些值。正则表达式匹配区分大小写,因此要查找 warning 的所有变体,请输入 warning|Warning|WARNING
  • Operator 字段中,输入 regex。该组件会查找字符串 urgentwarningcaution。有关更多运算符,请参见运算符行为
  • Message 字段中,输入 New Message Detected。此字段是可选的。消息会发送到 TrueFalse 两个端口。现在组件已设置为,如果匹配任何字符串,则从其 True 端口发送 New Message Detected 消息。如果未检测到任何字符串,则从 False 端口发送消息。
  1. 创建两个相同的流程来处理消息。将 Open AI 组件、Prompt 组件和 Chat Output 组件连接在一起。
  2. 将一个链连接到 If-Else 组件的 True 端口,将另一个链连接到 False 端口。

流程如下所示

A conditional router connected to two OpenAI components

  1. 将您的 OpenAI API key 添加到两个 OpenAI 组件中。
  2. 在两个 Prompt 组件中,输入您希望每条路由采取的行为。当找到匹配项时

_10
发送一条消息,说明已收到一条新消息并已添加到紧急队列。

当未找到匹配项时


_10
发送一条消息,说明已收到一条新消息并已添加到积压工作。

  1. 打开 Playground
  2. 向流程发送一些消息。您的消息会根据 if-else 组件的评估结果路由到不同的路径。

_11
用户
_11
创建了一个新用户。
_11
_11
AI
_11
已收到一条新消息并已添加到积压工作。
_11
_11
用户
_11
登录警告:新用户已被锁定。
_11
_11
AI
_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_textmatch_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 端口构成了“主”循环,该循环会重复执行直到达到“完成”条件。

  1. Loop 组件接受来自 Load CSV 组件的 Data,并从 Item 端口输出数据。
  2. 每个 CSV 行被转换为 Message,并使用 Structured Output 组件处理成结构化数据。从 Structured Output 组件的 Looping 端口连接出的虚线表示循环再次开始的地方。
  3. Loop 组件通过 Text Key 重复提取行,直到没有更多行可提取。

处理完所有项后,执行连接到 Done 端口的操作。在此示例中,数据被加载到 Chroma DB 中。

Loop CSV parser

跟随这个分步视频指南学习如何创建此流程并添加 Agentic RAG:Mastering the Loop Component & Agentic RAG in Langflow

参数

输入

名称类型描述
dataData/列表要处理的 Data 对象初始列表。

输出

名称类型描述
item数据正在从数据列表中处理的当前项。
done数据处理完所有项后的汇总结果。

通知

此组件生成供 Listen 组件使用的通知。

参数

输入

名称类型描述
name字符串name
data数据要存储在通知中的数据。
append布尔值设置为 true 时,记录被添加到现有通知中。

输出

名称类型描述
output数据通知中存储的数据。

传递消息

此组件转发输入的原始消息。

参数

输入

名称显示名称信息
input_message输入消息要转发的消息。
ignored_message被忽略的消息被忽略的第二条消息。用作连续性的权宜之计。

输出

名称显示名称信息
output_message输出消息从输入转发的消息。

运行流程

此组件允许您运行存储在 Langflow 数据库中的任何流程,而无需打开流程编辑器。

Run Flow 组件连接到 Agent 时也可以用作工具。Agent 用于注册工具的 namedescription 元数据会自动创建。

选择流程后,组件会获取流程的图结构,并用它为 Run Flow 组件生成输入和输出。

要将 Run Flow 组件用作工具,请执行以下操作

  1. Run Flow 组件添加到Simple Agent流程中。
  2. Flow Name 菜单中,选择要运行的子流程。Run Flow 组件的外观会随所选流程的输入和输出而改变。
  3. Run Flow 组件上,启用 Tool Mode
  4. Run Flow 组件连接到 Agent 的 Toolset 输入。您的流程现在应如下图所示:Run Flow component
  5. 运行流程。Agent 使用 Run Flow 组件作为工具来运行选定的子流程。
参数

输入

名称类型描述
flow_name_selected下拉菜单要运行的流程名称。
flow_tweak_data字典用于自定义流程行为的调整字典。
dynamic inputs多种根据所选流程生成的额外输入。

输出

名称类型描述
run_outputsData、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_outputData/列表满足条件时的输出。
false_outputData/列表不满足条件时的输出。

运算符行为

  • 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_outputsList[Data]流程生成的输出。
Search