Files
aiagent/条件节点功能说明.md
2026-01-19 00:09:36 +08:00

4.8 KiB
Raw Permalink Blame History

条件节点功能说明

已完成

已实现强大的条件节点表达式解析功能,支持复杂的条件判断。

功能特性

1. 条件表达式解析器 (backend/app/services/condition_parser.py)

  • 支持多种比较运算符
  • 支持逻辑运算符and, or, not
  • 支持括号分组
  • 支持嵌套路径访问
  • 安全的表达式评估

2. 支持的运算符

比较运算符

  • ==: 等于
  • !=: 不等于
  • >: 大于
  • >=: 大于等于
  • <: 小于
  • <=: 小于等于
  • in: 包含
  • not in: 不包含
  • contains: 字符串包含
  • not contains: 字符串不包含

逻辑运算符

  • and: 逻辑与
  • or: 逻辑或
  • not: 逻辑非

3. 工作流引擎集成

  • 条件节点根据表达式结果选择分支
  • 动态过滤执行路径
  • 只执行符合条件的分支节点

使用方法

1. 在工作流中添加条件节点

  1. 打开工作流设计器
  2. 从节点工具箱拖拽"条件"节点到画布
  3. 配置条件表达式

2. 配置条件表达式

在节点配置面板中,输入条件表达式:

简单条件

{value} > 10
{status} == 'active'
{count} >= 0

逻辑组合

{value} > 10 and {value} < 20
{status} == 'active' or {status} == 'pending'

复杂条件(括号分组)

({value} > 10 and {value} < 20) and {status} == 'active'
({status} == 'a' or {status} == 'b') and {count} > 0

3. 连接分支

条件节点有两个输出:

  • True分支(绿色):条件为真时执行
  • False分支(红色):条件为假时执行

连接方式:

  1. 从条件节点的底部连接点拖出
  2. 选择True或False分支
  3. 连接到目标节点

表达式语法

变量引用

使用 {key} 引用输入数据中的字段:

{value} > 10
{user.name} == 'admin'
{items[0].price} > 100

值类型

支持多种值类型:

  • 数字: 10, 3.14
  • 字符串: 'active', "pending"
  • 布尔值: true, false
  • None: null, None

嵌套路径

支持访问嵌套数据:

  • {user.name}: 访问 user.name
  • {items[0]}: 访问数组第一个元素
  • {items[0].price}: 访问嵌套对象

示例

示例1: 数值范围判断

条件表达式: {value} > 10 and {value} < 20

输入: {"value": 15}
结果: True → 走True分支

输入: {"value": 5}
结果: False → 走False分支

示例2: 状态判断

条件表达式: {status} == 'active' or {status} == 'pending'

输入: {"status": "active"}
结果: True → 走True分支

输入: {"status": "inactive"}
结果: False → 走False分支

示例3: 复杂条件

条件表达式: ({value} > 10 and {value} < 20) and {status} == 'active'

输入: {"value": 15, "status": "active"}
结果: True → 走True分支

输入: {"value": 15, "status": "inactive"}
结果: False → 走False分支

示例4: 字符串包含

条件表达式: {message} contains 'error'

输入: {"message": "发生错误"}
结果: True → 走True分支

输入: {"message": "成功"}
结果: False → 走False分支

工作流示例

示例工作流:条件分支处理

开始 → LLM节点(分析) → 条件节点(判断) → [True] → 输出节点1
                                      → [False] → 输出节点2

配置:

  1. LLM节点: 分析输入数据,返回结果
  2. 条件节点: {result} contains 'error'
  3. True分支: 处理错误情况
  4. False分支: 处理正常情况

测试结果

测试覆盖

  • 简单条件表达式 (8/8通过)
  • 逻辑组合条件 (6/6通过)
  • 复杂条件表达式 (4/4通过)
  • 工作流中的条件节点 (通过)

测试用例

  1. 数值比较: {value} > 10, {value} == 10
  2. 字符串比较: {status} == 'active'
  3. 逻辑组合: {value} > 10 and {value} < 20
  4. 或运算: {status} == 'active' or {status} == 'pending'
  5. 括号分组: ({value} > 10 and {value} < 20) and {status} == 'active'

注意事项

  1. 变量名: 使用 {key} 格式key必须存在于输入数据中
  2. 字符串值: 字符串值需要用引号包裹:'active'"active"
  3. 运算符优先级: not > and > or,可以使用括号改变优先级
  4. 分支选择: 条件节点会根据表达式结果自动选择True或False分支
  5. 错误处理: 如果表达式评估失败默认返回False

安全特性

  • 使用安全的表达式评估(限制可用的内置函数)
  • 不支持危险的Python操作
  • 只允许访问输入数据中的字段
  • 自动处理类型转换

后续计划

  • 支持更多运算符(如正则匹配)
  • 支持函数调用(如 len({items}) > 0
  • 支持数组操作(如 {items}.length > 0
  • 可视化条件表达式编辑器

状态: 已完成 时间: 2024年