平行分支
多分支并行也是我们在开发编排中常见的诉求, 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")