亚马逊AWS官方博客

使用 CodeWhisperer 作为 AI 编码助手,重新构想软件开发



Amazon CodeWhisperer 正式发布的几个月里,许多客户都已经使用它来简化和精简其软件开发方式。CodeWhisperer 使用由根基模型提供支持的生成式人工智能来理解代码的语义和上下文,并提供相关且有用的建议。它有助于更快、更安全地构建应用程序,并且可以在不同层面提供帮助,从小建议到编写完整的函数和单元测试,帮助将复杂的问题分解为更简单的任务。

想象一下,您想提高代码测试覆盖范围或为应用程序实施细粒度的授权模型。当您开始编写代码时,CodeWhisperer 将在后台运行。它可以理解您的注释和现有代码,提供从代码段到整个函数或类的实时建议。这种即时帮助会根据您的流程进行调整,减少了在搜索解决方案或语法提示时进行上下文切换的需要。在开发过程中,使用编码助手可以提高专注度和工作效率。

当您遇到不熟悉的 API 时,CodeWhisperer 可以为您提供相关的代码建议,从而加快您的工作速度。此外,CodeWhisperer 还具有全面的代码扫描功能,可以检测难以发现的漏洞并提供修复建议。这与全球开放应用程序安全项目(OWASP)概述的最佳实践一致。这不仅使编码更高效、更安全,还让工作质量更有保证。

CodeWhisperer 还可以标记类似于开源训练数据的代码建议,并标记和删除可能被认为有偏见或不公平的有问题的代码。它为您提供相关开源项目的存储库 URL 和许可证,使您可以更轻松地查看它们并在必要时添加归因。

下面提供了几个 CodeWhisperer 实际应用的示例,这些示例涵盖了软件开发的不同领域,从原型设计和入门到数据分析和权限管理。

CodeWhisperer 可加快原型设计和入职培训
一个以有趣的方式使用 CodeWhisperer 的客户是 BUILDSTR,这是一家提供专注于平台开发和现代化的云工程服务的咨询公司。他们在后端使用 Node.js 和 Python,在前端主要使用 React。

我与 BUILDSTR 的联合创始人 Kyle Hines 进行了交谈,他说:“在对不同客户不同类型的开发项目利用 CodeWhisperer 的过程中,我们已经看到了它对原型设计的巨大影响。例如,我们能够以极快的速度为与其他 AWS 服务(例如 Amazon DynamoDB)交互的 AWS Lambda 函数创建模板,这给我们留下了深刻的印象”。 Kyle 说,他们现在在原型设计上花费的时间减少了 40%,而且他们注意到客户环境中存在的漏洞数量减少了 50% 以上。

使用 CodeWhisperer 生成 AWS Lambda 函数处理程序的代码编辑器的屏幕截图。

Kyle 补充说:“由于招聘和培养新人才是咨询公司的一项长期工作,因此我们利用 CodeWhisperer 对新开发人员进行入职培训,它帮助 BUILDSTR Academy 将入职培训的时间和复杂性减少了 20% 以上。”

CodeWhisperer 用于探索性数据分析
Wendy Wong 是一名业务绩效分析师,在 Service NSW 和 AI 敏捷项目中构建数据管道。由于她对社区的贡献,她还被评为了 AWS 数据大侠。她表示,当她使用统计和可视化工具分析数据集以获取其主要特征的摘要时,Amazon CodeWhisperer 显著加快了探索性数据分析过程。

她认为 CodeWhisperer 是一个快速、用户友好且可靠的编码助手,可以准确地推断出她编写的每一行代码的意图,并最终通过其最佳实践建议帮助提高代码质量。

“使用 CodeWhisperer,我不必记住每一个细节,因为它可以准确地自动完成我的代码和注释,大大简化了代码编译”,她分享道,“以前,我需要花 15 分钟来设置数据准备预处理任务,但现在只需要 5 分钟就能准备好”。

在 Jupyter notebook 中使用 Amazon CodeWhisperer 进行探索性数据分析的屏幕截图。

Wendy 说,通过将这些重复的任务委托给 CodeWhisperer,她的工作效率得到了提高,她写了一系列文章来解释如何使用 CodeWhisperer 来简化探索性数据分析。

另一个用于浏览数据集的工具是 SQL。Wendy 正在研究 CodeWhisperer 如何为不是 SQL 专家的数据工程师助力。例如,她注意到他们只需要求其“写入多个联接”或“编写子查询”就可以快速获得要使用的正确语法。

让 Amazon CodeWhisperer 生成 SQL 语法和代码。

CodeWhisperer 可加快测试和其他日常任务
我有幸与AWS 开发人员关系平台团队的软件工程师共事了一段时间。这个团队的工作内容包括构建和运营 community.aws 网站。

community.aws 网站的屏幕截图,该网站由 AWS 开发人员关系平台团队在 Amazon CodeWhisperer 的帮助下构建和运营。

Nikitha Tejpal 的工作主要围绕 TypeScript,CodeWhisperer 可以在她输入时提供有效的自动完成建议,从而帮助她完成编码过程。她说她特别喜欢 CodeWhisperer 帮助进行单元测试的方式。

“我现在可以专注于编写正面测试,然后使用注释让 CodeWhisperer 为相同的代码提供负面测试建议”,她说,“这可以将我编写单元测试所需的时间缩短 40%”。

她的同事 Carlos Aller Estévez 依靠 CodeWhisperer 的自动完成功能为他提供一两行代码建议,以补充他现有的代码,然后,他再自行判断是接受还是忽略这些代码。其他时候,他会主动利用 CodeWhisperer 的预测功能为他编写代码。“如果我明确想让 CodeWhisperer 为我编码,我会写一个方法签名,并在注释中说明我的需求,然后等待自动完成”,他解释说。

例如,当 Carlos 的目标是检查用户是否拥有给定路径或其任何父路径的权限时,CodeWhisperer 根据 Carlos 的方法签名和注释为部分问题提供了一个巧妙的解决方案。生成的代码会检查给定资源的父目录,然后创建所有可能的父路径的列表。然后,Carlos 对每条路径进行了简单的权限检查,以完成实施。

“CodeWhisperer 可以帮助我处理算法和实施细节方面的工作,这样我就有更多时间思考大局,例如业务需求,并创建更好的解决方案”,他补充说。

CodeWhisperer 基于方法签名和注释生成的代码。

CodeWhisperer 是一名多语言团队合作者
CodeWhisperer 通晓多种语言,支持 15 种编程语言的代码生成:Python、Java、JavaScript、TypeScript、C#、Go、Rust、PHP、Ruby、Kotlin、C、C++、Shell 脚本、SQL 和 Scala。

CodeWhisperer 还是一名团队合作者。除了 Visual Studio (VS) Code 和 JetBrains 系列 IDE(包括 IntelliJ、PyCharm、GoLand、CLion、PhpStorm、RubyMine、Rider、WebStorm 和 DataGrip)之外,CodeWhisperer 还可用于 JupyterLabAWS Cloud9AWS Lambda 控制台和 Amazon SageMaker Studio

在 AWS,我们致力于通过投资开发新服务来满足客户的需求,帮助客户将负责任的人工智能从理论转变为实践,让他们能更轻松地识别和缓解偏见,提高可解释性,并帮助保持数据的私密性和安全性。

您可以通过个人套餐免费使用 Amazon CodeWhisperer。有关更多信息,请参阅 CodeWhisperer 定价。要开始使用,请按照以下步骤操作。

Danilo