Sim

条件

条件模块允许您根据布尔表达式分支工作流的执行路径,从而创建具有不同执行路径的动态、响应式工作流。它会评估条件并相应地引导工作流,让您无需依赖 LLM 即可根据数据或逻辑控制执行流程。

条件模块

条件模块支持确定性决策,无需依赖 LLM,非常适合简单的分支逻辑。

概述

条件模块可以让您:

创建分支逻辑:基于布尔表达式引导工作流

做出数据驱动的决策:使用前一个模块的输出评估条件

处理多种场景:定义多个条件并设置不同路径

提供确定性路由:无需依赖 LLM 即可做出决策

工作原理

条件模块通过以下顺序评估过程运行:

  1. 评估表达式 - 使用当前工作流数据处理 JavaScript/TypeScript 布尔表达式
  2. 确定结果 - 根据表达式评估返回 true 或 false
  3. 引导工作流 - 根据结果将执行引导到相应的目标模块
  4. 提供上下文 - 生成关于决策的元数据以便调试和监控

配置选项

条件

定义一个或多个需要评估的条件。每个条件包括:

  • 表达式:一个 JavaScript/TypeScript 表达式,评估结果为 true 或 false
  • 路径:如果条件为 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.result>:条件评估的布尔结果
  • <condition.matched_condition>:匹配条件的 ID
  • <condition.content>:评估结果的描述
  • <condition.path>:所选路由目标的详细信息

高级功能

复杂表达式

在条件中使用 JavaScript 运算符和函数:

// String operations
<user.email>.endsWith('@company.com')

// Array operations
<api.tags>.includes('urgent')

// Mathematical operations
<agent.confidence> * 100 > 85

// Date comparisons
new Date(<api.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

错误处理

条件会自动处理:

  • 未定义或空值的安全评估
  • 类型不匹配的适当回退
  • 无效表达式的错误日志记录
  • 缺少变量的默认值

输入和输出

  • 条件:要评估的布尔表达式数组

  • 表达式:使用模块输出的 JavaScript/TypeScript 条件

  • 路由路径:每个条件结果的目标模块

  • condition.result:条件评估的布尔结果

  • condition.matched_condition:匹配条件的 ID

  • condition.content:评估结果的描述

  • condition.path:所选路由目标的详细信息

  • 布尔结果:主要的条件评估结果

  • 路由信息:路径选择和条件详细信息

  • 访问:在条件之后的模块中可用

示例用例

客户支持分配

场景:根据优先级分配支持工单

  1. API 模块获取支持工单数据
  2. 条件检查 <api.priority> 是否等于“高”
  3. 高优先级工单 → 分配给拥有升级工具的代理
  4. 普通优先级工单 → 分配给标准支持代理

内容审核

场景:根据分析结果过滤内容

  1. 代理分析用户生成的内容
  2. 条件检查 <agent.toxicity_score> 是否大于 0.7
  3. 有害内容 → 进入审核流程
  4. 干净内容 → 进入发布流程

用户引导流程

场景:根据用户类型个性化引导流程

  1. 功能模块处理用户注册数据
  2. 条件检查 <user.account_type> 是否等于“企业”
  3. 企业用户 → 进入高级设置流程
  4. 个人用户 → 进入简单引导流程

最佳实践

  • 正确排序条件:将更具体的条件放在一般条件之前,以确保特定逻辑优先于回退逻辑
  • 包含默认条件:添加一个兜底条件(true)作为最后的条件,以处理未匹配的情况,防止工作流执行卡住
  • 保持表达式简单:使用清晰、直接的布尔表达式,以提高可读性和调试的便利性
  • 记录条件:添加描述以解释每个条件的目的,从而提高团队协作和维护效率
  • 测试边界情况:通过测试条件范围边界值,验证条件是否正确处理边界情况
条件