一. 什么是列表操作?
在Dify的工作流中,“列表操作”就像一个分拣机器人,当用户同时上传一堆不同类型的文件(比如几张图片、几个 Word 文档、几个音频文件)时,这个机器人能够:
- 识别每个文件的类型、大小、名称等属性
- 筛选出你需要的特定文件(比如只要图片)
- 排序(按文件大小从小到大排列)
- 提取出前几个文件或特定位置的文件
可以将不同的文件归类到不同的LLM节点中进行处理。我们可以多放置几个列表操作节点组合使用,比如用户上传的图片文件都归到A线,PDF都归到B线……

二. 参数详解
1. 输入变量 (Input Variable)
- 截图中显示:
{{开始.wenjian}} Array[File],这个节点只接受数组类型的字段。 - 解释: 这是你要处理的“原始素材”。这里识别到的是一个文件数组(比如用户一次性上传了多个文件)。告诉机器人:“把这 5 个文件拿去,按照我接下来的要求挑一挑。”
2. 过滤条件 (Filter)
- 功能: 设置门槛,只留下满足条件的项。
- 怎么用: 开启后,你可以根据文件的属性(比如文件名、大小等)设置逻辑。
- 例子: 如果你只想处理文件名里包含“报告”二字的文件,就在这里配置。不符合的文件会被直接剔除。
对于文件数组,支持以下属性筛选:
| 属性 | 说明 | 示例 |
|---|---|---|
type | 文件类别 | 图片、文档、音频、视频 |
extension | 文件扩展名 | .pdf, .jpg, .mp3 |
mime_type | MIME 类型(更精确的文件类型标识) | image/jpeg, application/pdf |
size | 文件大小 | 按字节数筛选大文件或小文件 |
name | 文件名 | 包含特定关键词的文件 |
url | 文件 URL | 特定网址上传的文件 |
transfer_method | 上传方式 | 本地上传 (local) 或 URL 上传 (remote) |
筛选条件运算符:
in:在…范围内(常用,比如类型是图片或文档)equal:等于(精确匹配)greater than/less than:大于/小于(用于数字类属性如 size)contains:包含(用于字符串类属性如 name)
实战示例:
- 只提取图片:
typeinImage - 只提取 PDF 文档:
extensionequal.pdf - 提取大于 1MB 的文件:
sizegreater than1048576(1MB=1024×1024 字节)
3. 取第 N 项 (Get Index)
- 功能: 精确打击,只要指定位置的那一个。
- 注意: 计算机通常从
0开始数(0 代表第 1 个)。 - 例子: 填入
0,机器人就只拿走你上传的第一个文件,不管后面还有多少个。
4. 取前 N 项 (Limit / Slice)
- 功能: 截取一部分,通常用于限制数量。
- 例子: 用户上传了 50 个文件,但你的 AI 一次只能读 3 个。你开启这个开关并填入
3,它就只传给下一步前三个文件,防止系统崩溃。
5. 排序 (Sort)
- 功能: 重新排队。
- 怎么用: 可以按升序(从小到大)或降序(从大到小)。
- 例子: 比如你想让 AI 先处理“最近修改”的文件,或者按“文件名 A-Z”排序。
6. 输出变量 (Output Variable)
- 功能: 处理后的结果。
- 理解: 经过上面的“过滤”、“排序”和“截取”后,最后剩下的那个干净、整齐的新列表,就会存放在这个变量里,供后面的节点(比如“条件分支”或“LLM”)使用。
这些开关是可以组合使用的。其内部的处理逻辑顺序通常是:
- 先过滤(把杂质扔掉)
- 再排序(把剩下的排整齐)
- 最后取值(在排好的队里拿走前几个)
三. 这个节点用处?
很多小白会问:“我直接把搜索结果传给 AI 不行吗?”
当然可以,但不好用:
- 浪费 Token: 如果列表里有 50 条信息,全喂给 AI 会消耗大量 Token(钱)。
- 干扰注意力: 信息太多太杂,AI 容易“幻觉”或者抓不住重点。
- 格式要求: 有时候下游节点只需要特定的数据格式,列表操作能帮你提前“洗数据”。
四. 操作示例
假设我们要做一个“高分电影推荐”助手:
- 第一步(搜索): 调用一个电影数据库插件,返回了 20 部电影的列表。
- 第二步(列表操作 – 过滤): 设置条件
评分 > 8.5。 - 第三步(列表操作 – 排序): 设置按
评分降序排列。 - 第四步(列表操作 – 取值): 设置只取
前 3 个。 - 第五步(输出): 把这 3 部最精华的电影推送到 LLM 节点,让 AI 写推荐语。
© 文章版权归白小菌所有,🫰欢迎转发分享。未经允许请勿抄袭转载。








