微信扫码
添加专属顾问
我要投稿
深入探索Dify工作流的六大核心节点,掌握数据处理与转换的关键技术。 核心内容: 1. 模板转换节点:利用Jinja2模板语言实现数据的灵活转换 2. 文档提取器节点:解析文档内容,将信息转化为可处理的文本 3. 列表操作节点:对数组变量中的文件进行过滤和提取,实现精确控制
模板转换节点允许借助 Jinja2 的 Python 模板语言灵活地进行数据转换、文本处理、JSON转换等等。可以合并来自前置节点的变量,创建出单一的文本输出,这非常适合将多个数据源的信息汇总成一个特定格式,满足后续步骤的需求。
比如,前置节点分别输出了一篇文章的标题和内容信息,然后使用模板转换节点拼接成完整的文章,然后输出给用户。
也可以将知识库检索出的信息,整理成Markdown格式并输出
我们都知道,LLM 自身无法直接读取或解释文档的内容。因此需要将用户上传的文档,通过文档提取器节点解析并读取文档文件中的信息,转化文本之后再将内容传给 LLM 以实现对于文件内容的处理。
文档提取器仅接受以下数据结构的变量:
输出变量固定命名为 text。输出的变量类型取决于输入变量:
1、输入变量为File(单独一个文件),输出变量为string;
2、输入变量为Array[File](多个文件),输出变量则为array[string];
文件列表变量支持同时上传文档文件、图片、音频与视频文件等多种文件。应用使用者在上传文件时,所有文件都存储在同一个 Array[File]
数组类型变量内,不利于后续单独处理文件,比如我们可能上传的是一个音频,一个视频,一个word文档和一个图片,但是LLM仅支持读取图片或文本内容等单一值作为输入变量,无法直接读取数组变量,这时候就可以利用列表操作节点在数组变量内提取单独的元素,便于后续节点处理。
列表操作节点可以对文件的格式类型、文件名、大小等属性进行过滤与提取,将不同格式的文件传递给对应的处理节点,以实现对不同文件处理流的精确控制。
列表操作节点一般用于提取数组变量中的信息,通过设置条件将其转化为能够被下游节点所接受的变量类型。它的结构分为输入变量、过滤条件、排序(可选)、取前 N 项(可选)、输出变量。
例如允许用户同时上传文档文件和图片文件两种不同类型的文件。需要使用列表操作节点进行分拣,将不同的文件类型交由不同流程处理。
列表操作节点只能接受Array[string]、Array[number]、Array[file]三种数据结构的变量。
处理输入变量中的数组,添加过滤条件。从数组中分拣所有满足条件的数组变量,可以理解为对变量的属性进行过滤。
举例:文件中可能包含多重维度的属性,例如文件名、文件类型、文件大小等属性。过滤条件允许设置筛选条件,选择并提取数组变量中的特定文件。
支持提取的变量如下:
提供对于输入变量中数组的排序能力,支持根据文件属性进行排序。有升序排列和降序排列两种,默认排序为升序排列。
升序排列是按照从小到大排序。对于字母和文本,按字母表顺序排列(A - Z);
降序排列是由大到小排序,对于字母和文本,按字母表倒序排列(Z - A)
可以在 1-20 中选值,用途是为了选中数组变量的前 n 项。也可以指定取第N项。
满足各项过滤条件的数组元素。过滤条件、排序和限制可以单独开启。如果同时开启,则返回符合所有条件的数组元素。
Result,过滤结果,数据类型为数组变量。若数组中仅包含 1 个文件,则输出变量仅包含 1 个数组元素;
first_record,筛选完的数组的首元素,即 result[0];
last_record,筛选完的数组的尾元素,即 result[array.length-1]。
变量聚合节点是工作流中的一个关键节点,它负责整合不同分支的输出结果,确保无论哪个分支被执行,其结果都能通过一个统一的变量来引用和访问。这在多分支的情况下非常有用,可将不同分支下相同作用的变量映射为一个输出变量,避免下游节点重复定义。
变量聚合器支持聚合多种数据类型,包括字符串(String)、数字(Number)、文件(File)对象(Object)以及数组(Array):
变量聚合器只能聚合同一种数据类型的变量。若第一个添加至变量聚合节点内的变量数据格式为 String,后续连线时会自动过滤可添加变量为 String 类型。
如我下图所示,结合条件分支,两个LLM输出的内容,就不需要分成两个直接回复节点了,可以通过变量聚合节点统合后给到直接回复节点:
开启聚合分组后,变量聚合器可以聚合多组变量,各组内聚合时要求同一种数据类型。
变量赋值节点,顾名思义就是用于向可写入变量进行变量赋值,并且已经支持了我们之前文章内讲过的会话变量。
利用 LLM 从自然语言推理并提取结构化参数,用于后置的工具调用或 HTTP 请求。
dify 工作流内提供了丰富的工具选择,其中大多数工具的输入为结构化参数,参数提取器可以将用户的自然语言转换为工具可识别的参数,方便工具调用。
工作流内的部分节点有特定的数据格式传入要求,如迭代节点的输入要求为数组格式,参数提取器可以方便的实现结构化参数的转换。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-12-24
2024-04-25
2024-07-16
2024-07-20
2024-04-24
2024-05-08
2024-06-21
2024-05-09
2024-08-06
2024-05-07