宣布与Proofig建立全新合作伙伴关系!了解更多
每天都有越来越多的代码由人工智能编写。谷歌首席执行官桑达尔·皮查伊表示,截至2024年底,谷歌超过25%的代码由人工智能编写。 Robinhood首席执行官表示,该公司当前发布的大部分代码均由人工智能编写。"氛围编程"(由安德烈·卡帕西在推文中推广的术语)已进入公众词汇库:指完全沉浸于编程"氛围"中,让人工智能接管编码过程并代为编写代码的状态。
诸如Cursor、Lovable和Replit等初创公司正致力于消除编程的入门门槛:这意味着编程变得如此简单,以至于公司任何人都能编写代码,甚至无需掌握Python或React知识就能创建完整的网站或应用程序。
2025年StackOverflow开发者调查揭示了这一趋势的普及程度。84%的开发者正在使用或计划在开发流程中采用人工智能工具,其中51%的专业开发者每日使用AI工具。这标志着整个行业编写代码的方式正发生重大转变。
然而,这项调查也揭示了人工智能辅助开发时代所面临的成长阵痛。尽管52%的开发者表示人工智能工具对其生产力产生了积极影响,但对人工智能工具的积极评价已从70%以上降至2025年的60%。在经历了对这些人工智能生成工具的探索期后,开发者们如今似乎对其持更中立的态度。
挫败感的根源耐人寻味:66%的开发者对"差一点就完美的人工智能解决方案"感到沮丧,45%的人发现调试人工智能生成的代码比预期更耗时。仅有3%的开发者"高度信任"人工智能工具的输出结果,而46%的人则对人工智能工具的准确性持明确怀疑态度。
这形成了一个有趣的悖论:开发者越来越依赖人工智能编写代码,却并不完全信任其产出。正如调查所示,75%的开发者在"不信任AI答案"时仍会寻求人类帮助,将自己定位为"质量与正确性的最终仲裁者"。西蒙·威尔森坦言:"除非逐行复核,否则绝不会将AI生成的代码用于正式项目。这不仅存在幻觉风险,聊天机器人为讨好用户而给出不可行方案的可能性更令人担忧。对于不懂代码编辑的开发者而言,这尤其危险——我们可能在不知不觉中编写出内置缺陷的软件。"
尽管人工智能生成的代码已成常态,但在某些场景下,验证代码是否由人类编写仍然具有必要性。
在招聘过程中,当录用软件开发人员时,必须评估该程序员是否具备在不借助人工智能的情况下编写高质量代码的能力。此外,还需考察其对代码的理解程度,确保其能够在工作中成功调试并诊断由人工智能生成或辅助编写的缺陷代码。
在教育领域,教导学生如何在没有人工智能辅助的情况下编程至关重要。 过度依赖AI辅助会导致学生错失基础概念,绕过成为优秀软件工程师所需掌握的核心技能。尽管这些学生未来工作中很可能接触到AI辅助工具——正如StackOverflow开发者调查所暗示的那样——但若缺乏扎实基础,他们将无法修正AI生成的错误代码,甚至无法理解问题根源所在。
合规与安全。许多合规框架认为人工智能生成的代码风险较高,原因在于其可能存在幻觉和漏洞。此外还需考虑重要的许可和版权问题——人工智能模型可能无意中复制了具有不兼容许可的代码,从而导致合规违规。另外,人工智能生成的代码能否被视为专有代码或享有版权,目前仍存在争议。
代码溯源与追踪。在人工智能出现之前,诸如git blame之类的工具能轻松追踪每行代码的作者及其修改原因。随着人工智能生成海量代码,开发者越来越难以记住每行代码背后的上下文和逻辑依据。 能够检测和追踪AI生成的代码有助于代码维护、调试和资源管理。CTO和工程负责人可利用这些信息评估不同AI模型的有效性,确保团队使用最优工具。
总体而言,Pangram能够保守地检测出大部分AI生成的代码,尤其当代码超过40行时。Pangram之所以保守,是因为它极少将人类编写的代码误判为AI生成,但会遗漏约8%的AI生成代码,错误地将其判定为人类编写。
在分析所有代码片段时,Pangram会遗漏约20%的人工智能生成的代码,因为大多数简短的人工智能代码片段要么是与人类代码难以区分的模板代码,要么根本不具备足够的特征信号以供检测。
| 公制 | 得分 |
|---|---|
| 准确性 | 96.2%(22,128/22,997) |
| 假阳性率 | 0.3%(39/13,178) |
| 假阴性率 | 8.5% (830/9,819) |
| 公制 | 得分 |
|---|---|
| 准确性 | 89.4%(41,395/46,319) |
| 假阳性率 | 0.4%(99/25,652) |
| 假阴性率 | 23.3%(4,825/20,667) |
我们使用GitHub数据集进行此项分析。对于AI代码,我们采用简单的两阶段合成镜像阶段:
我们使用GPT-4o、Claude Sonnet、Llama 405b、Mistral 7B、Gemini 1.5 Flash以及Gemini 1.5 Pro来创建该数据集。
与AI生成的文本相比,AI生成的代码更难被识别,因为其自由度显著降低:相较于作家,程序员在风格选择上的随意性更少。 在我们观察到的误判案例中,许多文件本身就缺乏创造性或灵活性空间,例如模板化自动生成的代码或配置文件。低级语言(如C语言、汇编语言和编译器代码)在语法上也更为严格,因此能用于识别AI生成代码的特征信号更少。
若您正在寻找人工智能生成的代码特征,我们建议您参考以下方法: