ChaosstuffAI

ChatDev多Agent框架技术要点详解

简介

ChatDev是一个基于聊天的软件开发框架,由LLM驱动的专业代理通过统一的语言通信(聊天链)被引导在什么情况下进行交流以及如何进行交流(沟通性幻觉消除),这些代理通过统一的语言通信从多轮对话中得出解决方案从而进行设计、编码和测试。

Image
Image

ChatDev使用了两个机制来保证Agent之间的协同作用:

聊天链

为了能将文本需求一步转换为功能软件,ChatDev采用了瀑布模型的核心原则:使用具有顺序阶段的聊天链,每个阶段由顺序子任务组成。具体来说,ChatDev将软件开发过程分为三个连续阶段:设计、编码和测试。编码阶段进一步细分为代码编写等子任务,而测试阶段则划分为代码评审(静态测试)和系统测试(动态测试)。在每个子任务中都有两个Agent(指导者Agent和助手Agent)。指导者Agent启动指令,指导对话朝着完成子任务的方向进行,而助手Agent遵循这些指令并提供适当的解决方案。他们通过多轮对话和合作直到完成子任务。

双Agent通信设计通过避免复杂的多Agent拓扑结构来简化通信,有效地简化了达成共识的过程。随后,来自先前任务的解决方案充当了下一阶段的桥梁,使子任务之间的过渡更加顺畅,同时还提供了整个软件开发过程的透明视图,可以检查中间解决方案并帮助识别可能的问题。

为了提高生成质量并减少人工干预,ChatDev仅在每个子任务轮开始时进行提示工程。一旦通信阶段开始,指导者和助手将以自动循环的方式相互交流,直到任务结束为止。同时为了避免角色翻转、指令重复和虚假回复等问题,ChatDev还采用了初始提示机制来启动、维持和结束代理的通信,以保证稳健高效的工作流程。

沟通性幻觉消除

当模型生成不合理、事实错误或不准确的输出时, LLM幻觉就会显现出来。这个问题在软件开发中尤为明显,因为编程语言需要精确的语法——缺少一行代码都可能导致系统崩溃。当助手难以准确遵循指令时,编码幻觉往往会频繁出现,这通常是因为某些指令的模糊性和普遍性需要多次调整,使Agent难以完全遵守。受此启发,ChatDev引入了沟通性幻觉消除,鼓励助手在提供正式响应之前主动寻求教师的更详细建议。

沟通性幻觉消除机制有一个故意的“角色反转”,助手承担了类似指导者的角色,在给出一个结论性的回答之前主动寻求更具体的信息(例如外部依赖项的确切名称及其相关类)。在指导者提供了具体的修改建议后,助手继续进行精确优化。

对比实验

作者将ChatDev(多智能体)和GPT-Engineer(单智能体)、MetaGPT(多智能体)一起进行了对比实验。为了全面评估生成的软件代码的质量,作者提出了四个评价指标,分别是完整性、可执行性、一致性和质量总分。其中,完整性指代软件能否完全满足代码补全的要求,可执行性指代软件是否能够在编译环境中正确运行并直接执行,一致性指代生成的软件代码与原始需求描述语义距离的相似程度,质量总分则是综合考虑上述三个因素得出的总分数。这些评价指标可以有效地评估整个软件系统的质量和完整性。

Image

在所有评价指标上,ChatDev都优于其他基线方法,表明了多智能体合作方法的有效性。与单智能体方法相比,多智能体合作方法能够更好地解决复杂问题,通过自主提出和不断优化源代码的方式,提高了软件的功能和完整性。

Image

在人类评估人员以及更加客观的AI评估人员(GPT-4)的评判中,ChatDev也表现出了更高的平均胜率。

Image

在时间消耗、tokens消耗、文件量和代码量上面可以看出,和单智能体相比,由于结构的复杂性,ChatDev会在这四个方面产生较高的数值,这是为了取得更好的效果不可避免的代价。与另外一个多智能体框架MetaGPT相比,ChatDev在这四个方面有少量的优势。