论文阅读-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
。
方法中有两种角色:
- 指导员 Instructor
- 助理 Assistant
涉及到3个核心模块:
协同跟踪模块
:促进代理人之间的沟通排练,促进合作探索和创建各种训练任务的程序轨迹;协同记忆模块
:从过去的轨迹中启发式地发掘Shortcut,历史轨迹通过交叉的方式保存在他们的经历库中协同推理模块
:鼓励智能体在面对未知任务时使用过去有用的经验。
2. 方法介绍
2.1 Co-Tracking
本模块的目标:跟踪不同训练任务的程序轨迹
交流的过程可以建模为一个有向链,其中
- 节点N为解决方案(solutions)
- 边E为三元组\((s_j, i_{j+1}, s{j+1})\),表示解决方案\(s_j\)在指令\(i_{j+1}\)的指导下转变为\(s_{j+1}\)。
2.2 Co-Memorizing
我们观察到过去的轨迹并不一定会得到更好的解决方案。
因此,仅仅记录历史记录是不够的。我们将数据结构从链转化为精炼图,带有相同内容的节点会被映射到同一个节点(通过哈希函数\(\phi(\cdot)\))。
节点估计 Node Estimation
每个节点会通过外部反馈获取一个评分。
其中,
- \(sim(\cdot, \cdot)\)表示节点之间的相似性
- \([\cdot]\)是一个二进制标志,表示能否成功通过编译。
和软件需求越接近的解决方案(所代表的节点),分数越高。
提取捷径 Shortcut Extraction
为了加速智能体的推理速度,我们还将通过启发式的方法发现非临界节点之间的捷径。
捷径需要携带信息(informative)
,我们将连接两个非临界节点的且信息收益大于临界值\(\epsilon\)的边称为捷径(shortcut)
。
经验收集 Experience Gathering
为了利用过去的程序轨迹,两个智能体 Instructor 和 Assistant 分别积累了自己的经验库 experience pools(以键值对的形式存储)
2.3 Co-Reasoning
本模块的设计目标是合并 多个智能体 收集的经验库,允许通过增强指令和解决方案进行沟通。
3. 实验结果
评价指标
- 完整性Completeness:量化为不包含占位符TODO的代码片段
- 可执行性 Executability:量化为可以直接运行成功的代码比例
- 一致性 Consistency:量化为生成软件代码和文本需求的语义嵌入之间的余弦距离
- 质量 Quality:以上三个指标的综合分数