Skip to content

If-Else Block

容器节点,根据条件判断选择执行不同的分支。

功能说明

If-Else Block 是一个条件分支容器节点。它包含一个或多个 if 分支和一个可选的 else 分支。运行时按顺序检测每个 if 分支的条件,命中第一个满足条件的分支后执行其内部 Block,跳过其余分支。如果所有 if 条件都不满足,则执行 else 分支(如存在)。

If-Else Block 本身不产生直接输出,内部 Block 的执行结果写入全局上下文。

使用场景

  1. 结果分流:根据上游 Block 的输出值,决定走不同的处理路径(如成功/失败分支)。
  2. 条件过滤:检查某个变量是否满足特定条件,满足时才执行后续操作。
  3. 多路分支:添加多个 if 分支实现类似 switch-case 的多路选择逻辑。

配置参数

If-Else 容器节点

属性名类型说明默认值
idstring节点唯一标识(自动生成)
namestring节点名称(自动生成,可自定义)

If 分支节点

属性名类型说明默认值
idstring分支唯一标识(自动生成)
namestring分支名称(自动生成,可自定义)
conditionCondition分支执行条件空条件

Else 分支节点

属性名类型说明默认值
idstring分支唯一标识(自动生成)
namestring分支名称(自动生成,可自定义)

Condition 结构

条件由三部分组成:

字段类型说明
firstValueSource左值(支持变量引用或字面量)
compareCompare比较操作符
secondValueSource右值(支持变量引用或字面量)

可用比较操作符

操作符说明
Equals等于
NotEquals不等于
Contains包含(文本)
NotContains不包含(文本)
GreaterThan大于
GreaterThanOrEqual大于等于
LessThan小于
LessThanOrEqual小于等于

输出变量

变量名类型说明
conditionboolean最终条件判断结果(是否有分支命中)
resultany执行分支的输出结果

变量在 If-Else Block 执行完成后可被引用。

引用语法示例

条件结果:{{ifElse_1.condition}}
分支输出:{{ifElse_1.result}}

使用示例

示例 1:成功/失败分支处理

[Code Block] name: code_1
  const score = {{struct_1.score}}
  return score

[If-Else Block] name: ifElse_1

  [If] condition: code_1.output GreaterThanOrEqual 60

    [Generation Block] name: gen_pass
      恭喜!分数 {{code_1.output}} 达到及格线,请生成祝贺信。

  [Else]

    [Generation Block] name: gen_fail
      分数 {{code_1.output}} 未达标,请生成鼓励信。

根据分数是否大于等于 60,执行不同的 Generation Block。

示例 2:多路分支

[If-Else Block] name: ifElse_1

  [If] condition: struct_1.category Equals "技术"
    [Generation Block] 按技术文章风格处理...

  [If] condition: struct_1.category Equals "新闻"
    [Generation Block] 按新闻简报风格处理...

  [Else]
    [Generation Block] 按通用风格处理...

根据文章分类走不同的处理路径,类似 switch-case 逻辑。

运行时约束

  • 适用文档类型:普通文档(document)。不可用于 skill 文档。
  • 可插入上下文:文档顶层。
  • 节点结构:容器节点(content: 'if+ else?'),至少包含一个 if 分支,else 分支可选。
  • 分支内容:每个分支(if / else)必须包含至少一个子 Block。
  • 执行语义:按顺序检测 if 条件,命中后执行该分支并跳过其余分支。仅执行一个分支。

注意事项

  • If-Else Block 最多只会执行一个分支。即使多个 if 条件同时满足,也只执行第一个命中的。
  • 如果所有 if 条件都不满足且没有 else 分支,则整个 If-Else Block 不执行任何操作。
  • 内部 Block 的输出直接写入全局上下文,不需要通过 If-Else Block 的变量中转。
  • 条件中的左值和右值支持变量引用(如引用其他 Block 的输出)和字面量(字符串、数字、布尔值)。
  • 在 skill 文档中不可使用 If-Else Block。
  • 支持添加多个 if 分支实现多路选择,但建议控制分支数量以保持可读性。

AI Workflow Editor