Skip to main content
TeamPipeline 是由一个队长与若干成员组成的流水线:队长通过工具调用把任务分派给成员,成员在各自的上下文里完成任务,最终回复作为工具结果交回队长。 其中的分派关系如下所示:
与目标流水线的固定循环不同,团队流水线只固化「谁能被分派、结果回到哪里」,分派给谁、分派几次由队长自己决定。它的特点如下:
流水线模块处于实验阶段,接口可能在后续版本调整。

运行流水线

以下示例组建一个由队长、研究员和程序员组成的团队,队长根据任务决定分派给谁:
team_pipeline.py
成员之间需要通过文件协作时,建议让它们共用同一个工作区,如上例中研究员与程序员共享的 LocalWorkspace,一方产出的文件另一方可以直接读取。

构造参数

TeamPipeline 的构造参数如下: 每个成员由 TeamMember 描述,字段如下:
成员的名字必须互不相同,且不能与队长同名,否则构造时抛出 ValueError。

分派任务

流水线第一次运行时,会向队长的工具箱注册一个外部工具 TeamAssign,它的参数如下: 一次分派的完整流程如下:
1

队长分派

队长调用 TeamAssign,指明成员与任务。该工具不经过权限确认,成员自己的工具仍按各自的权限检查。
2

成员执行

流水线把 prompt 作为用户消息交给对应成员,成员在自己的上下文里运行,事件从流水线的 reply_stream 流出。
3

结果交回

成员的最终回复(文本与数据块)作为 TeamAssign 的工具结果交回队长;同一轮多个分派的结果按队长的调用顺序排列。
4

队长继续

队长读到结果后继续推理,可以再次分派,也可以直接给出最终回复。
成员回复的结束原因决定了工具结果的状态: reset_members 决定成员以什么样的上下文迎接下一次分派。默认为 True:同一次队长回复内,队长可以就同一件事追问成员;队长回复结束后,所有成员的上下文与摘要被清空,下一次回复中的分派从头开始。设为 False 则成员跨回复保留对话。

中断与恢复

团队中任一方停在工具授权上时,处理方式与单个智能体一致:reply_stream 在所有参与者都已完成或挂起后结束,开发者把答复重新喂回来即可继续。
中断后恢复
成员挂起期间,队长也停在对应的分派上;该成员完成后,它的回复作为工具结果交回,队长随之继续。同一轮中未挂起的成员照常运行完毕,已经完成的结果会先交给队长。 reply_stream 接受的输入如下:
流水线的协程被取消时,会像收到 UserInterruptEvent 一样关掉挂起的队长与成员,再按队长的 interruption_raise_cancelled_error 配置决定是否继续抛出取消。