论文阅读-ChatDev_Communicative Agents for Software Development
1. 摘要
软件开发时一个需要多人合作的复杂任务。过去的一些方法针对瀑布模型中的某个流程进行深度学习,导致整个开发流程不连续、效率低。
本文提出了ChatDev框架,其中多个特殊的智能体通过LLM驱动,通过chat chain引导交流内容,通过communicative dehallucination引导如何交流。
这些智能体通过多轮对话在 设计、编码、测试等环节中积极贡献。
研究发现:
- 通过
自然语言
交流 有利于 系统设计 system design - 通过
程序语言
交流 有利于 程序调试 debugging
chat chain
:将每个阶段拆分为小的子任务,允许智能体通过多轮的交流共同提出和开发解决方案。此工作流指导智能体的交流内容。communicative dehallucination
:允许智能体在给出回答之前,积极地提出更多的细节要求,从而减少编程过程中的幻觉。
2. 方法介绍
2.1 Chat chain
ChatDev中包含的智能体包含多种社会角色:需求分析师、程序员、测试工程师。他们在软件周期中的合作流程图如下所示:
chat chain
每个阶段
每个子任务
- 编程阶段:
- 代码编写
- 代码补全
- 测试阶段
- 代码审查(静态)
- 系统测试(动态)
形式化如下所示:
Agentization
为了避免Instructor和Assitant之间的交流缺少信息增益,ChatDev采用了inception prompting
机制。
两个角色的系统提示此大部分时候都是对称的,包含了:
- 当前子任务的概述和目标
- 专用角色
- 可访问的外部工具
- 通信协议
- 终止条件
- 避免不良行为的约束或要求
Memory
LLM的上下文长度 限制了 智能体保存整段交流的能力。文章采用了两种记忆方式
短程记忆
:保存一个阶段phase内的对话连续性长程记忆
:保存不同阶段间的上下文信息
短程记忆的构造方式:
长程记忆的构造方式:
其中,P是一个预先确定的提示词,只出现在每个阶段的开始。
2.2 Communicative Dehallucination
编码幻觉通常出现在指令具有模糊性、概括性时。
因此ChatDev提出了通过多轮对话明确需求,来实现去幻觉。
communicative dehallucination中有一个类似于角色反转
的特征,即编码员/助理 assistant,担任类似于指导员的角色,在给出最终回答之前,主动去寻找具体信息,例如外部依赖的名称或相关类。
形式化如下所示:
3. 评估
数据集
SRDD (Software Requirement Description Dataset)
它包括1200个软件任务提示,这些提示被仔细分类为5个主要领域:教育,工作,生活,游戏和创作。
baseline
- GPT-Engineer
- MeatGPT
评价指标
- 完整性Completeness:量化为不包含占位符TODO的代码片段
- 可执行性 Executability:量化为可以直接运行成功的代码比例
- 一致性 Consistency:量化为生成软件代码和文本需求的语义嵌入之间的余弦距离
- 质量 Quality:以上三个指标的综合分数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律