屠敏撰
出品 | CSDN(ID:CSDNnews)
近一年来,有AI爱好者利用ChatGPT创业,有教授将其引入课堂,还有人用ChatGPT“打假”……事实证明,尽管很多人对新技术仍持谨慎态度,但这并不妨碍他们不断解锁AI的新玩法。
近日,美国布朗大学与中国多所大学的研究人员进行了一项实验,看看搭载ChatGPT 3.5模型版本的AI机器人能否在无需训练的情况下完成软件开发。
对于这次实验,他们还发表了一篇题为《用于软件开发的通信代理》()的论文,分享了整个过程,并在 GitHub 上开源了该项目:
最后,在要求一家虚拟 AI 软件公司开发 70 种不同的程序后,研究人员发现,AI 可以在七分钟内开发出软件,平均成本不到 1 美元。这意味着 OpenAI 的 ChatGPT 等 AI 聊天机器人可以快速且经济高效地运营一家软件公司,同时最大限度地减少人工干预。
接下来我们看看他们是怎么做的。
创建一家拥有不同角色的人工智能软件开发公司
在论文中,研究人员透露,他们创建了一个名为ChatDev的虚拟软件开发公司,将不同社会身份的代理聚集在一起,简单来说,设置了CEO、专业程序员、测试工程师、艺术设计师等职位。
在设计上,软件公司 ChatDev 采用了广泛的瀑布模型,将软件开发过程分为四个不同的阶段:设计、编码、测试和文档。
每个阶段都有由程序员、代码审计员、测试工程师等组成的代理团队参与,以建立连续性和秩序,就像人类经营任何常规业务一样。
为了促进有效的沟通与协作,ChatDev提出了ChatChain架构,包括各个阶段的划分和聊天层组件。在ChatChain中,每个节点代表一个具体的子任务,两个角色参与上下文,进行多轮讨论,提出解决方案,然后进行验证。
这种方法确保公司能够准确分析客户需求、产生想法、设计和实施原型系统、识别和解决潜在问题、解释调试信息、创建有吸引力的界面并制作用户手册。
随后,研究人员扮演“客户”,向软件公司提交了开发五子棋游戏的需求,看看虚拟公司ChatDev的代理们如何通过协作聊天进行沟通和开发。
软件开发的四个阶段:设计、编码、测试和文档
在整个会议期间,研究人员通过向每个 AI 机器人提示描述“指定任务和角色、通信协议、终止标准和约束”的“重要细节”来为它们分配特定角色,如下图所示:
当从人类客户收到开发游戏的需求时,它首先进入虚拟软件开发公司内部的设计阶段,其中涉及三个预定义的角色:CEO(首席执行官)、CPO(首席产品官)和CTO(首席技术官)。
然后,聊天链将设计阶段分解为连续的小聊天任务,包括关于目标软件模型(CEO 和 CPO)和编程语言(CEO 和 CTO)的决策。这涉及三个关键机制:
经过CEO、CPO、CTO三方讨论,决定将五子棋定位为桌游,使用Python进行开发。
同时,代理商的角色也通过自我反思,进一步细化游戏开发的需求:
明确了设计需求之后,接下来就是进入编码阶段。
编码阶段涉及三个预定义的角色:CTO、程序员和艺术设计师。同样,聊天链将编程阶段分解为连续的小聊天任务,例如 CTO 提供需求和想法,程序员生成完整的代码,然后设计师设计图形用户界面,程序员进行集成。
当代码完成后,即使是人类程序员也无法保证他们在第一次尝试时编写的代码始终没有错误。因此,这就将我们带到了测试阶段,程序员、审阅者和测试人员需要共同参与。同行评审(程序员和审阅者)检查源代码以识别潜在问题,然后进行系统测试(程序员和测试人员)。使用解释器执行的测试可验证软件的执行情况。此测试主要通过黑盒测试来评估应用程序的性能。
最后,在设计、编码和测试阶段之后,ChatDev 聘请了四名代理人(CEO、CPO、CTO 和程序员)来生成软件项目文档。使用大型语言模型生成了用户手册。
7 分钟内完成软件开发游戏开发,费用不到 1 美元
有趣的是,人工智能机器人可以在整个过程中相互交流,寻求解决方案并在相对较少的人为干预下分享重要信息。
在具体工具使用方面,研究人员使用了 ChatGPT 的“gpt3.5-turbo-16k”版本,语言温度参数(可用于控制生成结果的多样性和随机性)设置为 0.2。随后,在编码、审查和测试等不同阶段,研究人员允许最多 5 次尝试。对于基于 Python 的系统,研究人员使用 Python 3.8.16 作为解释器进行测试。
除了上述例子之外,研究人员称,本次实验分析了Chatdev生成的全部70个软件。同时,他们还对这些软件进行了统计分析,包括对话总数、消耗的代币、软件文件、图片资产以及版本更新等。
分析显示,生成的软件通常包含 2-8 个代码文件,平均 4.26 个文件。ChatDev 开发的软件通常有 39-359 行代码,平均 131.61 行。这些数据表明 ChatDev 倾向于生成代码相对较少的软件。这部分得益于面向对象编程的设计,通过继承实现代码重用,减少了冗余。研究人员还注意到,当用户指定不太具体的任务时,ChatDev 生成的源代码往往更短,平均约为 110.97 行。
在实验中,研究人员发现,测试生成的软件系统中约有86.66%的软件系统完美执行,13.33%的软件运行失败,失败的主要原因是由于API token长度限制、外部依赖问题的影响等。
ChatDev 平均每个软件生成 17.04 个文件,软件生产时间为 409.84 秒,不到 7 分钟,制造成本为 0.2967 美元。审计人员和程序员之间的相互讨论帮助识别并修改了近 20 类代码漏洞,而测试人员和程序员之间的讨论最终识别并解决了 10 多种潜在错误。
相比之下游戏开发,传统的定制软件开发周期,即使采用敏捷软件开发方法,每个周期通常也需要 2 到 4 周甚至几个月的时间。
展望未来
该研究结果表明,ChatGPT强大的生成式AI技术能够以多种方式执行特定的工作职能,而ChatDev也为免费、高效、经济的软件开发提供了一种新模式。
然而,这项研究并不完美:研究人员发现了一些局限性,比如即使他们将大模型的温度参数设置得很低,生成的输出也具有固有的随机性,而且语言模型中也存在错误和偏差,这些限制可能会在软件创建过程中造成问题。
不过,研究人员表示,这一发现“可能对现实世界中的初级程序员或工程师有所帮助”。
“展望未来,进一步的研究可以集中在完善通信协议和优化每次聊天中的交互动态上,以提高 ChatDev 的性能和有效性。此外,探索强化学习和可解释人工智能等其他新兴技术的整合,可以为应对挑战和改进整个软件开发过程提供宝贵的见解,”研究人员在论文中写道。
ChatDev目前已在GitHub开源,有兴趣的话可以尝试一下~