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

简介: 今天让虚竹哥带大家了解下AmazonCodeWhisperer。


零:前言

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

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

Amazon CodeWhisperer

image.gif编辑

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

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

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

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

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

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

二、实战体验

安装

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

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

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

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

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

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

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

image.gif编辑

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

image.gif编辑

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

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

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

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

image.gif编辑

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

然后点击“connect”

image.gif编辑

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

然后选择“Open and Copy Code”

image.gif编辑

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

image.gif编辑

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

image.gif编辑

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

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

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

image.gif编辑

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

image.gif编辑

实战1:

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

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

image.gif编辑

实战2:

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

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

下面给大家演示一下:

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

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

image.gif编辑

选择insert code

image.gif编辑

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

image.gif编辑

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

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

image.gif编辑

下面是完整的代码:

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]);


       }

   }


}


运行结果:

image.gif编辑

实战3:

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

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

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

image.gif编辑

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

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

image.gif编辑

选择insert code

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

image.gif编辑

最后生成完整的代码。

package com.xiaoxuzhu.csdn;


public class TestCodeWhisperer2 {


   /**

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

    * <p>

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

    */

   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;

   }



}


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

image.gif编辑

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

实战4:

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

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

image.gif编辑

题目是:

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

开始人工智能写代码

image.gif编辑

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

image.gif编辑

image.gif编辑

最终生成代码:

image.gif编辑

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

image.gif编辑

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

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

image.gif编辑

过啦~

image.gif编辑

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

image.gif编辑

击败100%~

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

实战5:

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

下面是游戏规则:

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

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

image.gif编辑

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

image.gif编辑

提示词:创建一个Scanner对象

image.gif编辑

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

image.gif编辑

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

image.gif编辑

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

image.gif编辑

注意事项

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

三、总结

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

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

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

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

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

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

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

现在还有个活动,大家可以去参加:https://dev.amazoncloud.cn/experience/codewhisperer-2?sc_medium=corecontent&sc_campaign=product&sc_channel=CSDN

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

目录
相关文章
|
2月前
|
敏捷开发 弹性计算 中间件
平台即服务(PaaS):简化开发与部署的新篇章
【6月更文挑战第21天】PaaS简化了应用开发与部署,提供资源池化、自动化管理及丰富的开发工具,助力企业降低成本、提高效率和系统稳定性。它支持敏捷开发、加速产品上市,改善用户体验,并推动创新,成为现代软件开发的关键。
|
机器学习/深度学习 存储 数据采集
工业场景全流程!机器学习开发并部署服务到云端 ⛵
本文以保险金额预估为例,讲解机器学习从开发到云端服务部署的全流程:基于PyCaret开发机器学习全流程、基于Flask搭建简易前端Web应用程序、在Heroku云上部署机器学习应用。
899 2
工业场景全流程!机器学习开发并部署服务到云端 ⛵
|
3月前
|
JSON 运维 监控
运维界的新宠!9.7K星认证的轻量级自动化平台等你体验
运维界的新宠!9.7K星认证的轻量级自动化平台等你体验
77 0
|
3月前
|
人工智能 搜索推荐 开发者
AI编程助手探索之旅:Amazon CodeWhisperer 提高编程效率的利器
AI编程助手探索之旅:Amazon CodeWhisperer 提高编程效率的利器
78 1
AI编程助手探索之旅:Amazon CodeWhisperer 提高编程效率的利器
|
11月前
|
运维 监控 开发者
平台工程实践,让应用开发如搭积木一般简单
在过去,传统的应用程序部署和管理通常是一个复杂且耗时的过程。这包括硬件和服务器的采购、配置、维护以及应用程序的手动部署和扩展。随着云原生概念的普及,虽然带来了扩展性、可用性等方面的改进,但也意味着运行单个脚本部署一个完整应用程序的日子一去不复返了。
141 0
|
编解码 Linux 开发者
音视频开发必备技能:详细介绍市场上最常用的工具和软件
在音视频开发过程中,选择正确的工具和软件对于项目的成功至关重要。以下是市场上最常用的工具和软件,它们使音视频开发变得更加高效和便捷。
|
机器学习/深度学习 人工智能 自然语言处理
phind——无需注册专为开发者而生的 AI 搜索引擎
phind 是一个为开发人员设计的 AI 搜索引擎,可以帮助工程师更快地找到他们所需的信息
2046 1
|
测试技术 Python
热饭的测开成果盘点第八期:C/S架构大型selenium平台本地调试客户端
本期介绍的是一个wxpython写的客户端,主要是给一套服务端的selenium平台做本地调用。在上回我说到 完全在页面维护的平台反响不好后就转变为使用者可自行在本地写脚本,写好后上传到平台即可,所以做了本地的c/s客户端方便调试用例,而且和平台联系紧密,比如一些公共变量 方法等同步之类的。但是可惜 做了一半我就被陷害愤然离职了,这个客户端也还没正式启用就雪葬了
热饭的测开成果盘点第八期:C/S架构大型selenium平台本地调试客户端
|
存储 SQL 安全
蜻蜓低代码安全工具平台开发之路
我是daxia,今年一直在开发蜻蜓安全工作台,蜻蜓内测版在五一前夕上线了,很快就积累的很多工具,用户数也逐渐增多,但我也逐渐发现这种堆积式的平台没太多技术含量;我在想是否可以做一些有挑战的事情,正好这几年低代码平台比较火热,我在想是否能在安全场景做一个低代码平台。
2067 0
|
机器学习/深度学习 人工智能 算法
微软推人人可用的机器学习,打通windows应用程序任督二脉,惠及5000万开发者
微软「Build开发者大会」首次线上开幕,CEO Nadella对开发者倾诉衷肠,微软此次推出了WhiteNoise等多个机器学习工具包,让你的机器学习模型更上一层楼,Project Reunion一统Windows应用程序开发!更有量子计算平台预览版,HoloLens、Office套件等强力升级更新。
212 0
微软推人人可用的机器学习,打通windows应用程序任督二脉,惠及5000万开发者