1. 常用控制与处理节点


说明:用户输入、触发器、LLM、知识检索、直接回复、输出、Agent、问题分类器等核心节点已在第三部分详细介绍,此处不再重复。以下补充介绍工作流(Workflow)与聊天流(Chatflow)中常用的控制、处理与集成类节点。

条件分支(IF/ELSE)节点

条件分支节点根据设定的条件表达式进行判断,将流程导向不同的分支路径。支持 IF / ELIF / ELSE 多分支结构,可添加多个条件并设置逻辑关系(AND / OR)。

主要参数:

image-20260429002634252

image-20260429002714904

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

image-20260429003002775

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

image-20260429003153577

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

image-20260429003208418

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

image-20260429003218505

  • ELSE 路径:所有条件均不满足时走此路径。

配置示例:根据对话轮次分流

image-20260429003605611

条件:sys.dialogue_count 等于 1
IF 分支 → LLM 节点
ELSE 分支 → LLM 2 节点

循环节点

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

主要参数:

image-20260429004639807

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

配置示例:生成随机数直到满足条件

image-20260429005139689

循环变量:result(初始值:100)
最大循环次数:50
循环体:
  代码执行 → 生成 1-100 随机整数
  条件判断 → 小于 50 时退出循环
循环终止条件:result < 50

人工介入节点

人工介入节点会在工作流的关键点暂停执行,发送一个请求表单给指定人员,等待人工输入、审核或决策后再继续。通过在关键环节嵌入人工判断,在自动化效率与人工监督之间取得平衡。

主要参数:

image-20260429004123240

  • 发送方式:请求表单通过什么渠道送达。目前支持两种——「Web 应用」(直接在 Web 界面中弹出表单)和「邮件」(向一位或多位接收人发送包含请求链接的邮件)。无论哪种方式,收到第一个响应后请求即关闭。
  • 表单内容:接收人看到的信息。支持 Markdown 格式排版,可用 {{变量名}} 插入上游节点的动态数据(如 AI 生成的文本)。还可添加输入字段让接收人填写或编辑内容,每个输入字段会成为下游可用的变量。
  • 用户动作:定义接收人可以点击的决策按钮,每个按钮对应不同的下游分支路径。比如「批准」走发布分支,「重新生成」走回 LLM 重新处理。可设置按钮样式区分主次操作。
  • 超时策略:设定等待响应的最长时间。超时后工作流自动结束,也可以配置一个后备分支来处理超时(如发送通知或重试)。

表单内容示例(使用 Markdown + 变量):

image-20260429004556579

## 请审核 AI 生成的回复

以下是系统自动生成的客户回复内容,请检查后选择操作:

{{LLM.text}}

用户动作配置示例:

按钮 1:批准发送   → 连接到「HTTP 请求」节点(调用外部接口发送)
按钮 2:编辑后发送 → 连接到「LLM」节点(基于编辑内容重新生成)
按钮 3:拒绝       → 连接到「直接回复」节点(告知用户已拒绝)

代码执行节点

代码执行节点允许运行自定义的 Python 或 JavaScript 代码,适用于数据格式转换、数学计算、字符串处理、JSON 解析等场景。代码在安全沙箱中运行,不允许访问文件系统或发起网络请求。

主要参数:

image-20260429005233937

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

从 HTTP 响应中提取 JSON 字段示例:

image-20260429005615171

def main(http_response: str) -> dict:
    import json
    data = json.loads(http_response)
    return {
        "result": data["data"]["name"]
    }

HTTP 请求节点

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

主要参数:

image-20260429005730415

  • 请求方法:GET / POST / PUT / PATCH / DELETE / HEAD。

  • URL:请求目标地址,支持通过 {{变量名}} 动态插入变量。

image-20260429005837223

  • 请求头:自定义 HTTP 请求头,如 Content-Type、Authorization 等。

  • 查询参数:URL 中的 Query 参数。

  • 请求体:POST/PUT 等方法的请求体,支持 JSON、Form-data、Raw Text、Binary(文件上传)。

image-20260429005906400

  • 认证方式:无认证、API Key(Basic / Bearer / Custom)。
  • 超时设置:请求超时时间。
  • 失败重试:自动重试失败请求,可配置次数和间隔。

输出变量body(响应体)、status_code(HTTP 状态码)、headers(响应头)、files(响应中的文件)。

配置示例:获取 YouTube RSS 数据

image-20260429010153801


工具节点

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

主要参数:

image-20260429010331873

  • 工具选择:从可用工具列表中选择。工具分三类——内置工具、自定义工具、子工作流。
  • 工具参数:根据所选工具定义填写输入参数,支持引用上游变量。

评论

0
还没有评论,来写第一条吧