首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ChatDev:大模型驱动的全流程自动化软件开发框架

ChatDev:大模型驱动的全流程自动化软件开发框架

原创
作者头像
luckpunk
修改2025-01-15 14:05:17
修改2025-01-15 14:05:17
3.7K0
举报
文章被收录于专栏:Awesome AIGCAwesome AIGC

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

ChatDev地址:https://github.com/OpenBMB/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 是一家虚拟软件公司,通过各种不同角色的智能体 运营,包括执行官、技术官、程序员、测试员等。这些智能体形成了一个多智能体组织结构,其使命是“通过编程改变数字世界”。ChatDev内的智能体通过参加专业的功能研讨会来 协作,包括设计、编码、测试和文档编写等任务。
  • ChatDev的主要目标是提供一个基于大型语言模型(LLM)的易于使用、高度可定制并且可扩展的框架,它是研究群体智能的理想场景。

ChatDev能做什么?

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

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

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

快速开始

要开始使用,按照以下步骤操作:

  1. 克隆GitHub存储库: 首先,使用以下命令克隆存储库:
代码语言:javascript
复制
git clone https://github.com/OpenBMB/ChatDev.git
  1. 设置Python环境: 确保您具有3.9或更高版本的Python环境。您可以使用以下命令创建并激活环境,可以将ChatDev_conda_env 替换为您喜欢的环境名称:
代码语言:javascript
复制
conda create -n ChatDev_conda_env python=3.9 -y
conda activate ChatDev_conda_env
  1. 安装依赖项: 进入ChatDev目录并运行以下命令来安装必要的依赖项:
代码语言:javascript
复制
cd ChatDev
pip3 install -r requirements.txt
  1. 设置OpenAI API密钥: 将您的OpenAI API密钥导出为环境变量。将"your_OpenAI_API_key" 替换为您的实际API密钥。请注意,此环境变量是特定于会话的,因此如果打开新的终端会话,您需要重新设置它。在Unix/Linux系统上:
代码语言:javascript
复制
export OPENAI_API_KEY="your_OpenAI_API_key"

在Windows系统上:

代码语言:javascript
复制
$env:OPENAI_API_KEY="your_OpenAI_API_key"
  1. 构建您的软件: 使用以下命令启动生成您的软件,将[description_of_your_idea]替换为您的想法描述,将[project_name] 替换为您想要的项目名称:在Unix/Linux系统上:
代码语言:javascript
复制
python3 run.py --task "[description_of_your_idea]" --name "[project_name]"

在Windows系统上:

代码语言:javascript
复制
python run.py --task "[description_of_your_idea]" --name "[project_name]"
  1. 运行您的软件: 生成后,您可以在WareHouse 目录下的特定项目文件夹中找到您的软件,例如project_name_DefaultOrganization_timestamp。在该目录中运行以下命令来运行您的软件:在Unix/Linux系统上:
代码语言:javascript
复制
cd WareHouse/project_name_DefaultOrganization_timestamp
python3 main.py

在Windows系统上:

代码语言:javascript
复制
cd WareHouse/project_name_DefaultOrganization_timestamp
python main.py

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ChatDev 框架概要:让多个智能体分工合作
  • ChatDev 评测结果:“给我1杯可乐的钱和时间”
  • 项目简介
  • ChatDev能做什么?
  • 快速开始
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档