以毒攻毒:我们能在多大程度上信任ChatGPT处理源代码相关任务?
软件工程
2024-12-02 v2
摘要
随着软件开发中越来越多地使用像ChatGPT这样的大型语言模型,验证其生成的代码内容的质量变得至关重要。最近的研究提出利用ChatGPT作为开发者和测试者进行多智能体协作软件开发。多智能体协作使ChatGPT能够为其生成的代码生成测试报告,从而使其能够自我验证代码内容并根据这些报告修复错误。然而,这些研究并未评估生成的测试报告在验证代码方面的有效性。因此,我们进行了一项全面的实证研究,以评估ChatGPT在代码生成、代码补全和程序修复中的自我验证能力。我们要求ChatGPT (1) 生成正确的代码然后自我验证其正确性;(2) 完成无漏洞的代码然后自我验证是否存在漏洞;(3) 修复有错误的代码然后自我验证错误是否已解决。我们在两个代码生成数据集、一个代码补全数据集和两个程序修复数据集上的发现揭示了以下观察结果:(1) ChatGPT经常错误地将其生成的不正确代码预测为正确。(2) ChatGPT的行为中出现自相矛盾的幻觉。(3) 通过提出引导性问题,即询问ChatGPT是否同意关于错误生成或修复的代码以及已完成代码中的漏洞的断言,可以增强ChatGPT的自我验证能力。(4) 使用ChatGPT生成的测试报告可以识别已完成代码中更多的漏洞,但测试报告中对错误生成的代码和失败修复的解释大多不准确。基于这些发现,我们为使用ChatGPT的进一步研究或开发提供了启示。
引用
@article{arxiv.2405.12641,
title = {Fight Fire with Fire: How Much Can We Trust ChatGPT on Source Code-Related Tasks?},
author = {Xiao Yu and Lei Liu and Xing Hu and Jacky Wai Keung and Jin Liu and Xin Xia},
journal= {arXiv preprint arXiv:2405.12641},
year = {2024}
}