Skip to content

match / case 路由分支

match / case 适合“输入值 -> 处理逻辑”的映射。

1. 固定值路由

python
from agently import TriggerFlow, TriggerFlowRuntimeData

flow = TriggerFlow()

@flow.chunk("low")
async def low(_: TriggerFlowRuntimeData):
    return "priority: low"

@flow.chunk("medium")
async def medium(_: TriggerFlowRuntimeData):
    return "priority: medium"

@flow.chunk("unknown")
async def unknown(_: TriggerFlowRuntimeData):
    return "priority: unknown"

(
    flow.to(lambda _: "medium")
    .match()
    .case("low")
    .to(low)
    .case("medium")
    .to(medium)
    .case_else()
    .to(unknown)
    .end_match()
    .end()
)

2. 命中模式

  • hit_first 默认;首个命中就结束
  • hit_all 适合多标签命中、多分类扩散

3. 当前最佳实践

  • 值映射优先用 match
  • 顺序优先判断优先用 if / elif / else
  • 需要配置导出时,case 条件函数使用具名函数

不再推荐

  • 把非常复杂的业务副作用塞进 case 条件里
  • 期待匿名 lambda case 条件可导出 JSON/YAML