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