中文

让对话继续:使用 ChatGPT 以每个 $0.42 的成本修复 337 个缺陷中的 162 个

软件工程 2024-12-11 v2 机器学习

摘要

自动程序修复(APR)旨在自动为存在缺陷的程序生成补丁。近期 APR 工作聚焦于利用现代大语言模型(LLMs)直接生成补丁。此类基于 LLM 的 APR 工具首先利用原始缺陷代码构建输入提示,然后查询 LLM 以生成补丁。尽管基于 LLM 的 APR 工具能取得最先进(SOTA)结果,其仍遵循先大量生成补丁再逐一验证的经典“生成-验证”修复范式。这不仅导致许多重复且不正确的补丁,还遗漏了测试失败信息以及看似合理补丁中的关键信息。为应对这些局限,我们提出 ChatRepair,首个完全自动化的、以对话驱动的 APR 方法,其将补丁生成与即时反馈交错,以对话风格执行 APR。ChatRepair 首先向 LLM 提供相关测试失败信息作为起点,然后从同一缺陷早期修补尝试的失败与成功中学习,以实现更强大的 APR。对于未能通过所有测试的早期补丁,我们将不正确补丁与其对应的相关测试失败信息结合,构建新提示供 LLM 生成下一个补丁,从而避免重蹈覆辙。对于通过所有测试的早期补丁,我们进一步要求 LLM 生成原始合理补丁的替代变体,从而基于早期成功继续学习,生成更多合理补丁以提高获得正确补丁的机会。尽管我们的方法具有通用性,我们使用最先进的基于对话的 LLM——ChatGPT 实现了 ChatRepair。经计算访问 ChatGPT 的成本,我们得以每个缺陷 $0.42 的成本修复 337 个缺陷中的 162 个!

关键词

引用

@article{arxiv.2304.00385,
  title  = {Keep the Conversation Going: Fixing 162 out of 337 bugs for $0.42 each using ChatGPT},
  author = {Chunqiu Steven Xia and Lingming Zhang},
  journal= {arXiv preprint arXiv:2304.00385},
  year   = {2024}
}