人工智能 频道

避免人工智能生成代码的危险

  2023年是开发人员和生成性人工智能的突破年。GitHub Copilot于2022年6月从技术预览阶段毕业,OpenAI于2022年11月发布了ChatGPT。仅仅18个月后,根据Sourcegraph的一项调查,95%的开发人员报告说他们使用生成性人工智能来帮助他们编写代码。生成性人工智能可以帮助开发人员在更短的时间内编写更多代码,但我们需要考虑这可能是一件多么好的事情。

  当我们谈论用于软件开发的人工智能工具时,现在这主要意味着ChatGPT和GitHub Copilot,尽管有来自Google Bard、Amazon CodeWhisperer和Sourcegraph的Cody的竞争。开发人员正在成功使用生成人工智能来解决常见、重复和低复杂度的编码问题。然而,这些助理未能理解复杂的代码基础,识别复杂的模式,并检测复杂的问题和漏洞。

  根据GitHub关于Copilot使用情况的早期研究,开发人员编写代码的速度可比快,并认为自己工作效率更高,不那么沮丧,更充实。可能会出什么问题?

  人工智能生成的不安全代码

  大约在同一时间,斯坦福大学的一项研究发现,与对照组相比,能够访问人工智能助理的参与者更有可能编写不安全的代码,也更有可能将他们的答案评为安全。与此同时,Sauce Labs的一项调查发现,61%的开发人员承认使用ChatGPT生成的未经测试的代码,28%的开发人员定期这样做。

  因此,开发人员正在生成人工智能的帮助下更快地编写代码并产生更多代码。但他们更有可能编写不安全的代码,同时认为它是安全的,甚至无需测试即可将其推送到生产中。在2024年,我们可能会看到第一个归因于人工智能生成代码的大型软件漏洞。使用人工智能工具构建软件的成功将导致对结果过于自信,最终,这一漏洞将归咎于人工智能本身。

  为了避免这种体验,整个行业需要加倍开发实践,确保由开发人员和人工智能编写的代码得到分析、测试并符合质量和安全标准。重要的是,组织要构建确保代码被分析、测试和审查的流程,以便无论代码是如何编写的,都可以被信任。

  这些做法为开发人员在现在和将来都无风险地利用人工智能代码生成器创造了一个缓冲区。现在这很重要,因为生成性人工智能工具是新的,而且相当简陋,它们需要大量的人类监督才能引导它们朝着正确的方向前进。随着生成性人工智能以及使用它的技术继续快速发展,这在未来也很重要。我们不知道未来会是什么样子,但我们确实知道,如果没有检查代码的工具和流程,我们可能无法了解我们正在部署什么。

  把重点放在如何产生干净的代码上

  随着人工智能工具创建代码的采用越来越多,组织将不得不建立适当的制衡,以确保他们编写的代码是干净的——可维护、可靠、高质量和安全的。领导者如果想成功,就需要将干净的代码作为优先事项。

  干净的代码——一致、有意、适应和负责的代码——确保了高质量的软件在其整个生命周期。由于如此多的开发人员同时处理代码,必须由一个开发人员编写的软件在任何时候都能被另一个开发人员轻松理解和修改。有了干净的代码,开发人员可以提高工作效率,而无需花费那么多时间从另一个团队成员那里找出上下文或纠正代码。

  当涉及到在人工智能的帮助下大规模生产代码时,保持干净的代码对于最大限度地降低风险和技术债务至关重要。通过适当的测试和分析实施“按代码一样干净”的方法对于确保代码质量至关重要,无论代码是人类生成的还是人工智能生成的。

  说到人类,我不相信开发人员会离开,但他们每天工作的方式肯定会改变。开发人员使用人工智能的方式将像在谷歌上搜索一些东西作为快捷方式一样简单和常见。关于现代人工智能的使用,有很多需要探索的地方,我们必须首先考虑人的因素,以检查人工智能的缺点。

  通过确保人工智能生成的软件包含干净的代码,组织可以帮助自己免受人工智能潜在缺点的伤害,如微妙的错误或安全缺陷,并且他们可以以可预测和可持续的方式从软件中获得更多价值。当软件开发作为一项职业的地位和未来与人工智能的整合错综复杂地联系在一起时,这是不可谈判的。

  人工智能在软件开发方面具有变革潜力,但我们决不能让它在没有检查的情况下运行——特别是当当今的数字企业依赖支撑它的软件时。

  Phil Nash是Sonar的开发人员倡导者,为墨尔本和世界各地的开发人员社区服务。他喜欢使用JavaScript或Ruby来构建Web应用程序和工具来帮助开发人员。他可以在聚会和会议上闲逛,玩新技术和API,或编写开源代码。在Sonar工作之前,他是Twilio的首席开发人员布道者。

0
相关文章