1. 常用控制与处理节点
说明:用户输入、触发器、LLM、知识检索、直接回复、输出、Agent、问题分类器等核心节点已在第三部分详细介绍,此处不再重复。以下补充介绍工作流(Workflow)与聊天流(Chatflow)中常用的控制、处理与集成类节点。
条件分支(IF/ELSE)节点
条件分支节点根据设定的条件表达式进行判断,将流程导向不同的分支路径。支持 IF / ELIF / ELSE 多分支结构,可添加多个条件并设置逻辑关系(AND / OR)。
主要参数:


- 条件列表:一个或多个判断条件,每个条件包含变量选择、比较运算符和比较值。支持的运算符包括:等于、不等于、包含/不包含、开头是/结尾是、大于、小于、为空/不为空等。

- 逻辑关系:当有多个条件时,条件之间的逻辑关系,AND(全部满足)或 OR(满足任一)。

- IF 路径:条件满足时执行。

- ELIF 路径(可选):IF 不满足时按顺序检查的额外条件,可添加多个。

- ELSE 路径:所有条件均不满足时走此路径。
配置示例:根据对话轮次分流

循环节点
循环节点反复执行内部处理流程,直到满足退出条件或达到最大循环次数。与迭代节点不同,循环节点的每一轮可以基于上一轮的结果继续处理,适合逐步优化或迭代改进的场景。
主要参数:

- 循环变量:在循环体内跨轮次传递的变量,每一轮都可读取和更新。
- 循环终止条件:满足条件时退出循环,也可通过循环内的「退出循环」节点主动终止。
- 最大循环次数:无论是否满足终止条件,到达此次数后强制退出(默认 10 次)。
配置示例:生成随机数直到满足条件

人工介入节点
人工介入节点会在工作流的关键点暂停执行,向指定人员发送一个可自定义的请求表单。接收人可以在表单里审核信息、填写输入,并从预设的几个决策中做出选择,这个选择决定了工作流接下来怎么走。通过在关键环节嵌入人工判断,在自动化效率与人工监督之间取得平衡。
主要参数:

一个人工介入节点由四部分配置组成——发送方式、表单内容、用户动作、超时策略,分别对应"请求怎么送达""接收人看到什么""接收人能做哪些决策""等多久、没人回怎么办"。
1. 发送方式
选择请求送达接收人的渠道,目前支持两种:
- Web 应用:把请求表单直接展示给 WebApp 的终端用户。注意,由触发器启动的工作流不支持这种方式。(此外,外部客户端可以通过 Service API 驱动 WebApp 表单的整个生命周期,适合做后端集成。)
- 邮件:把带请求链接的邮件发给指定的工作区成员、外部邮箱地址,或工作区全体成员。任何拿到链接的人都能响应,无需 Dify 账户。 无论用哪种方式,请求都会在收到第一个响应后立即关闭。
2. 表单内容
表单是接收人真正看到并与之交互的部分,可从以下三个方面自定义:
- 用 Markdown 排版结构:用标题、列表、加粗、链接等 Markdown 元素把信息呈现清楚。
- 用变量显示动态数据:通过
{{变量名}}引用上游节点的动态内容,比如待审核的 AI 生成文本,或他人在上游人工介入节点上传的待审文件。在 Web 应用方式下,表单本身会直接展示给终端用户,表单里引用的变量值也会直接显示出来,因此无需在人工介入节点之前再加直接回复或输出节点。 - 用表单字段收集输入:在表单里加入输入字段,向接收人收集不同类型的输入,每个字段都会成为下游可用的变量。例如在博客审核工作流里,可以把接收人的反馈传给下游 LLM 节点用于修订。字段类型有三种:
| 字段类型 | 说明 |
| ----------------- | ------------------------------------------------------------ |
| 段落 | 文本输入。可以留空,也可以预填变量(如待优化的 LLM 输出)或静态文本(示例或默认值)供接收人编辑。无最大长度限制,但过长的输入可能超出下游 LLM 的上下文窗口。 |
| 下拉选项 | 从选项列表里单选。选项可以手动定义,也可以引用上游某个
array[string]变量、把其中的值作为选项。 | | 单文件 / 文件列表 | 单个或多个文件上传。单文件上限:图片 10 MB、文档及其他文件 15 MB、音频 50 MB、视频 100 MB;文件列表字段最多 10 个文件。 |
说明:三种字段里只有"段落"是选填,"下拉选项""单文件""文件列表"都是必填。所有必填字段填完之前,表单的动作按钮点不了。
接收人响应后,填好所有值的表单内容可作为 __rendered_content 变量供下游使用。其中文件字段的值以纯文本占位符呈现:单文件为 [file],文件列表为 [N files]。
提示:推理模型除了最终答案,还会输出思维过程。引用
text输出变量时默认两者都会显示;如果只想显示答案,可在对应的 LLM 节点上开启「启用推理标签分离」。
3. 用户动作
定义接收人可以点击的决策按钮,每个按钮把工作流路由到不同的执行路径。比如 Post(批准)分支通往触发内容发布的节点,Regenerate(重新生成)分支则绕回 LLM 节点去修改内容。
每个按钮都有一个显示标题和一个动作 ID。按钮被点击时,它的 ID 会作为 __action_id、标题(按钮文本)会作为 __action_value 供下游使用。

提示:用预设的按钮样式在视觉上区分不同动作,比如给
Approve这类关键动作用醒目样式,给次要选项用淡一些的样式。
4. 超时策略
设定请求保持开启的最长时间,默认 3 天。如果超时前没有接收人响应,工作流会沿节点的"超时"分支继续,可以把这个分支接到后备路径上,比如发通知或重试。如果没有连接超时分支,工作流就直接结束。
示例:内容审核工作流
下面用一个内容审核工作流串起整个流程。它根据发起者输入的 topic(主题)和 language(语言)起草一篇博客文章,把草稿通过邮件发给审核人,再根据审核人的选择决定最终输出。
整个节点围绕审核人应该能完成的三件事来设计:
- 查看 AI 生成的草稿:在表单里引用上游 LLM 节点的
text变量,让渲染后的表单直接显示草稿。 - 按需编辑草稿:在表单里加一个段落输入字段
edits,预填同一个text变量,让审核人以草稿为起点就地修改。(博客文章通常较长,用表单以 Markdown 渲染来呈现草稿,阅读体验比段落输入框更好;内容较短时,单独用一个预填的段落字段就能让接收人同时阅读和编辑。) - 提供反馈交给 AI 修订:在表单里加一个段落输入字段
feedback收集反馈,然后接两个下游 LLM 节点——先由 Regenerate 节点根据原始草稿text和反馈feedback生成修订稿,再由 Check Revision 节点对照feedback检查修订稿是否落实了反馈,检查后的结果作为最终输出流向下游。 审核人在收到的表单里,根据判断填相应的段落字段(或留空),再点对应的动作按钮。每个动作连到不同的输出:
三个 LLM 节点的提示词可参考:
代码执行节点
代码执行节点允许运行自定义的 Python 或 JavaScript 代码,适用于数据格式转换、数学计算、字符串处理、JSON 解析等场景。代码在安全沙箱中运行,不允许访问文件系统或发起网络请求。
主要参数:

- 输入变量:从上游节点引入需要处理的数据,在代码中通过变量名直接引用。需在输入变量面板中声明变量名。
- 编程语言:Python 3 或 JavaScript。
- 代码:自定义代码逻辑。Python 需定义
main()函数并返回字典;JavaScript 同理。 - 输出变量:声明代码返回的字段名称和类型,供下游节点引用。需与
return中的 key 一致。 - 外部依赖:Python 支持 numpy、pandas 等;JavaScript 支持 lodash、moment 等。
从 HTTP 响应中提取 JSON 字段示例:

HTTP 请求节点
HTTP 请求节点用于连接外部 API 和 Web 服务,支持获取数据、发送 Webhook、上传文件等操作。支持所有标准 HTTP 方法,可通过变量动态构建请求的各个部分。
主要参数:

-
请求方法:GET / POST / PUT / PATCH / DELETE / HEAD。
-
URL:请求目标地址,支持通过
{{变量名}}动态插入变量。

-
请求头:自定义 HTTP 请求头,如 Content-Type、Authorization 等。
-
查询参数:URL 中的 Query 参数。
-
请求体:POST/PUT 等方法的请求体,支持 JSON、Form-data、Raw Text、Binary(文件上传)。

- 认证方式:无认证、API Key(Basic / Bearer / Custom)。
- 超时设置:请求超时时间。
- 失败重试:自动重试失败请求,可配置次数和间隔。
输出变量:body(响应体)、status_code(HTTP 状态码)、headers(响应头)、files(响应中的文件)。
配置示例:获取 YouTube RSS 数据

工具节点
工具节点可在工作流中调用 Dify 内置工具、自定义工具、子工作流或 MCP 协议接入的外部服务。每个工具有预定义的输入参数和输出格式。
主要参数:

- 工具选择:从可用工具列表中选择。工具分三类——内置工具、自定义工具、子工作流。
- 工具参数:根据所选工具定义填写输入参数,支持引用上游变量。
迭代节点
迭代节点用于遍历一个数组(列表),对其中的每一个元素执行同一段内部子流程,并把每次的结果收集成一个新数组输出。适合「对一批数据逐条做相同处理」的场景,例如对文章列表逐篇生成摘要、对多条反馈逐条做情感分析。

主要参数:
- 输入(迭代对象):一个数组类型的变量,节点会逐个元素地执行内部流程。
- 迭代内部流程:在节点内部编排要对每个元素执行的节点(如 LLM、代码执行等)。内部可通过
item(当前元素)和index(当前序号)引用本轮数据。 - 输出:内部流程每轮产出的结果汇总成的数组,供下游节点使用。
- 并行模式(可选):支持并行处理多个元素以缩短总耗时,可设置并行上限。
与循环(Loop)节点的区别:迭代是「对已知列表的每个元素各跑一次,彼此独立」;循环是「反复执行直到满足退出条件,且每轮可基于上一轮结果继续」。批量处理选迭代,逐步逼近/收敛选循环。
变量聚合器节点
变量聚合器用于把多个分支的输出汇聚成同一个输出变量,供下游节点统一引用。典型用途:条件分支 / 问题分类器 / 多个触发器分出多条路径后,各分支的结果需要接到同一个后续节点时,用它把这些互斥分支「合流」,避免在每条分支上重复搭建相同的下游节点。

主要参数:
- 聚合变量组:依次添加来自各分支的变量。运行时哪条分支被执行,聚合器就输出那条分支对应的值。
- 输出:聚合后的单一变量(可含多组),下游只需引用这一个变量即可。
常与「迭代」配合:迭代内部若有多条分支,也可用它先合流再输出。
模板转换节点
模板转换节点使用 Jinja2 模板语法,把一个或多个变量拼装、格式化成一段文本输出,常用于把多个节点的结果整理成结构化的最终文案(如 Markdown 报告)。相比「直接回复」节点,它不负责对用户输出,而是产出一个文本变量供下游继续使用(因此在工作流 / Chatflow 中都可用)。

主要参数:
- 输入变量:在模板中要引用的变量,需先在输入面板声明。
- 模板(Template):Jinja2 模板文本,用
{{ 变量名 }}插值,支持{% for %}、{% if %}等逻辑,可循环展开列表、按条件输出。 - 输出:渲染后的字符串变量
output。
示例(把三段文案整合为一份 Markdown):
参数提取器节点
参数提取器借助 LLM,从一段自然语言中抽取出结构化参数(如从「帮我查下北京明天的天气」中提取出 city=北京、date=明天),供后续的工具节点、HTTP 请求节点等使用。它相当于「自然语言 → 结构化字段」的桥梁。

主要参数:
- 输入变量:要从中抽取信息的文本(如用户输入)。
- 模型:负责理解与抽取的 LLM。
- 提取参数列表:逐个定义要抽取的字段,包含字段名、类型、是否必填、描述(描述越清楚,抽取越准)。
- 指令(可选):补充抽取规则或边界说明。
- 输出:抽取出的各字段变量,以及是否成功等状态。
文档提取器节点
用户输入节点只接收文件、并不解析内容。文档提取器节点负责把上传的文档(PDF、Word、TXT、Markdown 等)解析为纯文本,输出给 LLM 等下游节点理解使用。

主要参数:
- 输入变量:来自用户输入节点的「单文件」或「文件列表」变量。
- 输出:提取出的文本内容(
text);对文件列表则输出文本数组。
图片类文件应改用具备视觉能力的 LLM 节点处理;CSV / JSON 等结构化文件可用代码节点解析。
列表操作节点
列表操作节点用于对数组做筛选、排序、截取(取前 N 项)、按条件提取等处理。常接在「文件列表」之后,例如把混合上传的文件按类型(图片 / 文档)拆分,再分别送入不同处理分支。

主要参数:
- 输入变量:一个数组变量。
- 操作:过滤(按条件保留)、排序(升/降序)、截取(取前 N 个)等。
- 输出:处理后的数组。
变量赋值节点
变量赋值节点用于给会话变量(Conversation Variables)等可写变量赋值,是 Chatflow 中实现「跨轮次记忆 / 状态保持」的关键。例如把用户首次指定的语言偏好写入会话变量,后续每轮都读取它来决定回复语言。

主要参数:
- 目标变量:要写入的会话变量(或循环变量)。
- 来源 / 赋值方式:设置写入的值或来源变量。
会话变量(Conversation Variables)是 Chatflow 专有的一类可读写变量,在整段对话生命周期内持续存在,可用于记录用户偏好、累积的清单等;配合变量赋值节点读写。建议在第二部分「核心概念」或第三部分中补充这一概念,因为它是理解 Chatflow 状态管理的基础。

评论
0 条