搭建智能桥梁,Amazon CodeWhisperer助您轻松编程

零、前言

今年的ChatGPT热潮之后,AI大模型的应用日益广泛,虽然AI编码暂时不能完全替代程序员,但随着时代的变迁和趋势的发展,我们不必过于焦虑。我们应该积极适应变化,顺应趋势,勇敢尝试用AI来辅助编码工作。

今天让虚竹哥带大家了解下Amazon CodeWhisperer。

一、Amazon CodeWhisperer

从官方的介绍中,可以感受到Amazon CodeWhisperer是一款强大的AI编程助手,可以在你的IDE环境中即刻生成针对单行或全函数的代码建议,提升你的编程效率。借助于CodeWhisperer,可以写一段注释的话,然后CodeWhisperer会直接在开发环境中推荐一个或多个最适合实现任务的代码片段,你可以选择使用当前代码片段或者上下选择其他代码片段。

我对Amazon CodeWhisperer进行了一次全盘体验,感受到了以下几个主要功能和特点:

1、代码生成:根据注释和现有的代码生成出来的代码建议,适应性很好,有些代码非常优质,leetcode打败100%的JAVA用户。

2、多语言和IDE支持:这个就很牛逼,把大部分开发全覆盖了。

3、安全扫描:扫描代码以检测难以发现的漏洞,并给出修复建议。这个可以避免团队未来损失大量的金钱和精力。

下面带大家实战体验一波~

二、实战体验

安装

在IDEA上安装Amazon CodeWhisperer的插件(虚竹哥用的是IDEA2022.1.4版本)

按照以下步骤在IDEA中安装Amazon Toolkit插件:

1、打开IDEA,点击右上角的 "File" 菜单,然后选择 "Settings"。

2、在设置窗口左侧的菜单栏中,点击 "Plugins"。

3、在 Plugins 页面右上角,输入 "Amazon Toolkit",并从搜索结果中选择相应的插件。

4、点击 "Install" 按钮开始安装插件。

5、安装完成后,点击 "OK" 按钮。

注意,安装完成后,要重启IDEA,才会生效。点击如图的Restart IDE,等待重启。

依次点击 "View" -> "Tool Windows" -> "Amazon Toolkit"。这将打开Amazon Toolkit视图。

在Amazon Toolkit视图上,您将看到一个名为"Developer Tools"的标签页。点击这个标签页。

在"Developer Tools"页面上,您将看到一个名为"CodeWhisperer"的选项。点击这个选项。

在CodeWhisperer页面上,您将看到一个名为"Start"的按钮。点击这个按钮

选择"Use a personal email to sign up and sign in with Amazon Builder ID"

然后点击"connect"

在弹窗中,记得要点击复制图标,这是复制code,后面有用到。

然后选择"Open and Copy Code"

会看到一个浏览器页面弹出。请将复制的code粘贴到输入框中,并点击提交按钮。

如图输⼊你的邮箱地址,点击"下一步"

在页面上输入您的姓名信息,并点击 "Next" 按钮,在此之后,CodeWhisperer 将会向您的邮箱发送一个验证码。

请前往您的邮箱,并查找 CodeWhisperer 发送的邮件。在该邮件中,您将会看到一个包含验证码的消息。请复制该验证码并返回到页面上,以便完成下一步操作。

接下来,您需要设置密码。为了确保安全性,密码需要符合一定的格式和强度要求。请按照页面上的提示,并创建一个高强度的密码。在设置完成后,请再次输入该密码以进行确认。

当看到类似下图的界面时,就表示创建成功了。

实战1:

CodeWhisperer提供了一项补全注释的功能

可以根据上下文自动为代码生成注释,看效果还不错。这一功能对于不喜欢编写注释的开发者来说是非常有用的,可以轻松地为自己的代码添加有意义的描述,而无需费时费力地手动编写注释。

实战2:

CodeWhisperer提供了一项自动生成代码的功能

写了一个注释,想写个冒泡排序。自动帮我生成代码了。这个功能非常方便,特别是在你知道要实现什么功能但不确定具体的实现方式时

下面给大家演示一下:

注释写完之后,会自动生成代码建议片段,可以选择插入代码:insert code

或者上下选择其他代码片段

选择insert code

CodeWhisperer在方法体内提供了自动换行的功能。当你在方法体内按下回车键时,CodeWhisperer会自动生成后续的代码片段,以便你能够更加高效地编写代码,这里的上下文处理得很不错。

CodeWhisperer自动生成的代码,不仅带有可读性高的注释,而且还遵循了标准化代码风格,对于代码强迫症的我来说,爱了。

代码更容易理解和维护,同时也提高了代码的可读性和可维护性,不错不错。

下面是完整的代码:

`package com.xiaoxuzhu.csdn;

public class TestCodeWhisperer {

/**

  • 写个冒泡排序 */ public static void main(String[] args) {

int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int temp = 0; for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]);

} }

}`

运行结果:

实战3:

实战2只是一个简单的排序算法,要求也不高。现在来升级下实验。输入一段话,大致内容要求是:需要求解每次划动窗口的最大值。

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

要求返回 滑动窗口中的最大值 。

选择insert code ,在main方法里调用了一个方法,这个方法暂时不存在,IDE报红色了。

回车,触发CodeWhisperer提供了自动换行的功能。

选择insert code

这里的上下文处理很优秀,生成了上面需要的方法。

最后生成完整的代码。

