检测机器生成代码:揭示人工智能生成编程中的模式
社区文章 发布于2025年7月2日
大型语言模型(LLM)如Codex和ChatGPT的兴起改变了我们生成代码的方式。这些模型加速了软件开发,但同时也模糊了人类和机器生成代码之间的界限,引发了对代码真实性和完整性的担忧。在我们的最新论文《代码行间:揭示机器和人类程序员的独特模式》中,我们深入探讨了这个问题,提供了见解和一种检测机器生成代码的新解决方案。
主要见解:
虽然以前的检测方法(如DetectGPT)在识别机器生成文本方面取得了成功,但由于代码的严格句法性质,它们在代码方面举步维艰。我们的研究探讨了人类和机器编写代码的独特特征,分析了以下方面:
- 词汇多样性:机器使用的标记范围较窄,而人类编写的代码往往更具多样性。
- 简洁性:机器通常生成简洁的代码,而人类则会添加更多的标识符和注释。
- 自然性:令人惊讶的是,机器生成代码在某些场景下可能比人类代码显得更“自然”,这使得使用传统方法更难检测。
介绍DetectCodeGPT:
基于这些见解,我们开发了DetectCodeGPT,这是一种超越当前基于扰动方法的创新方法。我们的方法专注于特定的模式,如句法分割,有效区分机器生成代码和人类编写代码。通过策略性地扰动代码的风格元素(如空格和换行符),我们显著提高了检测准确性,同时保持了计算效率。
结果:
我们的实验表明,DetectCodeGPT优于最先进的方法,在AUC方面将检测准确性提高了7.6%。无论您是软件开发团队的一员,还是正在研究人工智能和代码生成,这个工具都可能成为维护代码完整性和确保软件工件真实性的游戏规则改变者。
要了解我们研究的全部细节并试用DetectCodeGPT
ICSE 2025论文:https://arxiv.org/html/2401.06461v2
代码:https://github.com/YerbaPage/DetectCodeGPT
参考
[1] 代码行间:揭示机器和人类程序员的独特模式。Yuling Shi, Hongyu Zhang, Chengcheng Wan, Xiaodong Gu. 2025年第47届国际软件工程会议(ICSE 2025)论文集。