生成式 AI 用途广泛,但对企业来说,更有前景的用途之一是 AI 辅助开发,这将带来巨大益处。随着创新技术的发展,例如近期发布的全球首个 AI 软件工程师 Devin AI,对于希望提高工程流程和可交付成果的技术领导者来说,集成 AI 是一个极具吸引力的提议。
具体来说,企业可以通过多种方式,将 AI 集成到代码开发。一种选择是使用 GitHub Copilot 等工具,自动创建样板代码并实现基于 AI 的结对编程。另一种选择是利用像 Devin 这样的自主 AI 开发人员,其具备与人类同事独立工作的潜力。
AI 辅助开发为企业提供了多种好处,并且可能会继续塑造开发的未来。不过 ,它也带来了各种安全风险,必须对这些风险加以妥善管理才能充分利用这项技术。
据估计,81% 的开发人员已经在使用基于 AI 的编程助手,例如 GitHub Copilot、Tabnine 和 Amazon CodeWhisperer,回答问题和编写高难度代码。随着 AI 变得越来越先进和普及,开发团队可能会更加依赖它。
使用 AI 进行开发将为开发团队带来诸多潜在优势,例如:
提高效率:AI 可以自动执行各种开发任务,包括回答基本问题、自动编写代码、自动设计 UI。这些功能可以加快产品上市速度,降低开发成本,让公司能够以更少的员工完成更多工作。一项研究发现,使用 GitHub Copilot 让开发人员完成编程任务的速度提高了 55%。提高效率有助于企业减少人员编制或显著增加生成的代码量。
缓解开发人员的倦怠:生 成式 AI 能够自动创建样板代码,让开发人员无需编写简单、重复的代码。如果开发人员对这些任务感到厌倦,改善开发体验可以降低工作倦怠或员工离职的风险。2023 年,73% 的开发人员表示,在其职业生涯的某个阶段经历过倦怠。60-75% 的开发人员表示,AI 能够自动执行这些任务,这有助于提高工作满意度。
提高代码质量:除了编写代码之外,AI 还可以用于在开发过程中自动检测代码中的错误、漏洞和其他问题。在将代码部署到生产环境之前发现并修复问题,可以减少企业浪费时间和资源来发布补丁或补救数据泄露的风险。
专业化开发:AI 可以编写开发团队因缺乏知识和经验而无法编写的专用代码。消除对专业知识的需求,则可减少聘请外部专家或提供巨额奖励来吸引领域专家。
开发人员培训和技能提升:生成式 AI 具备为开发人员提供“即时”培训的潜力,从而增强代码安全性,并帮助开发初学者更快地上手。平均而言,开发人员会接受 30% 的代码建议,而且开发初学者的接受率更高。这将降低漏洞管理成本,让公司能够最大限度地发挥开发团队的能力。
生成式 AI 是强大的工具,但它并不是完美的解决方案。在权衡是否使用以及如何将 AI 纳入开发流程时,首席技术官还应考虑 AI 给企业带来的风险和潜在影响。
最近发生的 Samsung 数据泄露事件就是未能妥善管理 AI 使用而带来风险的一个典型示例。该公司之前曾禁止使用生成式 AI,但为了提高员工生产力而解除了这项禁令。据称,该公司在三周内将敏感的半导体研发数据、源代码,以及内部会议记录泄露给 ChatGPT,以尝试修复代码错误和自动生成会议记录。OpenAI 可以访问这些数据并且可能已将数据用于模型训练,这可能导致这些数据也会进一步泄露给其他用户。
AI 辅助开发的一些最主要风险如下所述,包括:
敏感数据泄漏:生成式 AI 工具的设计用途是不断学习,可以根据用户输入进行自我训练。输入生成式 AI 工具的敏感数据和代码示例,可能会成为模型的一部分并显示给其他用户。2023 年,Samsung 公司员工通过 ChatGPT 意 外泄露了敏感的半导体研发数据,研究发现,这些工具还可能在建议中添加其他敏感数据,例如私有 API 端点。
低质量代码:生成式 AI 并不完美,它可能会生成错误答案和低质量代码。使用自动生成的代码可能会对用户体验造成负面影响,或将安全漏洞引入应用。
降低代码可理解性:开发人员经常“随叫随到”,因为他们负责编写代码,理解代码,而且可以解决各种问题。AI 生成的代码更像是一个黑匣子,如果出现问题,这可能会阻碍开发团队修复代码的能力。
AI 幻觉:在开发过程中,AI 幻觉可能会导致生成式 AI 推荐使用不存在的软件包和资源库。如果软件包由攻击者创建,则攻击者可以向使用这些推荐软件包的任何人的应用中注入漏洞或恶意代码。
许可问题:AI 推荐或自动生 成的代码,可能使用与许可条款不兼容的第三方代码。例如,如果 AI 使用公共版权许可证的代码,则企业可能需要开源代码,否则将面临知识产权诉讼。
云支出增加:AI 生成的代码可能会请求使用付费服务,或低效地使用存储、计算和其他云资源。因此,由于代码未经优化,云支出可能会增加。
解决方案锁定:支持 AI 功能的编码助手处于起步阶段,各种新的解决方案层出不穷。将特定解决方案纳入工作流程可能会降低效率,或者在涌现可用的新技术后,会迫使企业进行昂贵的切换。
AI 拥有众多潜在优势,很可能是未来的发展方向。理想情况下,与纯粹人类开发团队相比,生成式 AI 能够帮助企业在更少的资源和更紧凑的交期内,创建更复杂、高效、安全的代码。拒绝采用 AI 辅助开发的公司,可能会面临在竞争中落后的风险,并因此失去顶尖人才。
然而,希望利用 AI 来增强开发流程的首席技术官也需要考虑和管理技术风险。以下 8 项最佳实践,有助于减轻或消除 AI 辅助开发的最大风险:
验证 AI 的建议:AI 幻觉是常见问题,这些错误可能会在软件开发过程中造成极大的破坏。在使用 AI 系统生成的代码和信息之前,请务必复核其是否准确。
管理 AI 数据风险:向 AI 提出编程问题或让其生成样板代码的风险相对较低。如果向其提供敏感知识产权信息来检查错误或提出问题,则存在数据泄露的风险。培训开发人员让他们了解 AI 的可接受用途,并实施数据丢失防护 (DLP) 措施,管理数据泄露风险。
实施 DevSecOps: AI 可以迅速加快代码开发速度,但这会降低开发人员对其编写代码的理解力。实施 DevSecOps 最佳实践,例如创建和测试以安全为中心的要求,可以降低安全漏洞的风险。
自动化安全测试:AI 生成的代码可能会将漏洞或非功能性代码引入企业的代码库。将安全测试(包括静态应用程序安全测试 (SAST) 和动态应用程序安全测试 (DAST))纳入自动化 CI/CD 管道,限制 AI 生成的不安全代码的潜在影响。
执行功能测试和非功能测试:除了引入漏洞外,AI 生成的代码可能质量比较糟糕,甚至无法正常运行。对功能需求和非功能需求进行单元测试有助于确保代码的功能与性能。强制要求遵守风格指南和编程最佳实践也有助于识别并避免问题代码。
监测软件供应链:AI 可能推荐或使用易受攻击、恶意或不存在的程序包或资源库,且许可条款不兼容。执行软件组成分析 (SCA) 并维护软件物料清单 (SBOM),可深入了解应用的依赖关系并在发布前进行验证。
实施运行时防护:尽管开发人员尽了最大努力,但易受攻击的代码仍然有可能进入生产环境。应使用 WAF、WAAP、RASP 以及其他可以阻止运行时攻击的防御措施,保护应用安全。
考虑内部部署 AI:开源 LLM 让公司能够托管其自有 AI 系统。将 AI 部署在公司内部可以减轻数据泄露的威胁、训练数据中毒,以及使用生成式 AI 的其他风险。
Cloudflare for AI 为首席技术官提供所需工具,用于构建、托管和保护 AI 辅助开发流程及其开发的应用。进一步了解如何利用 AI 功能,并践行安全设计原则。
本文来自有关影响当今技术决策者的最新趋势和主题的系列文章。
阅读《全球连通云:重新掌控 IT 和安全的方法》电子书,进一步了解如何简化和保护 AI 计划。
阅读本文后,您将能够了解:
AI 辅助开发如何让工程流程受益
使用 AI 进行软件开发的风险
减轻或消除 AI 辅助开发风险的 8 项最佳实践