`package com.xiaoxuzhu.csdn;

public class TestCodeWhisperer2 {

/**

  • 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

  • 返回 滑动窗口中的最大值 。 */ public static void main(String[] args) { int[] nums = {1, 3, -1, -3, 5, 3, 6, 7}; int k = 3; int[] res = maxSlidingWindow(nums, k); for (int i : res) { System.out.println(i); } }

public static int[] maxSlidingWindow(int[] nums, int k) { int[] res = new int[nums.length - k + 1]; int index = 0; for (int i = 0; i < nums.length - k + 1; i++) { int max = Integer.MIN_VALUE; for (int j = i; j < i + k; j++) { max = Math.max(max, nums[j]); } res[index++] = max; } return res; }

}`

生成的代码简洁,而且执行的结果是正确的

实验的过程很丝滑,而且ai的理解能力还是很强的,能正确地理解虚竹哥的意思并生成对应的代码。

实战4:

求解每次划动窗口的最大值还不够难,再从leetcode中选一个难度级别比较高的算法题目,看ai能不能理解,并进行正确解答。

选一个动态规划里,困难级别的:

题目是:

给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

开始人工智能写代码

按提示内容,不断插入代码insert code

最终生成代码:

跑一下结果,为2,是对的。

这样就够了吗?不!虽然我们已经成功生成了代码,但是我们不能就此满足。为了保证代码质量,我们可以使用LeetCode进行测试。

复制代码到leetcode里,然后先运行下

过啦~

提交,我们看下提交记录:

击败100%~

此时此刻,有个BGM响起:无敌是多么,多么寂寞~

实战5:

前面的四个小实战只是为了试探我们Amazon CodeWhisperer的能力,现在是时候挑战更高难度的任务了------编写一个猜数字的小游戏,看看是否能够在更复杂的上下文中理解并完成它。

下面是游戏规则:

我们要编写一个猜数字的游戏。在这个游戏中,计算机会生成一个1到188之间的随机数,并等待用户在控制台输入数字进行猜测。如果用户猜大了,程序会提示用户数字太大了;反之,如果用户猜小了,程序会提示用户数字太小了。

提示词:随机生成一个1~188以内的数字

提示词:写个标记,默认false

提示词:创建一个Scanner对象

提示词:在循环中,循环条件是flag为true终止循环,先提示 用户进行猜数字,用户输入数字,判断guessNumber的值与number是否一样,如果一样,就设置flag为true.跳出循环; 判断guessNumber的值与number是否一样 ,如果大了提示大了,小了提示小了。

提示词:最后生成提示:恭喜了,猜对了

生成的完整代码,跑起来试试:

注意事项

Amazon CodeWhisperer的"Amazon Toolkit"插件对idea的版本支持有限制,我从2019版本开始尝试,有不兼容问题,后面查找了资料,是从2022.1版本及以上才支持的。

三、总结

随着时间的推移,人工智能技术迅猛发展。智能编程助手如Amazon CodeWhisperer大大提高了开发效率和代码质量。CodeWhisperer是强大的智能编程助手,可帮助开发者更快、更安全地构建应用程序。

CodeWhisperer解决了开发中的常见痛点。它可以快速生成准确的代码建议,节省时间。对于不熟悉的编程语言,它提供准确的代码建议,避免语法错误和问题。此外,CodeWhisperer帮助开发者及早发现和修复安全漏洞,提高软件安全性和稳定性。它还消除打字错误和典型错误,提高代码准确性。

CodeWhisperer具有许多优势。它提高了工作效率和生产力,可以自信地进行编码并提供相关开源项目信息。它支持多种编程语言和流行的IDE,提供高效便捷的开发体验。开发者可以随时使用或关闭它,并免费使用,降低了成本。

CodeWhisperer适用于多种场景,可以快速生成样板代码,帮助在不熟悉的编程语言中进行编码,检测安全漏洞,消除打字和典型错误,并减少重复编码的工作。它还适用于其他常规任务和使用不熟悉的API的场景。

在实际体验中,安装和使用Amazon CodeWhisperer的插件非常简单,能够与流行的IDE无缝集成。虚竹哥在使用IDEA安装了Amazon Toolkit插件,并成功使用了CodeWhisperer生成了一些代码。实验的过程由简单注释生成到复杂的算法解答,最后实验写一个小游戏,CodeWhisperer准确地理解了虚竹哥的意图并生成了相应的代码。

此次的体验很愉快,也有收获。可以投入开发生产中,减少开发量,让我有更多时间投入更有价值的工作上。

大家也可以去体验体验,也欢迎找虚竹哥沟通分享心得。

现在还有个活动,大家可以去参加:dev.amazoncloud.cn/experience/...

我是虚竹哥,我们明天见~

相关推荐
墨风如雪12 小时前
美团LongCat-Audio-Codec:给语音大模型装上“顺风耳”与“巧舌”
aigc
ImAlex17 小时前
实测PaddleOCR-VL:文心4.5最强衍生模型如何重构文档处理效率
人工智能·aigc
用户51914958484518 小时前
利用配置错误的IAM策略窃取云函数访问令牌[GCP]
人工智能·aigc
用户51914958484520 小时前
cURL Kerberos FTP整数溢出漏洞分析与修复
人工智能·aigc
小溪彼岸21 小时前
Claude Code颠覆编程风格的Output Styles
aigc·claude
小溪彼岸21 小时前
Hooks才是Claude Code CLI 的革命性更新
aigc·claude
小溪彼岸21 小时前
深入了解Claude Code CLI子代理Subagent
aigc·claude
用户5191495848451 天前
使用AWS Security Hub自动业务上下文验证加速安全发现审查
人工智能·aigc
Baihai_IDP1 天前
AI 推理服务是否真的无利可图?从第一性原理看 AI 推理成本
人工智能·llm·aigc
Jagger_1 天前
读完《刻意练习》,我终于知道该怎么摆脱“CRUD”式重复了
前端·aigc