If-Else Block
容器节点,根据条件判断选择执行不同的分支。
功能说明
If-Else Block 是一个条件分支容器节点。它包含一个或多个 if 分支和一个可选的 else 分支。运行时按顺序检测每个 if 分支的条件,命中第一个满足条件的分支后执行其内部 Block,跳过其余分支。如果所有 if 条件都不满足,则执行 else 分支(如存在)。
If-Else Block 本身不产生直接输出,内部 Block 的执行结果写入全局上下文。
使用场景
- 结果分流:根据上游 Block 的输出值,决定走不同的处理路径(如成功/失败分支)。
- 条件过滤:检查某个变量是否满足特定条件,满足时才执行后续操作。
- 多路分支:添加多个
if分支实现类似switch-case的多路选择逻辑。
配置参数
If-Else 容器节点
| 属性名 | 类型 | 说明 | 默认值 |
|---|---|---|---|
id | string | 节点唯一标识(自动生成) | — |
name | string | 节点名称(自动生成,可自定义) | — |
If 分支节点
| 属性名 | 类型 | 说明 | 默认值 |
|---|---|---|---|
id | string | 分支唯一标识(自动生成) | — |
name | string | 分支名称(自动生成,可自定义) | — |
condition | Condition | 分支执行条件 | 空条件 |
Else 分支节点
| 属性名 | 类型 | 说明 | 默认值 |
|---|---|---|---|
id | string | 分支唯一标识(自动生成) | — |
name | string | 分支名称(自动生成,可自定义) | — |
Condition 结构
条件由三部分组成:
| 字段 | 类型 | 说明 |
|---|---|---|
first | ValueSource | 左值(支持变量引用或字面量) |
compare | Compare | 比较操作符 |
second | ValueSource | 右值(支持变量引用或字面量) |
可用比较操作符:
| 操作符 | 说明 |
|---|---|
Equals | 等于 |
NotEquals | 不等于 |
Contains | 包含(文本) |
NotContains | 不包含(文本) |
GreaterThan | 大于 |
GreaterThanOrEqual | 大于等于 |
LessThan | 小于 |
LessThanOrEqual | 小于等于 |
输出变量
| 变量名 | 类型 | 说明 |
|---|---|---|
condition | boolean | 最终条件判断结果(是否有分支命中) |
result | any | 执行分支的输出结果 |
变量在 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分支实现多路选择,但建议控制分支数量以保持可读性。