文章标签:关键词:ChatGPT 3.5,AI 机器人,软件开发,虚拟软件公司,聊天链,角色专业化,Memory Stream,自我反思,五子棋游戏,Python,CTO,程序员,美术设计师,同行审查,黑盒测试,用户手册,大型语言模型,GPT3.5-turbo-16k,ChatDev,软件生成,局限性,完善通信协议,优化交互态,集成其他新兴技术
整理 | 屠敏
出品 | CSDN(ID:CSDNnews)
过去一年间,有 AI 爱好者使用了 ChatGPT 来创业,也有教授将其引入课堂,还有人用 ChatGPT “打假“…… 事实证明,虽然许多人对新技术仍然持谨慎态度,但不妨碍他们仍在不断解锁 AI 的新玩法。
近期,一项由布朗大学与其他我国高校研究人员共同进行的实验结果表明,ChatGPT 3.5模型的支持下的AI机器人,有可能在不经过训练的情况下完成软件开发任务。这一实验结果无疑引发了业界对于AI技术发展的新思考。
在进行相关实验的过程中,研究者们撰写并发布了一篇题为《Communicative Agents for Software Development》的论文(链接:https://arxiv.org/pdf/2307.07924v3.pdf),详细阐述了整个过程。此外,他们还在GitHub上公开了该项目的源代码:https://github.com/OpenBMB/ChatDev。
在一项富有成果的研究中,研究人员向虚拟AI软件公司提出了70个不同的程序需求。令人惊讶的是,根据实验数据分析,AI仅需7分钟就能完成这些程序的开发,而且平均成本仅为不到1美元。这一发现意味着,借助于OpenAI的ChatGPT等先进的人工智能技术,我们可以以极快的速度和经济高效的方式运营一家软件公司,同时最大程度地减少人工干预。
接下来,我们不妨看看他们是怎么做的吧 ~
创建一家 AI 软件开发公司,特设不同的角色
在学术论文中,研究者们揭露了一个名为ChatDev的虚拟软件开发公司的成立情况。该公司的运营方式独特,汇聚了来自不同社会背景的专业人才,包括首席执行官、专业程序员、测试工程师以及艺术设计师等多个职位。这种多元化的团队结构使得公司在软件开发领域具备更广泛的知识体系和丰富的经验。
作为一家专业的软件公司,ChatDev遵循着广泛应用的瀑布模型,将软件开发的整个过程划分为四个 distinct阶段:设计、编码、测试与文档编写。
在每个开发阶段,都有一支专业的团队参与其中,包括程序员、代码审核员以及测试工程师等,他们的任务是确保软件的质量和稳定性,以达到连续且有序的开发流程,这与人类在执行日常业务时所遵循的规范操作相似。
为了增进团队间的协作效率以及优化沟通流程,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 周甚至几个月。
展望未来
这份研究结果表明,ChatGPT 强大的生成式人工智能技术可以通过多种方式执行特定的工作职能,ChatDev 也为软件开发提供了一种新的模式,即免费、高效和成本效益。
然而,这项研究并不完美:研究人员发现了一些局限性,例如即使他们将大模型的温度参数(temperature parameter)设置得非常低,生成的输出依然存在固有的随机性。与此同时,语言模型中也存在错误和偏差,这些局限性可能会导致软件创建过程中出现问题。
尽管如此,研究人员表示,这些发现 ” 可能会对现实世界中的初级程序员或工程师有所帮助 “。
” 展望未来,进一步的研究可以集中于完善通信协议并优化每个聊天中的交互动态,以提高 ChatDev 的性能和有效性。此外,探索集成其他新兴技术,如强化学习和可解释人工智能等,可以为解决挑战和改进整个软件开发流程提供有价值的见解 “,研究人员在论文中写道。
目前 ChatDev 已在 GitHub 开源:https://github.com/OpenBMB/ChatDev,感兴趣的小伙伴也不妨动手试试看 ~
关键词:ChatGPT 3.5,AI 机器人,软件开发,虚拟软件公司,聊天链,角色专业化,Memory Stream,自我反思,五子棋游戏,Python,CTO,程序员,美术设计师,同行审查,黑盒测试,用户手册,大型语言模型,GPT3.5-turbo-16k,ChatDev,软件生成,局限性,完善通信协议,优化交互态,集成其他新兴技术