ChatDev:大模型AI Agent驱动的虚拟软件公司,荣登GitHub Trending榜首!

作者:OpenBMB
2023-09-06 10:39:15

今年7月,清华大学 NLP 实验室联合面壁智能、北京邮电大学、布朗大学的研究人员共同发布了一个大模型驱动的全流程自动化软件开发框架 ChatDev (Chat-powered Software  Development),加入 OpenBMB 大模型工具体系。ChatDev 拟作一个由多智能体协作运营的虚拟软件公司,在人类“用户”指定一个具体的任务需求后,不同角色的智能体将进行交互式协同,以生产一个完整软件(包括源代码、环境依赖说明书、用户手册等)。这一技术为软件开发自动化提供了新的可能性,支持快捷高效且经济实惠的软件制作,未来将有效地将部分人力从传统软件开发的繁重劳动中解放出来。ChatDev 开源不到一周时间,已经收获 2.7k+ star,连续3天位居 GitHub Trending  榜首。下面,让我们从框架概要、评测结果、软件示例和进化成长四个方面全面介绍 ChatDev。

 

 


 

 ChatDev 框架概要:

让多个智能体分工合作

ChatDev 借鉴软件工程瀑布模型的思想,将其分为 软件设计(Designing)、系统开发(Coding)、集成测试(Testing)、文档编制(Documenting) 四个主要环节。之后,通过对软件开发瀑布模型的进一步分解,形成由原子任务构成的交流链(Chat Chain)。整条链可视为由原子任务组成的“软件生产线”,链中每个子任务通过专业角色(例如产品设计官、Python 程序员、测试工程师等)的智能体进行对话式信息交互和决策;驱动其进行自动化需求分析、头脑风暴、系统开发、集成测试、GUI 创作、文档编制等全流程软件工程。
驱动智能体交流对话的主要机制为:角色专业化(Role Specialization)、记忆流(Memory Stream)、自反思(Self-Reflection):
  • 角色专业化通过角色扮演机制(Role-Playing)确保每个智能体各司其职,在指定的专业角色下完成相应的方案提议和决策讨论。
  • 记忆流通过将历史对话进行呈现,保证上下文感知的对话过程,并动态地对对话历史信息进行汇总和决策。
  • 自反思机制在对话没有自动触发结束协议时生效,通过整轮对话进行文本摘要,摘录出对话过程达成一致后的最终决

 

下图示例展现了 ChatDev 框架中“CEO”和“CTO”两个智能体对“编程语言研讨”的对话交流过程:

在编码阶段,ChatDev 使用面向对象的编程语言,其模块化和继承等特性可减少整个系统的代码冗余度。此外,ChatDev 使用代码演化(Version Evolution)机制,通过Git版本控制,仅将最新版的源代码呈现给交流链的各个环节。

在编码和测试阶段,为了缓解代码幻觉问题,本文提出一种思维指示(Thought Instruction)的策略以缓解潜在的代码幻觉。具体通过角色翻转(Role Flipping)来获取交流过程中的代码审查员(Instructor)实际想让程序员(Assistant)修改的代码块精确片段,后将此思维注入到提示中以更加细粒度地将信息指示给程序员让其进行代码优化,以支持常见的代码幻觉问题(例如编写未实现的接口、添加必要注释、消除测试 bug 等问题)。

 

在文档编制环节,通过需求和代码的理解进行环境配置说明书和用户手册的生成。然后人类“用户”即可将 ChatDev 生成的软件“打包带走”并配置使用。

 


 

 

 ChatDev 评测结果:

“给我1杯可乐的钱和时间”

实验从 CAMEL 的任务库中随机提取了 70 个软件开发任务进行测试。根据用户任务需求的抽象或具体程度不同,ChatDev 所制的软件复杂度也大不相同,如下图所示,ChatDev 平均为软件生成了 131.61 行代码,2.90 个外部依赖,及 53.96 行使用说明。

此外,ChatDev 所生成的软件复杂度与用户任务需求的具体程度息息相关。而根据软件复杂度,每个任务完成的具体用时也有所浮动。从接收需求到生产完软件的全程开发周期最长耗时 1030.0 秒、最短耗时 169.0 秒。ChatDev 的软件制作平均时间小于 7.0 分钟且制作成本小于¥3.0 元(即买一杯可乐🥤的价格并喝完它的时间)。


 

 

 

 ChatDev 开发示例:

含休闲小游戏和效率工具

 

ChaDev 可以根据用户指令生成的软件种类丰富,目前覆盖编程助手(网络爬虫、数据库读写、文件批处理、网页设计),休闲小游戏(五子棋、贪吃蛇、乒乓球游戏)、效率管理工具(代办清单、数字时钟、数学计算器、密码生成器),创作辅助工具(词典、绘画板、图片编辑器)等。

以“设计一款五子棋”为例,可以看到使用 ChatDev 进行开发时,合理的框架流程如何不断迭代为软件带来细节的打磨:ChatDev 的程序员及测试人员会初步生成一个基于终端的程序(左一);GUI 设计会在此基础上加入初步用户交互界面(左二);创意设计师在交互界面上加入根据 GUI 的需要创作相应的图像素材(左三);人类“用户”可选择性地替换图像素材使其更符合用户美观度需求(左四)。

ChatDev 的能力边界可不止于这些示例,OpenBMB 开源社区热情欢迎开发者们参与 ChatDev 开源项目,为自己量身定制“ChatDev 公司”,一步跃升成为老板图片


 

 ChatDev 进化之路:

持续迭代挖掘无限潜力

新范式的产生必然会带来全新的限制和挑战,ChatDev 在 7 月发表的论文中声明:由于生成式大语言模型对下一个 Token 采样本身具有一定随机性、ChatDev 里的艺术设计师对 GUI 各个图像素材均是独立生成的、ChatDev 对编程语言存在一定的归纳偏置等,ChatDev 还存在软件生产过程具有一定不确定性、GUI 配图不自然、导致系统隐患、不能胜任中大规模的软件系统开发等局限。

两个月来,ChatDev 的作者努力克服局限,不断完善 ChatDev。7月30日,用户可以自定义 ChatChain、Phase 和 Role 设置,并且支持在线 Log 模式和 replay 模式。8月17日,V1.0.0 版本准备好发布;8月28日,系统公开提供使用。通过未来持续的研究和改进,相信 ChatDev 未来会展现出更加出色的表现。