论文阅读-ChatDev_Communicative Agents for Software Development

1. 摘要

软件开发时一个需要多人合作的复杂任务。过去的一些方法针对瀑布模型中的某个流程进行深度学习,导致整个开发流程不连续、效率低。
本文提出了ChatDev框架,其中多个特殊的智能体通过LLM驱动,通过chat chain引导交流内容,通过communicative dehallucination引导如何交流。
这些智能体通过多轮对话在 设计、编码、测试等环节中积极贡献。

研究发现:

  1. 通过自然语言交流 有利于 系统设计 system design
  2. 通过程序语言交流 有利于 程序调试 debugging

img

  • chat chain:将每个阶段拆分为小的子任务,允许智能体通过多轮的交流共同提出和开发解决方案。此工作流指导智能体的交流内容。
  • communicative dehallucination:允许智能体在给出回答之前,积极地提出更多的细节要求,从而减少编程过程中的幻觉。

2. 方法介绍

2.1 Chat chain

ChatDev中包含的智能体包含多种社会角色:需求分析师、程序员、测试工程师。他们在软件周期中的合作流程图如下所示:
img

chat chain C 分为多个序列阶段P(sequential phases),
每个阶段P包含多个序列子任务T(sequential subtasks),
每个子任务T的解决靠的是 指导员instructor 和 助理assitant 之间的多轮对话

  • 编程阶段:
    • 代码编写
    • 代码补全
  • 测试阶段
    • 代码审查(静态)
    • 系统测试(动态)

形式化如下所示:
img

Agentization

为了避免Instructor和Assitant之间的交流缺少信息增益,ChatDev采用了inception prompting机制。
两个角色的系统提示此大部分时候都是对称的,包含了:

  • 当前子任务的概述和目标
  • 专用角色
  • 可访问的外部工具
  • 通信协议
  • 终止条件
  • 避免不良行为的约束或要求

Memory

LLM的上下文长度 限制了 智能体保存整段交流的能力。文章采用了两种记忆方式

  • 短程记忆M:保存一个阶段phase内的对话连续性
  • 长程记忆M~:保存不同阶段间的上下文信息

短程记忆的构造方式:
img
img

长程记忆的构造方式:
img
其中,P是一个预先确定的提示词,只出现在每个阶段的开始。

2.2 Communicative Dehallucination

编码幻觉通常出现在指令具有模糊性、概括性时。
因此ChatDev提出了通过多轮对话明确需求,来实现去幻觉。

communicative dehallucination中有一个类似于角色反转的特征,即编码员/助理 assistant,担任类似于指导员的角色,在给出最终回答之前,主动去寻找具体信息,例如外部依赖的名称或相关类。
形式化如下所示:
img

3. 评估

数据集

SRDD (Software Requirement Description Dataset)
它包括1200个软件任务提示,这些提示被仔细分类为5个主要领域:教育,工作,生活,游戏和创作。

baseline

  • GPT-Engineer
  • MeatGPT

评价指标

  • 完整性Completeness:量化为不包含占位符TODO的代码片段
  • 可执行性 Executability:量化为可以直接运行成功的代码比例
  • 一致性 Consistency:量化为生成软件代码和文本需求的语义嵌入之间的余弦距离
  • 质量 Quality:以上三个指标的综合分数

实验结果

img

posted @   Frank23  阅读(180)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示