跳转至

Edges

Item 15: Choose the Right Edge Type for Your Data Flow Pattern

Edge 决定数据如何流动。根据场景选择合适的边类型。

四种边类型

类型 何时用
一对一 SingleEdgeGroup 管道式处理
一对多 FanOutEdgeGroup 广播任务
多对一 FanInEdgeGroup 收集结果
条件路由 SwitchCaseEdgeGroup 分支处理

SingleEdge(一对一)

workflow = (
    WorkflowBuilder(start_executor=upper)
    .add_edge(upper, reverse)  # upper → reverse
    .build()
)

FanOut(一对多)

workflow = (
    WorkflowBuilder(start_executor=producer)
    .add_fan_out_edges(producer, [triple, square])  # → triple AND → square
    .build()
)

FanIn(多对一)

workflow = (
    WorkflowBuilder(start_executor=source)
    .add_fan_in_edges([upper, lower], to_string)  # upper + lower → to_string
    .build()
)

SwitchCase(条件路由)

from agent_framework import Case, Default

workflow = (
    WorkflowBuilder(start_executor=router)
    .add_switch_case_edge_group(
        router,
        {
            Case("large"): triple,
            Case("small"): square,
            Default(): passthrough,
        },
    )
    .build()
)

Things to Remember

  • edge_name:用 ctx.send_message(data, edge_name="xxx") 指定路由标签
  • Case(condition=...):Condition 需要用 keyword argument 构造
  • Default():无匹配时走默认路由
  • FanIn 注意事项:collector 需要接受多个来源的消息,注意类型兼容