过去一年间,有 AI 爱好者使用了 ChatGPT 来创业,也有教授将其引入课堂,还有人用 ChatGPT “打假”......事实证明,虽然许多人对新技术仍然持谨慎态度,但不妨碍他们仍在不断解锁 AI 的新玩法。
近日,来自布朗大学和多所中国大学的研究人员进行了一项实验,看看由 ChatGPT 3.5 模型版本支持的 AI 机器人是否可以在没有训练的情况下完成软件开发。
针对这项实验,他们还发表了一篇标题为《Communicative Agents for Software Development》的论文,分享了全过程,并将项目在 GitHub
最终研究人员在要求虚拟的 AI 软件公司开发 70 个不同的程序后,根据实验结果显示,AI 可以在七分钟内开发出软件,平均成本不到 1 美元。这意味着 OpenAI 的 ChatGPT 等人工智能聊天机器人可以以快速、经济高效的方式运营一家软件公司,同时将人为干预降至最低。
接下来,我们不妨看看他们是怎么做的吧~
创建一家 AI 软件开发公司,特设不同的角色
在论文中,研究人员透露他们创建了一家名为 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 和程序员)来生成软件项目文档。使用大型语言模型,生成了用户手册。
在 7 分钟内以不到 1 美元的成本,来完成整个软件开发
有趣的是,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 周甚至几个月。
网友评论