条件
根据布尔表达式分支工作流路径
条件区块允许您根据布尔表达式分支工作流执行路径,从而创建具有不同执行路径的动态、响应式工作流。它评估条件并相应地路由工作流,让您无需 LLM 即可根据数据或逻辑控制执行流。
条件区块无需 LLM 即可实现确定性决策,非常适合直接的分支逻辑。
概览
条件区块使您能够:
创建分支逻辑:根据布尔表达式路由工作流
做出数据驱动决策:使用先前区块的输出评估条件
处理多种场景:定义具有不同路径的多个条件
提供确定性路由:无需 LLM 即可做出决策
工作原理
条件区块通过顺序评估流程运行:
- 评估表达式 - 使用当前工作流数据处理 JavaScript/TypeScript 布尔表达式
- 确定结果 - 根据表达式评估返回 true 或 false
- 路由工作流 - 根据结果将执行定向到适当的目标区块
- 提供上下文 - 生成关于该决策的元数据,用于调试和监控
配置选项
条件
定义一个或多个将被评估的条件。每个条件包括:
- 表达式:一个评估为 true 或 false 的 JavaScript/TypeScript 表达式
- 路径:如果条件为 true,则路由到的目标块
- 描述:对条件检查内容的可选说明
你可以创建多个按顺序评估的条件,第一个匹配的条件将决定执行路径。
条件表达式格式
条件使用 JavaScript 语法,可以引用前序块的输入值。
// Check if a score is above a threshold
<agent.score> > 75// Check if a text contains specific keywords
<agent.text>.includes('urgent') || <agent.text>.includes('emergency')// Check multiple conditions
<agent.age> >= 18 && <agent.country> === 'US'访问结果
条件评估后,你可以访问其输出:
<condition.conditionResult>: 是否选中了已连接的路径(包括 Else),并非首个表达式的真假值。<condition.selectedOption>:匹配到的条件 ID<condition.selectedPath>:所选路由目标的详细信息
高级功能
复杂表达式
在条件中使用 JavaScript 运算符和函数:
// String operations
<user.email>.endsWith('@company.com')
// Array operations
<api.data.tags>.includes('urgent')
// Mathematical operations
<agent.confidence> * 100 > 85
// Date comparisons
new Date(<api.data.created_at>) > new Date('2024-01-01')多条件评估
条件按顺序评估,直到有一个匹配:
// Condition 1: Check for high priority
<ticket.priority> === 'high'
// Condition 2: Check for urgent keywords
<ticket.subject>.toLowerCase().includes('urgent')
// Condition 3: Default fallback
true错误处理
无效表达式和不安全的属性访问可能导致块失败。请显式校验可选属性,例如 API data 为对象时使用 ((<api.data>)?.tags ?? []).includes('urgent')。Condition 不支持普通块的错误路径恢复。如校验需要可恢复的异常,请在上游 Function 块中校验并连接其错误路径。
输入与输出
条件:要评估的布尔表达式数组
表达式:使用块输出的 JavaScript/TypeScript 条件
路由路径:每个条件结果对应的目标块
condition.conditionResult: 选中已连接的路径(包括 Else)时为 true
condition.selectedOption:匹配条件的 ID
condition.selectedPath:所选路由目标的详情
布尔结果:条件评估的主要结果
路由信息:路径选择与条件详情
访问:在条件之后的块中可用
示例用例
客户支持路由
场景:根据优先级路由支持工单
- API 块获取支持工单数据
- 条件检查
<api.data.priority>是否等于 'high' - 高优先级工单 → 带升级工具的智能体
- 普通优先级工单 → 标准支持智能体
内容审核
场景:根据分析结果过滤内容
- 智能体分析用户生成的内容
- 条件检查
<agent.toxicity_score>> 0.7 - 有毒内容 → 审核工作流
- 干净内容 → 发布工作流
用户引导流程
场景:根据用户类型个性化引导
- 函数块处理用户注册数据
- 条件检查
<function.result.account_type>=== 'enterprise' - 企业用户 → 高级设置工作流
- 个人用户 → 简单引导工作流
最佳实践
- 正确排列条件顺序:将更具体的条件放在更通用的条件之前,确保具体逻辑优先于回退逻辑
- 包含默认条件:添加一个兜底条件(
true)作为最后一个条件,以处理未匹配的情况,防止工作流执行卡住 - 保持表达式简洁:使用清晰、直接的布尔表达式,以提高可读性并便于调试
- 为条件添加说明:添加描述,说明每个条件的用途,以便更好地进行团队协作和维护
- 测试边界情况:通过使用条件范围边缘的值进行测试,验证条件能否正确处理边界值