对于ChatDev,我个人的看法是非常积极的。我认为它是一个非常有用的聊天开发工具,可以帮助人们更方便地进行实时沟通。它提供了许多强大的功能,如聊天记录、文件共享和多人聊天等。我特别喜欢它的用户界面设计,简洁而直观。此外,它还具有良好的稳定性和安全性,可以放心使用。总的来说,我对ChatDev非常满意,并且愿意推荐给其他人使用。
我现在在 LinkedIn 上多次看到这篇论文被提及,一些人声称它“令人印象深刻”,是“软件工程师末日的开始”,“只需花费1美元和7分钟制作软件,为什么我还要雇佣软件开发者”等等。因此,我想对这个讨论做出我的贡献。我认为,这篇论文和开发的框架被过高地估计了。
快速摘要:该框架由多个角色组成,这些角色也存在于大多数软件公司中(CTO,CEO,开发人员,测试人员,设计师)。基于定义应该开发的软件的输入提示,这些虚拟角色会相互通信以生成应用程序。
在我看来,这篇论文只是一个有趣的实验而已。从研究的角度来看,并没有教给我们任何新的东西——在ChatDev论文中,多智能体协作与LLMs的应用已经在其他几篇论文中被证明过了。我们也没有学到关于LLMs在软件工程中的使用的新思路,这已经被广泛采用了。虽然框架本身似乎很可靠,但也有一些结果/方面,我认为应该更加批判地质疑。以下是其中一些:
写过的“软件”平均有131行代码。作者解释说,这部分是由于面向对象编程和继承的原因,另一部分是由于较少具体的输入提示。在我看来,他们在论证中应该更加诚实和批判。首先,生成的代码使用了面向对象编程,但没有从任何内部类(也不是外部库)继承。总的来说,我也不认为面向对象编程会减少代码行数。我对这个观察的看法是,平均131行代码不足以证明这个贡献是自主软件开发的证明或概念验证。生成的脚本仅仅是演示脚本,通常是在编程语言课程的最初部分编写的。我还没有测试过它,但如果能够通过单个提示而无需任何多代理过程生成脚本,我也不会感到惊讶。代码行数在软件开发中不应该是一个指标(产品经理们注意一下),因为它们不能反映实际功能和质量,但我生活中看到的大多数真实应用程序至少由1万行代码组成,接近(或已达到)可投入生产状态。在评估提出的框架结果时,这一点应该被考虑进去,因为它也极大地影响错误的数量和复杂性。
不仅在编码层面上,而且在规划层面上,代理之间的互动备受质疑,表明决策不完全基于权衡论证,而是相当随机。附录中包含了几个这种行为的例子。例如,首席执行官表示“用户需求应通过Python编程语言实现这个产品”。这没有任何意义,因为用户需求与所使用的语言无关。然后,首席产品官评论道:“我建议我们将五子棋游戏设计为桌面应用程序。这种模式将允许我们实现一个可视化游戏,可以在计算机上玩。它将提供用户友好的界面和互动的游戏体验。”让我们让ChatGPT做战略决策都无济于事。这段对话还显示了流程上的一个缺陷。首席执行官在没有收集更多信息的情况下,不应该仅仅决定使用哪种语言。实际上,没有人会使用Python/PyGame来开发游戏。相反,首席执行官之所以选择Python,是因为它是目前最常用的语言,并且在训练数据中有很好的代表性。
尽管有批评意见,我认为某些部分已经相当有趣,尤其是对于初级开发人员而言。拥有一位能了解业务需求并提出代码结构建议的人工智能合作开发者可能会很有帮助。我经常遇到初级同事在将业务需求抽象成足够支持可维护性和清晰代码的代码结构方面遇到问题。
请在GitHub上查看生成的代码,以形成您的意见:https://github.com/OpenBMB/ChatDev/blob/main/WareHouse/