零基础AI开发系列教程:Dify节点的详细介绍(上)

Dify节点的详细介绍(上)

节点是工作流的关键构成,通过连接不同的节点,从而实现工作流的功能。首先我们要明白一个核心概念:节点是为功能服务的。根据节点的功能,可以将节点划分为以下三类:基础与流程控制、数据处理与转换、AI与外部交互。

  • 基础与流程控制:开始、结束、条件分支、迭代、循环、直接回复
  • 数据处理与转换:变量赋值、变量聚合、参数提取、模板转换、列表操作、问题分类、文档提取
  • AI与外部交互:LLM、知识检索、HTTP请求、Agent、工具、代码执行

以下是基础与流程控制类节点详细介绍:


1. 开始节点

作为工作流的「启动钥匙」,开始节点主要作用就是做数据的采集。数据分为输入字段、系统变量两种,输入字段用来采集用户输入的数据,而以sys.开头的则是系统变量,系统变量用来记录应用的全局信息。
image-20250328212504192

  1. 输入字段:点击+可以添加多个输入字段
  2. 系统变量:系统变量不可更改,也不能自己添加,是应用内预设的系统级参数。通常用于进阶开发场景,例如搭建多轮次对话应用、收集应用日志与监控、记录不同应用和用户的使用行为等。

输入字段可以添加以下6种类型的数据

类型适用场景示例
文本简短信息收集姓名/电话号码
段落长文本描述项目需求描述
下拉选项标准化输入产品型号选择
数字数值型数据订单数量
单文件单个文件上传合同文档上传
文件列表批量文件处理多图上传场景

系统变量,工作流(Workflow )和对话流(Chatflow)的系统变量所包含的信息稍有不同,具体如下

变量名称数据类型说明备注
sys.user_idString每个用户在使用应用时,系统自动分配的唯一标识符,用于区分不同的对话用户公共变量
sys.app_idString系统为每个应用分配的唯一标识符,用于区分不同的应用,并记录当前应用的基本信息公共变量
sys.workflow_idString用于记录当前应用内所包含的所有节点信息公共变量
sys.workflow_run_idString用于记录应用中的运行情况公共变量
sys.files[LEGACY]Array[File]文件参数,存储用户初始使用应用时上传的图片Workflow 独有,图片上传功能需在应用编排页右上角的 “功能” 处开启,未来将去掉图片上传功能,因为新的文件上传已经包含了图片上传
sys.queryString用户在对话框中初始输入的内容Chatflow 独有
sys.filesArray[File]用户在对话框内上传的图片Chatflow 独有,图片上传功能需在应用编排页右上角的 “功能” 处开启
sys.dialogue_countNumber用户与应用交互时的对话轮数。每轮对话后自动计数增加 1,可以和 if-else 节点搭配出丰富的分支逻辑。Chatflow 独有,例如到第 X 轮对话时,回顾历史对话并给出分析
sys.conversation_idString对话框交互会话的唯一标识符,将所有相关的消息分组到同一个对话中,确保 LLM 针对同一个主题和上下文持续对话Chatflow 独有

2. 结束节点

image-20250328212632112

结束节点用于定义工作流的终点并输出最终结果。每个工作流至少包含一个结束节点,因为只有当流程运行到结束节点时,才会输出执行结果,且结束节点之后不能再添加其他节点。

如果工作流中存在条件分支,需要根据不同的分支情况分别定义多个结束节点。

在设置结束节点时,需要声明一个或多个输出变量,这些变量可以引用前面节点的输出变量,以便将整个流程的关键结果汇总并输出。


3. 条件分支

条件分支用来控制流程的走向,通过判断不同的条件,选择执行对应的节点
image-20250328212831423

条件分支的运行机制包含以下六个路径:

  • IF 条件:选择变量,设置条件和满足条件的值;
  • IF 条件判断为 True,执行 IF 路径;
  • IF 条件判断为 False,执行 ELSE 路径;
  • ELIF 条件判断为 True,执行 ELIF 路径;
  • ELIF 条件判断为 False,继续判断下一个 ELIF 路径或执行最后的 ELSE 路径;

条件类型

