今年7月,清华大学 NLP 实验室联合面壁智能、北京邮电大学、布朗大学的研究人员共同发布了一个大模型驱动的全流程自动化软件开发框架 ChatDev (Chat-powered Software Development),加入 OpenBMB 大模型工具体系。ChatDev 拟作一个由多智能体协作运营的虚拟软件公司,在人类“用户”指定一个具体的任务需求后,不同角色的智能体将进行交互式协同,以生产一个完整软件(包括源代码、环境依赖说明书、用户手册等)。这一技术为软件开发自动化提供了新的可能性,支持快捷高效且经济实惠的软件制作,未来将有效地将部分人力从传统软件开发的繁重劳动中解放出来。ChatDev 开源不到一周时间,已经收获 2.7k+ star,连续3天位居 GitHub Trending 榜首。下面,让我们从框架概要、评测结果、软件示例和进化成长四个方面全面介绍 ChatDev。
让多个智能体分工合作
下图示例展现了 ChatDev 框架中“CEO”和“CTO”两个智能体对“编程语言研讨”的对话交流过程:
在编码阶段,ChatDev 使用面向对象的编程语言,其模块化和继承等特性可减少整个系统的代码冗余度。此外,ChatDev 使用代码演化(Version Evolution)机制,通过Git版本控制,仅将最新版的源代码呈现给交流链的各个环节。
在编码和测试阶段,为了缓解代码幻觉问题,本文提出一种思维指示(Thought Instruction)的策略以缓解潜在的代码幻觉。具体通过角色翻转(Role Flipping)来获取交流过程中的代码审查员(Instructor)实际想让程序员(Assistant)修改的代码块精确片段,后将此思维注入到提示中以更加细粒度地将信息指示给程序员让其进行代码优化,以支持常见的代码幻觉问题(例如编写未实现的接口、添加必要注释、消除测试 bug 等问题)。
在文档编制环节,通过需求和代码的理解进行环境配置说明书和用户手册的生成。然后人类“用户”即可将 ChatDev 生成的软件“打包带走”并配置使用。
“给我1杯可乐的钱和时间”
实验从 CAMEL 的任务库中随机提取了 70 个软件开发任务进行测试。根据用户任务需求的抽象或具体程度不同,ChatDev 所制的软件复杂度也大不相同,如下图所示,ChatDev 平均为软件生成了 131.61 行代码,2.90 个外部依赖,及 53.96 行使用说明。
此外,ChatDev 所生成的软件复杂度与用户任务需求的具体程度息息相关。而根据软件复杂度,每个任务完成的具体用时也有所浮动。从接收需求到生产完软件的全程开发周期最长耗时 1030.0 秒、最短耗时 169.0 秒。ChatDev 的软件制作平均时间小于 7.0 分钟且制作成本小于¥3.0 元(即买一杯可乐🥤的价格并喝完它的时间)。
含休闲小游戏和效率工具
—
ChaDev 可以根据用户指令生成的软件种类丰富,目前覆盖编程助手(网络爬虫、数据库读写、文件批处理、网页设计),休闲小游戏(五子棋、贪吃蛇、乒乓球游戏)、效率管理工具(代办清单、数字时钟、数学计算器、密码生成器),创作辅助工具(词典、绘画板、图片编辑器)等。
以“设计一款五子棋”为例,可以看到使用 ChatDev 进行开发时,合理的框架流程如何不断迭代为软件带来细节的打磨:ChatDev 的程序员及测试人员会初步生成一个基于终端的程序(左一);GUI 设计会在此基础上加入初步用户交互界面(左二);创意设计师在交互界面上加入根据 GUI 的需要创作相应的图像素材(左三);人类“用户”可选择性地替换图像素材使其更符合用户美观度需求(左四)。
ChatDev 的能力边界可不止于这些示例,OpenBMB 开源社区热情欢迎开发者们参与 ChatDev 开源项目,为自己量身定制“ChatDev 公司”,一步跃升成为老板
持续迭代挖掘无限潜力
—
新范式的产生必然会带来全新的限制和挑战,ChatDev 在 7 月发表的论文中声明:由于生成式大语言模型对下一个 Token 采样本身具有一定随机性、ChatDev 里的艺术设计师对 GUI 各个图像素材均是独立生成的、ChatDev 对编程语言存在一定的归纳偏置等,ChatDev 还存在软件生产过程具有一定不确定性、GUI 配图不自然、导致系统隐患、不能胜任中大规模的软件系统开发等局限。