返回顶部

论文阅读-Experiential Co-Learning of Software-Developing Agents

ChatDev在ACL2024 main有多篇论文被接收。
相关链接论文阅读-ChatDev_Communicative Agents for Software Development
代码链接https://github.com/OpenBMB/ChatDev

1. 摘要

软件开发领域,LLM智能体在 合作、任务拆分、确保软件质量等方面有着不错的表现。
存在问题:现有的一些智能体不能从过去的经验中提升,导致重复犯错,以及在多部任务的执行中效率不高。
文章目标:从过去经验中获益,从而提升智能体在后续任务执行中的能力

文章提出了一种新的多智能体学习范式:Experiential Co-Learning

方法中有两种角色:

  1. 指导员 Instructor
  2. 助理 Assistant

涉及到3个核心模块

  1. 协同跟踪模块:促进代理人之间的沟通排练,促进合作探索和创建各种训练任务的程序轨迹;
  2. 协同记忆模块:从过去的轨迹中启发式地发掘Shortcut,历史轨迹通过交叉的方式保存在他们的经历库中
  3. 协同推理模块:鼓励智能体在面对未知任务时使用过去有用的经验。

img

2. 方法介绍

2.1 Co-Tracking

本模块的目标:跟踪不同训练任务的程序轨迹

交流的过程可以建模为一个有向链,其中

  • 节点N为解决方案(solutions)
  • 边E为三元组\((s_j, i_{j+1}, s{j+1})\),表示解决方案\(s_j\)在指令\(i_{j+1}\)的指导下转变为\(s_{j+1}\)

img

2.2 Co-Memorizing

我们观察到过去的轨迹并不一定会得到更好的解决方案。
因此,仅仅记录历史记录是不够的。我们将数据结构从链转化为精炼图,带有相同内容的节点会被映射到同一个节点(通过哈希函数\(\phi(\cdot)\))。
img

节点估计 Node Estimation

每个节点会通过外部反馈获取一个评分。
img
其中,

  • \(sim(\cdot, \cdot)\)表示节点之间的相似性
  • \([\cdot]\)是一个二进制标志,表示能否成功通过编译。

和软件需求越接近的解决方案(所代表的节点),分数越高。

提取捷径 Shortcut Extraction

为了加速智能体的推理速度,我们还将通过启发式的方法发现非临界节点之间的捷径

捷径需要携带信息(informative),我们将连接两个非临界节点的且信息收益大于临界值\(\epsilon\)的边称为捷径(shortcut)

经验收集 Experience Gathering

为了利用过去的程序轨迹,两个智能体 Instructor 和 Assistant 分别积累了自己的经验库 experience pools(以键值对的形式存储)
img

2.3 Co-Reasoning

本模块的设计目标是合并 多个智能体 收集的经验库,允许通过增强指令和解决方案进行沟通。

3. 实验结果

评价指标

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

实验结果

img

posted @ 2024-09-20 08:41  Frank23  阅读(0)  评论(0编辑  收藏  举报