数字类型支持以下条件判断:=、≠、>、 <、 >=、 <=、 为空、不为空

其他类型支持以下条件判断:

  • 包含(Contains)
  • 不包含(Not contains)
  • 以什么开头(Start with)
  • 以什么结束(End with)
  • 是(Is)
  • 不是(Is not)
  • 为空(Is empty)
  • 不为空(Is not empty)

4. 迭代节点

image-20250329110807197

迭代节点的作用是对数组中的元素依次执行相同的操作步骤,直至输出所有结果。它通常需要与数组变量配合使用。

例如在翻译长篇文章的场景中,如果直接将全部内容输入大语言模型可能会超出单次处理限制。这时可以先通过上游节点将文章拆分成多个片段,再使用迭代节点对每个片段分别执行翻译操作,从而避免触发消息长度限制。

数组是一种特定的数据类型,通常包含多个元素。其中元素用逗号分隔,以 [ 开头,以 ] 结尾
字符串数组的格式如下:[“文本1”, “文本2”,“文本3”,“文本4”,“文本5”]
数字数组的格式如下:[1,2,3,4,5]
JSON数组的格式如下:

[
    {
        "name": "张三",
        "age": 18,
        "email": "zhangsan@xxx.com"
    },
    {
        "name": "李四",
        "age": 25,
        "email": "lisi@xxx.com"
    },
    {
        "name": "王五",
        "age": 18,
        "email": "wangwu@xxx.com"
    }
]

5. 循环节点

循环节点用来执行一段逻辑直到满足条件或者达到循环次数上限
image-20250329142248554

循环节点的配置包含两个关键项:

配置项作用示例
循环终止条件(Loop Termination Condition)设置循环何时停止。可以在条件中使用循环体内的变量或会话中的全局变量。当变量 x > 80 并且 num <90 时,停止循环。
最大循环次数(Maximum Loop Count)限制最多执行的轮次,避免无限循环。最多执行 100 轮,无论是否满足退出条件。

总结

  • 循环终止条件:明确设置循环停止的条件,例如变量值达到某个阈值。
  • 最大循环次数:设置一个上限,防止循环无限运行。

循环节点和迭代节点适用于不同的任务场景:

类型特点适用场景
循环(Loop)轮次之间存在依赖关系,每一轮执行都依赖上一轮的结果。适用于递归、优化问题等需要依赖前一轮结果的场景。
迭代(Iteration)轮次之间无依赖关系,每一轮任务可以独立运行,无需依赖前一轮。适用于数据批量处理等独立任务的场景。

总结

  • 如果任务需要依赖前一轮的结果(如递归或优化问题),选择 循环节点
  • 如果任务可以独立运行(如批量处理数据),选择 迭代节点

6. 直接回复

image-20250329145935547

直接回复节点用于定义 Chatflow 流程中回复的内容。支持多种类型的输出。可以在文本编辑器中自由定义回复格式,包括自定义一段固定的文本内容、使用前置步骤中的输出变量作为回复内容、或者将自定义文本与变量组合后回复。

直接回复节点可以不作为最终的输出节点,作为流程过程节点时,可以在中间步骤流式输出结果。

可随时加入节点将内容流式输出至对话回复,支持所见即所得配置模式并支持图文混排,如:

  • 输出 LLM 节点回复内容
  • 输出生成图片
  • 输出纯文本

下一节,我们将详细介绍数据处理与转换类节点


🔥《零基础小白AI实战教程:手把手教你打造专属的智能体》🚀 系列教程更新中!
✅ 已更新:AI实践虚拟化平台安装
✅ 已更新:Docker Desktop 安装
✅ 已更新:Ollama安装教程
✅ 已更新:DeepSeek私有化部署
✅ 已更新:Dify私有化部署
✅ 已更新:Dify + DeepSeek搭建本地私有化知识库
✅ 已更新:Dify应用类型的选择
✅ 已更新:Dify升级指南
✅ 已更新:Dify节点的详细介绍(上)
✅ 已更新:Dify节点的详细介绍(中)
✅ 已更新:Dify节点的详细介绍(下)

👉 关注公众号"北灵聊AI"获取最新更新,免费领取教程资料和源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值