Dify——逻辑控制

条件分支

根据 If/else/elif 条件将 Chatflow / Workflow 流程拆分成多个分支。

节点功能

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

  • 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)

布尔值变量:

  • 是(Is)- 真/假
  • 不是(Is not)- 真/假

布尔值数组变量:

  • 包含(Contains)- 真/假
  • 不包含(Not contains)- 真/假
  • 为空(Is empty)
  • 不为空(Is not empty)

多重条件判断

涉及复杂的条件判断时,可以设置多重条件判断,在条件之间设置 AND 或者 OR,即在条件之间取交集或者并集。

节点演示

节点工作流程

在开始节点创建一个下拉列表

条件分支节点

分别创建三个分支,

  • 当用户选择Google,使用Google进行搜索
  • 当用户选择Deepseek,使用Deepseek进行搜索
  • 当用户没有正确的选择搜索,值输入内容,输出一个笑话
  • 其他情况直接回复ERROR

迭代

Dify中的迭代更接近程序中For循环的概念,主要是解决AI模型的重复执行,而不是单纯实现代码的循环

迭代节点组成

  • 输入变量
  • 迭代工作流
  • 输出变量(列表)

迭代节点数据处理

完整工作流

开始节点

开始节点中只保留系统默认变量

模板转换节点

创建五个模板转换节点,用来模拟列表中的单个元素
每个模板转换节点中分别存储帝皇、恐虐、奸奇、色孽、纳垢

列表合并

通过Python代码将元素依次添加到列表中

def main(arg1: str, arg2: str, arg3: str, arg4: str, arg5: str):
ans = [arg1,arg2,arg3,arg4,arg5]
return {
"result": ans,
}

迭代节点

  • 迭代节点内部的数据和外部是隔离的
  • 迭代节点内部的每一个子节点都有独立的输出
  • 战锤百科这个LLM模型节点输出
  • text(string)生成内容
  • reasoning_content(string)推理内容
  • usage(object)模型用量信息
  • 循环内容格式化这个模板转换节点输出
  • output(string)转换后内容
  • 迭代节点内部的数据输出需要通过调整输出变量来控制

迭代内部节点——战锤百科(LLM)

在系统提示词中输入

根据我提供的名词 {{/item}},解释在战锤中的地位

{{/item}}表示当前迭代的内容,
类似 for i in x 中的i,如
迭代第一次,i=0,对应列表中的第一个元素帝皇
迭代第二次,i=1,对应列表中的第二个元素恐虐
以此类推

迭代内部节点——循环内容格式化(模板转换)

模板转换节点只支持 jinja2 语法

Loop {{indexNum}} ------
{{itemInfo}} -> {{bw}}

将会按照此模板产生数据

代码执行

当执行代码我们可以看见执行到迭代时提示——第N个迭代

迭代总次数第一次迭代第二次迭代第三次迭代第四代迭代第五次迭代
itemInfo帝皇恐虐奸奇纳垢色孽
indexNum01234

直接回复

Loop 0 ------
帝皇 -> 好的,我们来详细解释一下“帝皇”在战锤40K宇宙中的地位。他无疑是整个系列最核心、最复杂也最强大的角色之一。
......
Loop 1 ------
恐虐 -> 好的,我们来详细解释一下“恐虐”在战锤系列(特别是战锤40K)中的地位。
......
Loop 2 ------
奸奇 -> 好的,我们来详细解释一下 奸奇 在战锤世界观中的地位。
......
Loop 3 ------
纳垢 -> 好的,我们来详细解释一下“纳垢”在战锤系列(特别是《战锤40K》和《中古战锤/战锤西格玛时代》)中的地位。
......
Loop 4 ------
色孽 -> 好的,根据您提供的名词“色孽”,我将详细解释其在战锤世界观(特别是战锤40K)中的核心地位。