Agent--多agent的协作模式

上一节我们提到,多agent之间的信息流主要是由自然语言进行的,但多agent的协作模式却不止像团队分工那样只有一种讨论的形式,实际上主要分为四种:结构化协作:ReAct扩展;反思式协作:团队互查;开放式协作:并行众议;流程化协作:严格调度。这四种模式基本就囊括了绝大部分的情况,下面我们来分别讲讲他们的结构和区分。

结构化协作:ReAct扩展

ReAct框架,是把一次完整的行动闭环拆解为了三个agent:Reason Agent,Act Agent,Observe Agent,分别负责推理与规划,指定解决问题的策略和步骤;工具调用或者代码执行,将规划转化为实际行动;观察并进行结果校验,评估行动的效果并把反馈报告存储起来。 这种协作模式主要的作用是把过程透明化,让agent知道实际行动中到底是哪一环出了问题,要怎么修改,修改时要怎么做行动间的取舍,并且这样做让拆解任务、思考如何解决和行动、反思结果这些各自分开,能够更专注于自己的领域,提高任务完成质量。

反思式协作:团队互查

反思式协作,就是让各个agent站在自己的角度去思考前一个agent的输出是否合理,满足标准。比如说有四个agent,分别是planner(提供初步思路,接受反馈并补充信息,优化方案),coder(负责编写代码并提交),critic(指出代码的逻辑错误和问题)和Reviewer(审查plan,确保步骤清晰完整,确保质量有保障)。 反思式的协作看起来跟ReAct差不多,都是在不断地优化方案,但是其本质目的是不一样的,ReAct模式是为了让流程跑通,比如Action中某个行动导致返回404,更改后能正常返回数据就停止了;而反思式协作则是重在质量的提高,也就是说返回了数据并不够,还要校验数据的质量,方向等是否满足任务标准。

开放式协作:并行众议

反思式的协作看起来不错,但是当任务需要有发散性思维,需要探讨每一个方向的可行性时,线性地两两对话就不够了,而Autogen GroupChat模式,就是让每个agent能够同时贡献自己的思考,由一个ChatManager来整合各自的信息,这样能够加速想法的生成,比如说,planner的决策不需要等待一轮循环才能发现问题,可以在决策形成的初期就由Reviewer来提出某些步骤有问题需要修改,从根本上节约了时间,提高了效率

流程化协作:严格调度

现在普遍企业中,用的就是流程化协作模式,也就是我们平时常说的工作流,这种适用于我们已经非常清楚地知道每一步需要agent做什么,响应格式是什么,会有什么情况发生,整体处理逻辑清晰。那就不需要agent之间的讨论与反思了,因为已经形成了一套非常成熟的方案,直接落地执行就能输出一个很好的结果。

监控与冲突解决

前面三种协作模式,其实都隐含了一个问题,不同的agent之间的思考碰撞,到底哪个是对的,要如何判断。从监控角度出发,一般会设计好最大的讨论次数来使其强制收敛,或者在已知最终任务目标时通过结果判断强制输出; 从协调的角度出发,可以人为设定好agent之间的idea优先级,当出现冲突时,以某个agent的思考为准或者引入人工干预;亦或者可以设计一个Meta agent,其目的是为了从历史的冲突解决方案中学习方法,在遇到冲突时动态调整冲突解决策略,甚至可以在冲突逐渐偏离任务主题时将讨论或者思考的重点强行拉回来。

总的来说,这四种协作模式,我们可以先用前三种模式来逐步摸索出一套比较成熟的方案再写成工作流,区别只是在质量提升角度不同而已,并不是互斥的,甚至可以采用嵌套的形式,在ReAct的结构框架下,给每个小agent单独设计为反思式协作来提高输出质量。