支持私有云部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Dify工作流节点篇(中)

发布日期:2025-03-26 07:40:22 浏览次数: 1693 来源:PM墨者
推荐语

深入探索Dify工作流的六大核心节点,掌握数据处理与转换的关键技术。

核心内容:
1. 模板转换节点:利用Jinja2模板语言实现数据的灵活转换
2. 文档提取器节点:解析文档内容,将信息转化为可处理的文本
3. 列表操作节点:对数组变量中的文件进行过滤和提取,实现精确控制

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家
今天我们主要介绍【模板转换】【文档提取器】【列表操作】【变量聚合】【变量赋值】【参数提取】这六种节点。
模版转换(Template)

模板转换节点允许借助 Jinja2 的 Python 模板语言灵活地进行数据转换、文本处理、JSON转换等等。可以合并来自前置节点的变量,创建出单一的文本输出,这非常适合将多个数据源的信息汇总成一个特定格式,满足后续步骤的需求。

比如,前置节点分别输出了一篇文章的标题和内容信息,然后使用模板转换节点拼接成完整的文章,然后输出给用户。

也可以将知识库检索出的信息,整理成Markdown格式并输出

文档提取器(Document Extractor)

我们都知道,LLM 自身无法直接读取或解释文档的内容。因此需要将用户上传的文档,通过文档提取器节点解析并读取文档文件中的信息,转化文本之后再将内容传给 LLM 以实现对于文件内容的处理。

文档提取器节点可以理解为一个信息处理中心,通过识别并读取输入变量中的文件,提取信息后并转化为 string 类型输出变量,供下游节点调用。
文档提取器节点结构分为输入变量、输出变量:
输入变量
文档提取器仅能够提取文档类型文件中的信息,例如 TXT、Markdown、PDF、HTML、DOCX 格式文件的内容,无法处理图片、音频、视频等格式文件。

文档提取器仅接受以下数据结构的变量:

Flie
单独一个文件
Array[File]
多个文件

输出变量

输出变量固定命名为 text。输出的变量类型取决于输入变量:

1、输入变量为File(单独一个文件),输出变量为string;

2、输入变量为Array[File](多个文件),输出变量则为array[string];

列表操作(List Operation)

文件列表变量支持同时上传文档文件、图片、音频与视频文件等多种文件。应用使用者在上传文件时,所有文件都存储在同一个 Array[File] 数组类型变量内,不利于后续单独处理文件,比如我们可能上传的是一个音频,一个视频,一个word文档和一个图片,但是LLM仅支持读取图片或文本内容等单一值作为输入变量,无法直接读取数组变量,这时候就可以利用列表操作节点在数组变量内提取单独的元素,便于后续节点处理。

列表操作节点可以对文件的格式类型、文件名、大小等属性进行过滤与提取,将不同格式的文件传递给对应的处理节点,以实现对不同文件处理流的精确控制。

列表操作节点一般用于提取数组变量中的信息,通过设置条件将其转化为能够被下游节点所接受的变量类型。它的结构分为输入变量过滤条件排序(可选)取前 N 项(可选)输出变量

例如允许用户同时上传文档文件和图片文件两种不同类型的文件。需要使用列表操作节点进行分拣,将不同的文件类型交由不同流程处理。

输入变量

列表操作节点只能接受Array[string]、Array[number]、Array[file]三种数据结构的变量。

过滤条件

处理输入变量中的数组,添加过滤条件。从数组中分拣所有满足条件的数组变量,可以理解为对变量的属性进行过滤。

举例:文件中可能包含多重维度的属性,例如文件名、文件类型、文件大小等属性。过滤条件允许设置筛选条件,选择并提取数组变量中的特定文件。

支持提取的变量如下:

排序

提供对于输入变量中数组的排序能力,支持根据文件属性进行排序。有升序排列降序排列两种,默认排序为升序排列。

升序排列是按照从小到大排序。对于字母和文本,按字母表顺序排列(A - Z);

降序排列是由大到小排序,对于字母和文本,按字母表倒序排列(Z - A)

该选项常用于配合输出变量中的 first_record 及 last_record 使用。
取前N项和取第N项

可以在 1-20 中选值,用途是为了选中数组变量的前 n 项。也可以指定取第N项。

输出变量

满足各项过滤条件的数组元素。过滤条件、排序和限制可以单独开启。如果同时开启,则返回符合所有条件的数组元素。

Result,过滤结果,数据类型为数组变量。若数组中仅包含 1 个文件,则输出变量仅包含 1 个数组元素;

first_record,筛选完的数组的首元素,即 result[0];

last_record,筛选完的数组的尾元素,即 result[array.length-1]。

变量聚合(Variable Aggregator)

变量聚合节点是工作流中的一个关键节点,它负责整合不同分支的输出结果,确保无论哪个分支被执行,其结果都能通过一个统一的变量来引用和访问。这在多分支的情况下非常有用,可将不同分支下相同作用的变量映射为一个输出变量,避免下游节点重复定义。 

格式要求

变量聚合器支持聚合多种数据类型,包括字符串(String)、数字(Number)、文件(File)对象(Object)以及数组(Array):

变量聚合器只能聚合同一种数据类型的变量。若第一个添加至变量聚合节点内的变量数据格式为 String,后续连线时会自动过滤可添加变量为 String 类型。

如我下图所示,结合条件分支,两个LLM输出的内容,就不需要分成两个直接回复节点了,可以通过变量聚合节点统合后给到直接回复节点:

开启聚合分组后,变量聚合器可以聚合多组变量,各组内聚合时要求同一种数据类型。

变量赋值(Variable Assigner)

变量赋值节点,顾名思义就是用于向可写入变量进行变量赋值,并且已经支持了我们之前文章内讲过的会话变量

通过变量赋值节点,你可以将工作流内的变量赋值到会话变量中用于临时存储,并可以在后续对话中持续引用。
我们也可以将对话过程中的上下文、上传至对话框的文件、用户所输入的偏好信息等变量,通过变量赋值节点写入会话变量中,用作后续对话的参考信息。
参数提取(Parameter Extractor)

利用 LLM 从自然语言推理并提取结构化参数,用于后置的工具调用或 HTTP 请求。

dify 工作流内提供了丰富的工具选择,其中大多数工具的输入为结构化参数,参数提取器可以将用户的自然语言转换为工具可识别的参数,方便工具调用。

工作流内的部分节点有特定的数据格式传入要求,如迭代节点的输入要求为数组格式,参数提取器可以方便的实现结构化参数的转换

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询