处理组件
Langflow 的 处理 组件在流程中处理和转换数据。 它们有许多用途,包括:
- 使用 提示模板 组件 为您的 LLM 和代理提供指令和上下文。
- 使用 解析器 组件 从更大的数据块中提取内容。
- 使用 智能函数 组件 通过自然语言过滤数据。
- 使用 保存文件 组件 将数据保存到本地计算机。
- 使用 类型转换 组件 将数据转换为不同的数据类型,以便在不兼容的组件之间传递。
提示模板
请参阅 提示模板 组件。
批量运行
批量运行 组件在 DataFrame
的 单个文本列的每一行 上运行语言模型,然后返回一个新的 DataFrame
,其中包含原始文本和 LLM 响应。
输出包含以下列:
text_input
: 来自输入DataFrame
的原始文本model_response
: 每个输入的模型响应batch_index
:DataFrame
中所有行的 0 索引处理顺序metadata
(可选): 关于处理的附加信息
在流程中使用批 量运行组件
如果您将 批量运行 的输出传递给 解析器 组件,您可以在解析模板中使用变量来引用这些键,例如 {text_input}
和 {model_response}
。
以下示例演示了这一点。
-
将 语言模型 组件连接到 批量运行 组件的 语言模型 端口。
-
将来自另一个组件的
DataFrame
输出连接到 批量运行 组件的 DataFrame 输入。 例如,您可以连接一个包含 CSV 文件的 文件 组件。 -
在 批量运行 组件的 列名 字段中,输入传入的
DataFrame
中包含要处理的文本的列名。 例如,如果您想从 CSV 文件的name
列中提取文本,请在 列名 字段中输入name
。 -
将 批量运行 组件的 批量结果 输出连接到 解析器 组件的 DataFrame 输入。
-
可选:在 批量运行 组件的标题菜单 中,点击 控制,启用 系统消息 参数,点击 关闭,然后输入您希望 LLM 如何处理从文件中提取的每个单元格的指令。 例如,
为每个名称创建名片。
-
在 解析器 组件的 模板 字段中,输入一个用于处理 批量运行 组件的新
DataFrame
列(text_input
、model_response
和batch_index
)的模板:例如,此模板使用批量处理后结果
DataFrame
中的三列:_10记录编号: {batch_index}, 名称: {text_input}, 摘要: {model_response} -
要测试处理,点击 解析器 组件,点击 运行组件,然后点击 检查输出 以查看最终的
DataFrame
。如果您想在 游乐场 中查看输出,也可以将 聊天输出 组件连接到 解析器 组件。
批量运行参数
在可视化编辑器中,部分参数默认情况下是隐藏的。 您可以通过组件的头部菜单中的 控件 来修改所有参数。
名称 | 类型 | 描述 |
---|---|---|
model | HandleInput | 输入参数。连接来自 语言模型 组件的 '语言模型' 输出。必需。 |
system_message | MultilineInput | 输入参数。针对 DataFrame 中所有行的多行系统指令。 |
df | DataFrameInput | 输入参数。其列被视为文本消息的 DataFrame,由 'column_name' 指定。必需。 |
column_name | MessageTextInput | 输入参数。被视为文本消息的 DataFrame 列名。如果为空,所有列将以 TOML 格式化。 |
output_column_name | MessageTextInput | 输入参数。存储模型响应的列名。默认=model_response 。 |
enable_metadata | BoolInput | 输入参数。如果为 True,则向输出 DataFrame 添加元数据。 |
batch_results | DataFrame | 输出参数。包含所有原始列加上模型响应列的 DataFrame。 |
数据操作
数据操作组件对 Data
对象执行操作,包括在 Data
中提取、过滤和编辑键和值。
有关所有选项,请参阅可用的数据操作。
输出是一个新的 Data
对象,其中包含运行选定操作后修改的数据。
在流程中使用数据操作组件
以下示例演示了如何使用来自 webhook 负载数据的 数据操作 组件在流程中使用:
-
创建一个包含 Webhook 组件和 数据操作 组件的流程,然后将 Webhook 组件的输出连接到 数据操作 组件的 Data 输入。
数据操作 组件中的所有操作都需要至少一个来自其他组件的
Data
输入。 如果前一个组件不产生Data
输出,您可以使用另一个组件(如 Type Convert 组件)在将数据传递给 数据操作 组件之前重新格式化数据。 或者,您可以考虑使用专门用于处理原始数据类型的组件,如 Parser 或 DataFrame Operations 组件。 -
在 Operations 字段中,选择要对传入的
Data
执行的操作。 对于此示例,选择 Select Keys 操作。提示您只能选择一个操作。 如果需要对数据执行多个操作,可以将多个 数据操作 组件链接在一起,以顺序执行每个操作。 对于更复杂的多步操作,请考虑使用类似 Smart Function 组件的组件。
-
在 Select Keys 下,为
name
、username
和email
添加键。 点击 Add more 为每个键添加一个字段。对于此示例,假设 webhook 将接收始终包含
name
、username
和email
键的一致负载。 Select Keys 操作从每个传入负载中提取这些键的值。 -
可选:如果要在 Playground 中查看输出,请将 数据操作 组件的输出连接到 Chat Output 组件。
-
要测试流程,请将以下请求发送到您的流程 webhook 端点。 有关 webhook 端点的更多信息,请参阅使用 webhook 触发流程。
_26curl -X POST "http://$LANGFLOW_SERVER_URL/api/v1/webhook/$FLOW_ID" \_26-H "Content-Type: application/json" \_26-H "x-api-key: $LANGFLOW_API_KEY" \_26-d '{_26"id": 1,_26"name": "Leanne Graham",_26"username": "Bret",_26"email": "[email protected]",_26"address": {_26"street": "Main Street",_26"suite": "Apt. 556",_26"city": "Springfield",_26"zipcode": "92998-3874",_26"geo": {_26"lat": "-37.3159",_26"lng": "81.1496"_26}_26},_26"phone": "1-770-736-8031 x56442",_26"website": "hildegard.org",_26"company": {_26"name": "Acme-Corp",_26"catchPhrase": "Multi-layered client-server neural-net",_26"bs": "harness real-time e-markets"_26}_26}' -
要查看 Select Keys 操作产生的
Data
,请执行以下操作之一:- 如果您附加了 Chat Output 组件,请打开 Playground 以聊天消息的形式查看结果。
- 在 数据操作 组件上点击 Inspect output。
数据操作参数
许多参数基于所选的 Operation (operation
) 条件化。
Name | Display Name | Info |
---|---|---|
data | Data | 输入参数。要操作的 Data 对象。 |
operation | Operation | 输入参数。要对数据执行的操作。请参阅可用的数据操作 |
select_keys_input | Select Keys | 输入参数。要从数据中选择键的列表。 |
filter_key | Filter Key | 输入参数。要按其筛选的键。 |
operator | Comparison Operator | 输入参数。用于比较值的运算符。 |
filter_values | Filter Values | 输入参数。要按其筛选的值列表。 |
append_update_data | Append or Update | 输入参数。要追加或更新现有数据的数据。 |
remove_keys_input | Remove Keys | 输入参数。要从数据中移除的键列表。 |
rename_keys_input | Rename Keys | 输入参数。要在数据中重命名的键列表。 |
可用的数据操作
operations
输入参数的选项如下。
所有操作都作用于传入的 Data
对象。
名称 | 必需输入 | 处理过程 |
---|---|---|
选择键 | select_keys_input | 从数据中选择特定的键。 |
字面量求值 | 无 | 将字符串值作为 Python 字面量进行求值。 |
合并 | 无 | 将多个数据对象合并为一个。 |
过滤值 | filter_key , filter_values , operator | 根据键值对过滤数据。 |
追加或更新 | append_update_data | 添加或更新键值对。 |
移除键 | remove_keys_input | 从数据中移除指定的键。 |
重命名键 | rename_keys_input | 重命名数据中的键。 |
DataFrame 操作
DataFrame 操作组件对 DataFrame
(表格)的行和列执行操作,包括模式更改、记录更改、排序和过滤。
有关所有选项,请参阅 DataFrame 操作参数。
输出是一个新的 DataFrame
,包含运行选定操作后修改的数据。
在流程中使用 DataFrame Operations 组件
以下步骤说明如何在流程中配置 DataFrame Operations 组件。
您可以跟随示例进行操作,也可以使用自己的流程。
唯一的要求是,前一个组件必须创建可以传递给 DataFrame Operations 组件的 DataFrame
输出。
-
创建新流程或使用现有流程。
示例:API 响应提取流程
以下示例流程使用五个组件从 API 响应中提取
Data
,将其转换为DataFrame
,然后使用 DataFrame Operations 组件对表格数据进行进一步处理。 第六个组件 Chat Output 在此示例中是可选的。 它只是为您在 Playground 中查看最终输出提供了一种便捷方式,而不是检查组件日志。如果您想使用此示例测试 DataFrame Operations 组件,请执行以下操作:
-
创建包含以下组件的流程:
- API Request
- Language Model
- Smart Function
- Type Convert
-
配置 Smart Function 组件 及其依赖项:
- API Request:配置 API Request 组件 以从您选择的端点获取 JSON 数据,然后将 API Response 输出连接到 Smart Function 组件的 Data 输入。
- Language Model:选择您首选的提供商和模型,然后输入有效的 API 密钥。
将输出更改为 Language Model,然后将
LanguageModel
输出连接到 Smart Function 组件的 Language Model 输入。 - Smart Function:在 Instructions 字段中,输入自然语言指令以从 API 响应中提取数据。
您的指令取决于响应内容和期望结果。
例如,如果响应包含一个大型
result
字段,您可能会提供类似explode the result field out into a Data object
的指令。
-
将 Smart Function 组件的
Data
输出转换为DataFrame
:- 将 Filtered Data 输出连接到 Type Convert 组件的 Data 输入。
- 将 Type Convert 组件的 Output Type 设置为 DataFrame。
现在流程已准备好,您可以添加 DataFrame Operations 组件了。
-
-
将 DataFrame Operations 组件添加到流程中,然后将另一个组件的
DataFrame
输出连接到 DataFrame 输入。DataFrame Operations 组件中的所有操作都需要至少一个来自另一个组件的
DataFrame
输入。 如果某个组件不产生DataFrame
输出,您可以使用另一个组件(如 Type Convert 组件)在数据传递给 DataFrame Operations 组件之前重新格式化数据。 或者,您可以考虑使用专门用于处理原始数据类型的组件,如 Parser 或 Data Operations 组件。如果您正在跟随示例流程进行操作,请将 Type Convert 组件的 DataFrame Output 端口连接到 DataFrame 输入。
-
在 Operations 字段中,选择您要对传入的
DataFrame
执行的操作。 例如,Filter 操作根据指定的列和值过滤行。提示您只能选择一个操作。 如果需要对数据执行多个操作,可以将多个 DataFrame Operations 组件链接在一起,以顺序执行每个操作。 对于更复杂的多步操作,如重大的架构更改或透视操作,可以考虑使用由 LLM 驱动的组件,如 Structured Output 或 Smart Function 组件,作为 DataFrame Operations 组件的替代或准备。 :::如果您正在按照示例流程操作,请选择您想要应用于 Smart Function 组件提取的数据的任何操作。 要查看传入的
DataFrame
的内容,请在 Type Convert 组件上点击 Run component,然后点击 Inspect output。 如果DataFrame
似乎格式不正确,请点击每个上游组件上的 Inspect output 以确定错误发生的位置,然后根据需要修改您的流程配置。 例如,如果 Smart Function 组件没有提取预期的字段,请修改您的指令或验证给定的字段是否存在于 API Response 输出中。 -
配置操作的参数。 具体参数取决于所选操作。 例如,如果您选择 Filter 操作,则必须使用 Column Name、Filter Value 和 Filter Operator 参数定义过滤条件。 有关更多信息,请参阅 DataFrame Operations parameters
-
要测试流程,请在 DataFrame Operations 组件上点击 Run component,然后点击 Inspect output 以查看从 Filter 操作创建的新
DataFrame
。如果您想在 Playground 中查看输出,请将 DataFrame Operations 组件的输出连接到 Chat Output 组件,重新运行 DataFrame Operations 组件,然后点击 Playground。
有关另一个示例,请参阅 Conditional looping。
DataFrame 操作参数
大多数 DataFrame 操作 参数都是条件性的,因为它们只适用于特定的操作。
唯一的永久参数是 DataFrame (df
),即 DataFrame
输入,以及 操作 (operation
),即要对 DataFrame
执行的操作。
一旦您选择了一个操作,该操作的条件参数就会出现在 DataFrame 操作 组件中。
- Add Column
- Drop Column
- Filter
- Head
- Rename Column
- Replace Value
- Select Columns
- Sort
- Tail
- Drop Duplicates
添加列 操作允许您使用常量值向 DataFrame
添加新列。
参数为 新列名 (new_column_name
) 和 新列值 (new_column_value
)。
删除列 操作允许您从 DataFrame
中删除列,由 列名 (column_name
) 指定。
筛选 操作允许您根据指定条件筛选 DataFrame
。
输出是一个仅包含匹配筛选条件的行的 DataFrame
。
提供以下参数:
- 列名 (
column_name
):要筛选的列的名称。 - 筛选值 (
filter_value
):要筛选的值。 - 筛选操作符 (
filter_operator
):用于筛选的操作符,包括equals
(默认)、not equals
、contains
、starts with
、ends with
、greater than
或less than
之一。
头部 操作允许您获取 DataFrame
的前 n
行,其中 n
在 行数 (num_rows
) 中设置。
默 认值为 5
。
输出是一个仅包含所选行的 DataFrame
。
重命名列 操作允许您重命名 DataFrame
中的现有列。
参数为 列名 (column_name
),即当前名称,和 新列名 (new_column_name
)。
替换值 操作允许您替换 DataFrame
特定列中的值。
此操作将目标值替换为新值。
在新 DataFrame
输出中,所有匹配目标值的单元格都会被替换为新值。
提供以下参数:
- 列名 (
column_name
):要修改的列的名称。 - 要替换的值 (
replace_value
):您想要替换的值。 - 替换值 (
replacement_value
):要使用的新值。
选择列 操作允许您从 DataFrame
中选择一个或多个特定列。
在 要选择的列 (columns_to_select
) 中提供列名列表。
在可视化编辑器中,点击 添加更多 来添加多个字段,然后在每个字段中输入一个列名。
输出是一个仅包含指定列的 DataFrame
。
排序 操作允许您按特定列对 DataFrame
进行升序或降序排序。
提供以下参数:
- 列名 (
column_name
):要排序的列的名称。 - 升序排序 (
ascending
):是否按升序或降序排序。如果启用(true),则按升序排序;如果禁用(false),则按降序排序。默认值:启用(true)
尾部 操作允许您获取 DataFrame
的最后 n
行,其中 n
在 行数 (num_rows
) 中设置。
默认值为 5
。
输出是一个仅包含所选行的 DataFrame
。
删除重复项 操作通过识别单个列中的所有重复值来从 DataFrame
中删除行。
唯一的参数是 列名 (column_name
)。
当流程运行时,给定列中具有重复值的所有行都会被删除。
输出是一个包含原始 DataFrame
中所有列但仅包含非重复值的行的 DataFrame
。
LLM路由器
LLM路由器组件根据OpenRouter模型规范将请求路由到最合适的LLM。
要在工作流中使用此组件,您需要将多个语言模型组件连接到LLM路由器组件。 其中一个模型是判断LLM,它分析输入消息以理解评估上下文,从其他附加的LLM中选择最合适的模型,然后将输入路由到所选模型。 所选模型处理输入,然后返回生成的响应。
以下示例工作流包含三个语言模型组件。 一个是判断LLM,另外两个在用于请求路由的LLM池中 。 聊天输入和聊天输出组件创建了一个无缝的聊天交互,您可以在其中发送消息并接收响应,而无需用户了解底层路由。
LLM路由器参数
在可视化编辑器中,部分参数默认情况下是隐藏的。 您可以通过组件的头部菜单中的 控件 来修改所有参数。
名称 | 显示名称 | 信息 |
---|---|---|
models | 语言模型 | 输入参数。连接多个语言模型组件的LanguageModel 输出,以创建模型池。judge_llm 在路由请求时从此池中选择模型。如果模型选择或路由出现问题,您连接的第一个模型将是默认模型。 |
input_value | 输入 |