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