用 7 分钟开发一个游戏出来,听起来有点像天方夜谭?借助 ChatGPT,一切皆有可能。
近日,来自布朗大学和多所中国大学的研究人员,基于 ChatGPT 进行了一项实验,成功证明 AI 具备软件开发的能力。做开发的小伙伴们一定很好奇基于 AI 的自动化编程是怎么玩的吧,我们一步一步来揭开谜底。
研究人员首先在 ChatGPT 上开了一家叫作ChatDev的虚拟软件开发公司。IT 公司该有的角色一应俱全:CEO、CTO、资深程序员、测试工程师、美工等。
对每个角色给予描述性的定义,让“他们”知道自己该干什么。这可以理解为将人才网站上的职位描述拿来用就好,例如程序员的定义就是计算机基础知识牢固,工作经验丰富,能熟练使用多种编程语言,包括 Python、Java、C/C++等。
然后是开发流程设定,这里选择了传统的瀑布式模型,即完成上个阶段的工作后,才进入下个阶段。整个过程划分为设计、编码、测试和文档四个阶段。
规定每个阶段都有一个团队参与,团队成员包括程序员、代码审核员、测试人员。这就是人类的组织形式和工作流程在 AI 世界的映射,看起来初具章法。
为了驱动工作,研究人员建立了一个聊天链(ChatChain)架构,即将任务按阶段划分,每个阶段内包含若干节点所代表的子任务。有两个角色参与节点的上下文多轮讨论,提出并验证解决方案。至此,ChatDev 的草台班子搭起来,可以开门营业了。要看看这家公司的业务能力如何,先给它提一个“五子棋(Gomoku game)”游戏的需求吧。
我们现在来仔细观察一下,看看 ChatDev 公司的各个角色是如何交流合作来完成开发任务的。
由 CEO、CPO(首席产品官)、CTO 三方会谈,从产品顶层出发,确定软件的主要功能形式、整体架构,以及开发语言。可以看到,讨论集中在大方向与整体框架上,没有纠缠于技术细节,也没有人类才有的利益算计,果然是一次高效的沟通。
讨论的结果是把五子棋游戏设计成桌面应用程序,它将提供用户友好的界面和交互式游戏体验。Python 和 Pygame 库是实现基本 Gomoku 游戏的合适选择。
由 CTO、程序员和美工主导本阶段工作。聊天链将此过程分解为多个子任务,通常由两个角色参与完成。例如, CTO 提出具体功能规格说明,程序员就生成 Python 代码。美工设计 GUI 界面,程序员将其与代码集成。AI 写的代码也是要进行测试的,这一步由程序员、审查员、测试工程师参与完成。先是代码评审(code review),其过程与人类活动相似,由同行查看代码以查漏补缺。然后是测试人员使用解释器验证软件功能,以黑盒测试的方式完成系统测试。
通过下图可以看到,测试人员果然发现了 GomokuGame 未定义的 bug,还给出了解决建议。程序员根据测试报告修复了 bug。测试人员最后给出了“代码结构良好,符合规范,成功通过测试”的评价。
写文档大概是人类程序员最不爱干的事,但人家 AI 表示这不是问题,而且文档是由 CEO、CPO、CTO、程序员来写的,看看这重视程度。文档包括运行环境依赖文件、用户手册等。文档内容也做到了格式正确、条理分明、简洁易懂。最后,一款五子棋游戏就诞生了。
研究团队按照这种生产方式,开发了 70 款软件,那么成效如何呢?用数据来说明,ChatDev 生成的工程一般有 2 至 8 个文件,平均是 4.26 个文件。每个文件一般包含 39 至 359 行代码,平均是 131.6 行。
从软件运行结果来看,大约 86.66% 的软件执行正常,但也有 13.33% 的软件执行失败。失败的原因有的是 API 令牌长度限制,有的是受外部依赖的影响。不过总体上成功率还是很高的。总体来说,软件生产的平均时间是 409.84 秒,生产成本是 0.2976 美元。用不到 7 分钟的时间,以及小于 1 美元的代价,就能产出一款合格的软件,这就是基于 ChatGPT 自动化编程的威力。
想玩转 ChatGPT 自动化编程吗,看懂《AIGC自动化编程》这本书就可以。本书分别从 ChatGPT 基本概念、自动化编程工具、行业应用三个部分进行说明,我们具体了解一下。此部分详细解释了 ChatGPT 技术的原理,介绍了 ChatGPT 可以赋能的行业领域,并展示了注册、登录 ChatGPT 的方法。对于如何应用 ChatGPT 解决问题,给出了具体的提问技巧建议。重点展示了 GitHub Copilot 在软件开发工作中的重要作用。先介绍了 GitHub Copilot 的安装和使用,然后详细说明了各种自动化编程方法,包括根据函数名自动生成实现代码、无中生有代码生成模式、检查和弥补安全漏洞等。另外还对 New Bing、Bard、Claude2 等大模型工具也一一做了介绍,读者可以根据需要去深入探索。
行业应用我们已经看到 AIGC 工具开发出了五子棋游戏,其实它能应用在诸多行业中。书中给出以下实战示例:基于 PyQt6 和 Tkinter 的桌面应用;Web 应用;太空大战等游戏应用;处理 Excel、Word、PPT 的办公自动化应用;移动应用;数据库开发,等等。
自动编程实战:桌面应用这本书涵盖的内容真不少,作者为什么知道得那么多?因为本书作者李宁热爱技术而且乐于分享,他是 51CTO 金牌讲师,制作视频课程超过 2000 小时。还有更厉害的,李宁老师出版了 40 多本 IT 畅销书,输出技术文章超 2000 万字,阅读量超千万。
大家跟着李宁老师学肯定错不了,对于要如何有效学习,书中也给出了具体建议。
·逐步深入:先学习基础概念,然后再掌握工具的使用;·交叉学习:在学习新工具时,将其与以往内容对比,触类旁通,提高效率;·广泛实践:边看边练,对于实战内容一定要亲手实践;·积极探索:不要满足于书本内容,要对 AIGC 工具有创造性的使用。《AIGC自动化编程》内容新颖,追踪业界先进技术成果,以实用为目标。同时书中理论扎实,代码案例丰富,用图文并举的方式解说复杂的操作,让读者的学习成为一趟轻松愉快的旅程。