论文阅读-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 \(C\) 分为多个序列阶段\(P\)(sequential phases),
每个阶段\(P\)包含多个序列子任务\(T\)(sequential subtasks),
每个子任务\(T\)的解决靠的是 指导员instructor 和 助理assitant 之间的多轮对话
- 编程阶段:
- 代码编写
- 代码补全
- 测试阶段
- 代码审查(静态)
- 系统测试(动态)
形式化如下所示:

Agentization
为了避免Instructor和Assitant之间的交流缺少信息增益,ChatDev采用了inception prompting机制。
两个角色的系统提示此大部分时候都是对称的,包含了:
- 当前子任务的概述和目标
- 专用角色
- 可访问的外部工具
- 通信协议
- 终止条件
- 避免不良行为的约束或要求
Memory
LLM的上下文长度 限制了 智能体保存整段交流的能力。文章采用了两种记忆方式
短程记忆\(M\):保存一个阶段phase内的对话连续性长程记忆\(\tilde{M}\):保存不同阶段间的上下文信息
短程记忆的构造方式:


长程记忆的构造方式:

其中,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:以上三个指标的综合分数
实验结果


浙公网安备 33010602011771号