跳转至

平行分支

多分支并行也是我们在开发编排中常见的诉求, Agently Workflow 支持您使用以下方式轻松编排不同种类的多分支并行。

从单一起点工作块发散的多分支并行

# 通常包含多分支的工作流不追求在一段链式表达中完成
# 需要分成多段表达

# 第一段:START->分支起始点
workflow.connect_to("start_chunk")

# 第二段:分支起始点->A分支
(
    workflow.chunks["start_chunk"]
        .connect_to("branch_a_chunk_1")
        .connect_to("branch_a_chunk_2")
)

# 第三段:分支起始点->B分支
(
    workflow.chunks["start_chunk"]
        .connect_to("branch_b_chunk_1")
        .connect_to("branch_b_chunk_2")
)

从单一起点工作块发散,并最终需要在同一个结束工作块等待多个并行分支完成

# 第一段:START->分支起始点
workflow.connect_to("start_chunk")

# 第二段:分支起始点->A分支->结束块
(
    workflow.chunks["start_chunk"]
        .connect_to("branch_a_chunk_1")
        .connect_to("branch_a_chunk_2")
        # 使用不同的输入端点承接分支运行结果
        .connect_to("end_chunk.branch_a")
)

# 第三段:分支起始点->B分支->结束块
(
    workflow.chunks["start_chunk"]
        .connect_to("branch_b_chunk_1")
        .connect_to("branch_b_chunk_2")
        # 使用不同的输入端点承接分支运行结果
        .connect_to("end_chunk.branch_b")
)

关于工作块端点和输入端点的运行逻辑,更详细说明请点击查看这里

更复杂的分支组合编排

# 第一段:START->分支起始点
workflow.connect_to("start_chunk")

# 第二段:分支起始点->A分支->第一等待块
(
    workflow.chunks["start_chunk"]
        .connect_to("branch_a_chunk_1")
        .connect_to("branch_a_chunk_2")
        # 使用不同的输入端点承接分支运行结果
        .connect_to("first_wait_chunk.branch_a")
)

# 第三段:分支起始点->B分支->第一等待块
(
    workflow.chunks["start_chunk"]
        .connect_to("branch_b_chunk_1")
        .connect_to("branch_b_chunk_2")
        # 使用不同的输入端点承接分支运行结果
        .connect_to("first_wait_chunk.branch_b")
)

# 第四段:分支起始点->C分支->第二等待块
(
    workflow.chunks["start_chunk"]
        .connect_to("branch_c_chunk_1")
        .connect_to("branch_c_chunk_2")
        # 因为只有一个下游等待块,可以直接使用默认的输入端点
        .connect_to("second_wait_chunk")
)

# 第五段:第一等待块/第二等待块->结束块
workflow.chunks["first_wait_chunk"].connect_to("end_chunk.first")
workflow.chunks["second_wait_chunk"].connect_to("end_chunk.second")