TeamPipeline 是由一个队长与若干成员组成的流水线:队长通过工具调用把任务分派给成员,成员在各自的上下文里完成任务,最终回复作为工具结果交回队长。
其中的分派关系如下所示:
流水线模块处于实验阶段,接口可能在后续版本调整。
运行流水线
以下示例组建一个由队长、研究员和程序员组成的团队,队长根据任务决定分派给谁:team_pipeline.py
构造参数
TeamPipeline 的构造参数如下:
每个成员由
TeamMember 描述,字段如下:
分派任务
流水线第一次运行时,会向队长的工具箱注册一个外部工具TeamAssign,它的参数如下:
一次分派的完整流程如下:
1
队长分派
队长调用
TeamAssign,指明成员与任务。该工具不经过权限确认,成员自己的工具仍按各自的权限检查。2
成员执行
流水线把
prompt 作为用户消息交给对应成员,成员在自己的上下文里运行,事件从流水线的 reply_stream 流出。3
结果交回
成员的最终回复(文本与数据块)作为
TeamAssign 的工具结果交回队长;同一轮多个分派的结果按队长的调用顺序排列。4
队长继续
队长读到结果后继续推理,可以再次分派,也可以直接给出最终回复。
reset_members 决定成员以什么样的上下文迎接下一次分派。默认为 True:同一次队长回复内,队长可以就同一件事追问成员;队长回复结束后,所有成员的上下文与摘要被清空,下一次回复中的分派从头开始。设为 False 则成员跨回复保留对话。
中断与恢复
团队中任一方停在工具授权上时,处理方式与单个智能体一致:reply_stream 在所有参与者都已完成或挂起后结束,开发者把答复重新喂回来即可继续。
中断后恢复
reply_stream 接受的输入如下:
流水线的协程被取消时,会像收到
UserInterruptEvent 一样关掉挂起的队长与成员,再按队长的 interruption_raise_cancelled_error 配置决定是否继续抛出取消。