全方位深度测评AI代码助手Amazon CodeWhisperer

这篇具有很好参考价值的文章主要介绍了全方位深度测评AI代码助手Amazon CodeWhisperer。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

随着互联网技术的不断发展,程序员们面临着越来越多的挑战,如代码复杂度不断提高、代码错误难以避免、团队协作效率低下等。传统的开发工具已经无法满足程序员们的需求,因此这几年基于人工智能技术的代码助手应运而生。AI代码助手的目的是通过自动化的方式帮助程序员提高开发效率、减少错误、提高代码质量,同时还可以帮助程序员快速学习新技术、更快,更安全地构建应用程序,提高团队协作效率。可以说AI代码助手成为当今软件开发领域的重要趋势之一。本篇文章就来深度测评一下AI 代码助手Amazon CodeWhisperer。

Amazon CodeWhisperer 介绍

Amazon CodeWhisperer是亚马逊云科技推出的AI代码助手,目的是帮助开发者更快,更安全地构建应用程序。作为智能编程助手,它经过了非常多的优秀开源代码训练,参与训练的代码都是具有良好的扩展性,安全性,优雅等特点,利用它编写的代码能够很快地写出健壮,优雅,具有很高扩展性的代码。 此外它还可以扫描代码来检测难以发现的漏洞,获取代码建议来立即修复漏洞。总的来说它具有以下特性:

特性

  • 实时生成代码片段或全函数的代码建议
  • 获取相关开源项目的存储库信息
  • 扫描代码漏洞,给出修复建议
  • 支持Python,Java,JavaScript等15中编程语言
  • 支持VS Code,IntelliJ IDEA,Amazon Cloud9、Amazon Lambda 控制台、JupyterLab 和 Amazon SageMaker Studio等集成开发环境

以上就是Amazon CodeWhisperer的介绍,下面进入正在的测评阶段。
主要从以下几方面进行测评,

  • 用户体验 (包括,安装,配置,文档资料)
  • 功能使用(包括,上手难度,使用复杂度,安全,准确度)
  • 场景实践(以具体业务场景体验功能)

安装,配置也是测评的一部分,下面就从最开始的安装开始体验。

安装配置 Amazon CodeWhisperer

本次安装使用的在Windows 10的VS Code上进行的。作为AI智能代码助手,它是以IDE插件的方式存在的。这样能够很好地与IDE相关功能无缝结合。提升开发效率,增强用户体验。
打开VS Code,在插件列表中搜索 AWS Toolkit
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
找到名称为 AWS Toolkit的插件,点击Install按钮进行安装。有时安装后,需要重载一下VS Code才能用。
笔者写这篇文章时,AWS Toolkit 最新的版本是1.91.0,如果有读者安装的与笔者的功能不同,请检查下版本是否一致。以下是该插件的一些基本信息
版本:1.91.0
下载次数:1,663,326
Git仓库:aws-toolkit-vscode
插件地址:AWS Toolkit
开源协议:Apache License Version 2.0
从下载次数来看,AWS Toolkit 是一个非常受欢迎的插件。
在安装完成后,你可以在左侧的侧边栏,看到一个AWS的图标,点击它就会出现插件的面板。如下:
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
该插件主要包括三种功能,

  • Amazon CodeCatalyst 统一的软件开发服务,可在AWS上快速构建和交付应用程序。
  • CDK 云应用程序资源
  • Amazon CodeWhisperer 智能代码助手。

要使用这些功能,需要用户先连接Amazon服务。
当我们需要使用Amazon CodeWhisperer, 只需要点击CodeWhisperer下的Star按钮,然后再点击Sign in 按钮,如下图:
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
如果你没有Amazon账号,也没关系,点击按钮后,会弹出一个重定向弹窗,点击Proceed To Brower,使用浏览器继续。
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
点击按钮会 页面显示大致如下
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
点击确认并继续
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划

总体步骤就是,输入邮箱,姓名 → 验证邮箱 → 填写密码 → 允许AWS Toolkit 访问数据
整体流程非常顺畅,安装,配置三分钟内就能完成。
授权后,插件就开始工作了。我们也可以开始愉快地工作了。
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
此外值得一提的是,该插件还提供了一种专业版的功能,不过要配置IAM身份中心,这部分我们暂时不表。
在安装并配置Amazon CodeWhisperer后,在编码时会自动开启代码建议。同时你也可以收到去获取代码建议。在Windows平台的VS Code上,使用Alt + C 键,使用Tab键来插入当前的建议代码块。使用左右键来切换代码块。

具体场景

下面我们在具体的场景中来体验Amazon CodeWhisperer。

使用Code Whisperer开发数据可视化图表

场景一:作为一名前端开发者,我们经常会遇到使用图表库开发一些可视化的图表,比如使用Echarts来开发一个折线图。
我们创建一个简单的html,在页面内写入必要的信息,并在script标签中写入注释

<script>
  // 请使用echarts 编写一个折线图


</script>

然后按下 Alt + C 键,这时在VS Code会调出,html is currently not supported by CodeWhisperer。
如下图:
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
目前 CodeWhisperer还不支持html文件的代码建议。所以我们需要先创建一个js,然后在html文件中引入。
我们在js文件中,使用注释写下需要实现的功能,然后按下Alt + C 键。就会出现如下图
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
在检查过给出的建议代码后,确定是我们需要的,按下Tab键,来获取插入当前区域。
更加具体的交互可以先下面的动图:
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
这是一个非常实用的场面,避免了花费大量时间去查询Echarts文档。要知道Echarts的配置文档是非常多的。下图是密密麻麻的 Echarts图表配置项:
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划

编写一个Python的浏览器自动化脚本

作为一名开发人员,我们经常会遇到一些重复的工作,比如这样一个场景,在某个网站上有一个销售榜单,我们需要实时监控这个表单,并将每天的数据汇总发到邮箱里。对于这样的重复性没有技术含量的工作,我们通常使用脚本来编写自动化脚本。下面我们就使用Amazon CodeWhisperer来编写一个这样的脚本,看看它是否能够帮助我们快速实现功能。
创建一个auto-run.py的文件,在文件里引入selenium,并且使用代码注释写下要实现的功能,按下Alt + C 键。
交互动图如下:
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
根据动图大家可以看到,当按下Alt + C 键时,只提供了一行代码建议,在按下左箭头键后,出现了四行的代码建议。整个流程是非常快速的。
给出的代码建议地完整地实现了, 使用webdriver打开Chrome浏览器,并且访问百度首页,但在输入关键词时,却把"拿我格子衫" 写成了“拿战校衫”。个人猜测是由于中文在大模型中有偏差造成的。换成英文就无此问题。
使用Amazon CodeWhisperer时,代码建议是非常快速的,这个快,除了靠个人感觉来评估,也有一些更为准确的数字来评估。Amazon CodeWhisperer提供了一个日志面板,我们可以在VS Code 的Setting配置面板里,找到AWS Toolkit的配置项,找到Log Level,将其调整为debug。如下图:
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
调整后,我们选中OUTPUT 面板,并将输出选位AWS Toolkit Logs,如下图:
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
当我们在编辑器中按下 Alt + C 键,底部的日志面板会打印出整个流程的日志:
打印信息大致如下

2023-09-25 11:36:41 [DEBUG]: command: running "aws.codeWhisperer"
2023-09-25 11:36:41 [DEBUG]: command: running "_aws.auth.autoConnect"
2023-09-25 11:36:41 [VERBOSE]: telemetry: emitted metric "vscode_executeCommand"
2023-09-25 11:36:41 [DEBUG]: codewhisperer: Connection expired = false,
                           secondaryAuth connection expired = false,
                           connection is undefined = false
2023-09-25 11:36:41 [DEBUG]: codewhisperer: isValidCodeWhispererConnection = true
2023-09-25 11:36:41 [VERBOSE]: telemetry: emitted metric "vscode_executeCommand"
2023-09-25 11:36:41 [DEBUG]: CodeWhisperer finished fetching crossfile context out of 0 files
2023-09-25 11:36:41 [DEBUG]: CodeWhispererSupplementalContext:
    isUtg: false,
    isProcessTimeout: false,
    contentsLength: 0,
    latency: 0.2452000007033348,

2023-09-25 11:36:41 [DEBUG]: SSO token cache: loaded key: 5fa44ff1-8f20-4ed5-89be-548baeb748aa
2023-09-25 11:36:42 [DEBUG]: Request ID: db72446b-5ee6-439f-af87-87800aa93d90,
                timestamp(epoch): 1695613002378,
                timezone: Asia/Shanghai,
                datetime: 9/25/2023, 11:36:42 AM,
                vscode version: '1.82.2',
                extension version: '1.91.0',
                filename: 'hello-selenium.py',
                left context of line:  '',
                line number: 2,
                character location: 0,
                latency: 1047.5229000002146 ms.
2023-09-25 11:36:42 [VERBOSE]: Recommendations:
2023-09-25 11:36:42 [VERBOSE]: [0]
driver = webdriver.Chrome()
2023-09-25 11:36:42 [VERBOSE]: telemetry: emitted metric "codewhisperer_serviceInvocation"
2023-09-25 11:36:42 [DEBUG]: SSO token cache: loaded key: 5fa44ff1-8f20-4ed5-89be-548baeb748aa
2023-09-25 11:36:42 [VERBOSE]: telemetry: emitted metric "codewhisperer_perceivedLatency"
2023-09-25 11:36:43 [DEBUG]: Request ID: b69b0f19-bf91-4fe3-b335-96268b567126,
                timestamp(epoch): 1695613003423,
                timezone: Asia/Shanghai,
                datetime: 9/25/2023, 11:36:43 AM,
                vscode version: '1.82.2',
                extension version: '1.91.0',
                filename: 'hello-selenium.py',
                left context of line:  '',
                line number: 2,
                character location: 0,
                latency: 1041.122000001371 ms.
2023-09-25 11:36:43 [VERBOSE]: Recommendations:
2023-09-25 11:36:43 [VERBOSE]: [0]
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("拿战校衫")
driver.find_element_by_id("su").click()
2023-09-25 11:36:43 [VERBOSE]: [1]
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("拿战校衣")
driver.find_element_by_id("su").click()

根据打印日志的信息,基本的流程大致是这样的,

  • 时间戳:2023-09-25 11:36:41,日志以DEBUG级别开始,表示调试信息。
  • 命令执行:运行"aws.codeWhisperer"和"_aws.auth.autoConnect"两个命令。
  • 遥测数据:emitted metric “vscode_executeCommand”,表示执行了一个VS Code命令。
  • 检查CodeWhisperer连接状态:isValidCodeWhispererConnection为true,连接有效。
  • 检查CodeWhisperer获取crossfile上下文的结果:完成从一个文件中获取crossfile上下文。
  • 检查CodeWhisperer补充上下文信息:isUtg为false,isProcessTimeout为false,contentsLength为0,latency为0.245秒。
  • SSO令牌缓存:加载了SSO令牌缓存的键值对。
  • 请求ID、时间戳、时区、日期时间、VS Code版本、扩展版本、文件名、行号、字符位置、延迟等信息被记录。
  • 推荐建议:[0],建议使用webdriver.Chrome()来创建一个Chrome浏览器驱动对象。
  • 遥测数据:emitted metric “codewhisperer_serviceInvocation”,表示服务调用的度量数据。

使用token发起的Request,整个请求中包含了这些信息

timestamp(epoch): 1695613003423,
timezone: Asia/Shanghai,
datetime: 9/25/2023, 11:36:43 AM,
vscode version: '1.82.2',
extension version: '1.91.0',
filename: 'hello-selenium.py',
left context of line:  '',
line number: 2,
character location: 0,
latency: 1041.122000001371 ms.

其中有一个指标是latency,表明延迟,即从用户按下Alt+ C键,到代码块出现这段时间。可以看到生成4行代码
只用了1s左右,非常的迅速。

通过上述的两个实战案例,相信大家已经了解Amazon CodeWhisperer的常规使用。在使用时需要以下几点

使用时注意点

  • 实现功能需要提供一些上下文,比如使用的库和功能注释
  • 最好使用英文,中文可能出现乱码或繁体
  • 使用左箭头键和右箭头键选择最合适的代码块
  • html和yaml文件暂时不支持

另外在使用的过程中,发现了一个不知是VS Code 的问题还是插件的问题,就是在用鼠标切换代码建议时,当前索引没有改变,详见下图:
全方位深度测评AI代码助手Amazon CodeWhisperer,AI代码助手,活动投稿,人工智能,原力计划
根据上图 可以看到 切换代码建议, 1/5 一直都没有变, 用户无法感知当前显示的是第几个代码块。

插件代码解析

为了更加了解这个产品,我仔细阅读了该插件的源码,它的代码托管在GitHub,主要功能代码存放在
src/codewhisperer 目录里。
Amazon CodeWhisperer的插件入口在此处,https://github.com/aws/aws-toolkit-vscode/blob/master/src/codewhisperer/views/securityPanelViewProvider.ts

这段代码是一个名为SecurityPanelViewProvider的类,它实现了vscode.WebviewViewProvider接口。这个类主要用于在Visual Studio Code中打开一个特定的文件并在安全扫描面板中显示代码扫描结果。

以下是该类的主要方法和功能:

makeUri(...args: Parameters<typeof openEditorAtRange>): vscode.Uri:这个方法用于根据给定的路径和行号范围创建一个URI,用于在openEditorAtRange方法中打开编辑器。

openEditorAtRange(path: string, startLine: number, endLine: number):这个方法接受一个文件路径和开始、结束行号,然后在VSCode中打开该文件并在指定的行范围内高亮显示问题。

persistLines():这个方法用于持久化处理过的行信息。

addLines(securityRecommendationCollection: AggregatedCodeScanIssue[], editor: vscode.TextEditor | undefined):这个方法用于将扫描结果添加到安全面板中,并更新视图。

update():这个方法用于更新视图,将处理好的HTML内容设置到webview中。

persistLine(panelSet: SecurityPanelSet, index: number):这个方法用于持久化单个处理过的行信息。

addUnclickableWarningItem(item: SecurityPanelItem)和addUnclickableInfoItem(item: SecurityPanelItem):这两个方法分别用于添加不可点击的警告项和信息项。

addClickableWarningItem(item: SecurityPanelItem)和addClickableInfoItem(item: SecurityPanelItem):这两个方法分别用于添加可点击的警告项和信息项,它们会生成一个包含文件路径和行号范围的URI,并将其设置为链接的href属性,以便用户可以点击查看文件并在VSCode中打开。

学习资料与文档

虽然Amazon CodeWhisperer使用起来非常简单,但官方还是提供了很多学习资料,覆盖各个阶段的学习者。
如果你想要获取更多有关它的资料 可以查阅官方文档 https://aws.amazon.com/cn/codewhisperer/
下面是几篇帮助你快速了解Amazon CodeWhisperer的视频教程。
利用 VS Code 开始使用 Amazon CodeWhisperer
利用 Amazon CodeWhisperer 创建基于 Python 的事件驱动型 Serverless App
利用 Amazon CodeWhisperer 创建基于 Java 的事件驱动型 Serverless App

总结

总的来讲,Amazon CodeWhisperer是一款非常优秀的智能编程助手,它能够理解代码的功能和结构,并根据这些信息自动生成注释。这有助于提高代码的可读性和可维护性,同时也能帮助开发人员更好地理解他们正在编写的代码。
本文介绍了Amazon CodeWhisperer的背景和特性,并测评了它在实际开发场景中的优秀表现。此外,也给出了一些Amazon CodeWhisperer的教程视频。
总之,Amazon CodeWhisperer是一种借助AI大模型创新性的工具,它有助于改善代码质量和软件开发效率,并帮助开发人员更快速,更安全地开发应用,大家快快用起来,也期待Amazon CodeWhisperer能够更新更多的功能。文章来源地址https://www.toymoban.com/news/detail-716221.html

到了这里,关于全方位深度测评AI代码助手Amazon CodeWhisperer的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【五、深入浅出GDB调试器】如何修复程序bug或优化代码:gdb调试器的来龙去脉与debug全方位实战详解

    GDB全称GNU symbolic debugger,它是诞生于GNU开源组织的(同时诞生的还有 GCC、Emacs 等)UNIX及UNIX-like下的调试工具,是Linux下最常用的程序调试器,GDB 支持调试多种编程语言编写的程序,包括C、C++、Go、Objective-C、OpenCL、Ada 等。但是在实际应用中,GDB 更常用来调试C和C++程序。虽然

    2023年04月17日
    浏览(94)
  • Java——线程睡眠全方位解析

    在 Java 中,让线程休眠的方法有很多,这些方法大致可以分为两类,一类是设置时间,在一段时间后自动唤醒,而另一个类是提供了一对休眠和唤醒的方法,在线程休眠之后,可以在任意时间对线程进行唤醒。 线程睡眠的方法有以下 5 个: Thread.sleep TimeUnit wait Condition LockSu

    2024年02月04日
    浏览(55)
  • 精彩解读:短链接应用全方位探究

    1. 短链接的定义和原理 短链接是一种将长网址转换为短网址的服务,通过简化网址长度,方便用户分享和传播链接。短链接服务通过将长网址映射到短标识符的方式,实现对原始网址的压缩和简化。用户在访问短链接时,系统会将短链接还原为原始长网址,实现跳转到目标网

    2024年04月08日
    浏览(46)
  • kafka知识点全方位讲解

    Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。 Kafka最初是由LinkedIn开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。 Kafka是一个分布式消息队列:

    2023年04月25日
    浏览(42)
  • Android Jetpack组件的全方位分析

    Jetpack是一个用于简化Android应用程序开发的工具包,包含了一系列的组件和工具。Jetpack包含了很多组件,如LiveData、ViewModel、Room、Data Binding、Navigation等。 Jetpack组件是一种更高级别的抽象,它们可以提供更简洁、更易于使用的API。支持库是Jetpack组件的底层实现。 基本概念和

    2024年02月11日
    浏览(40)
  • ⛳前端进阶:SEO 全方位解决方案

    SEO 代表搜寻引擎最佳化/搜寻引擎优化(英文全名Search Engine Optimization,简称SEO),是指通过了解搜寻引擎的自然排名的算法逻辑,以提高目标网站在有关搜寻引擎内排名的方式。 网站的 SEO 至关重要,它可以让你的网站获得更好的排名和流量,从而提高网站知名度。对于一些盈

    2024年02月09日
    浏览(49)
  • SQL全方位攻略:3.SQL标准

    1.数据库介绍 2.SQL介绍 【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) 为了确保不同厂商数据库系统之间的兼容性和互操作性,用于控制SQL查询的行为和数据存储结构等方面的统一性,由国际组织或者国家标准化组织制定

    2024年02月05日
    浏览(45)
  • 全方位了解VR全景展示与制作

    引言: 虚拟现实(VR)技术正在以惊人的速度改变我们的生活方式和体验方式。其中,VR全景展示与制作作为虚拟现实的重要应用之一,为用户提供了身临其境的视听体验。  一、了解VR全景展示与制作 1.VR全景展示 VR全景展示是一种通过虚拟现实技术,将用户带入真实或虚构

    2024年02月13日
    浏览(37)
  • 如何对 Spark 进行全方位性能调优?

    日志收集 如果作业执行报错或者速度异常,通常需要查看 Spark 作业日志,Spark 日志通常是排错的唯一根据,更是作业调优的好帮手。查看日志的时候,需要注意的是 Spark 作业是一个分布式执行的过程,所以日志也是分布式的,联想到 Spark 的架构,Spark 的日志也分为两个级别

    2024年02月21日
    浏览(49)
  • 全方位对比 Postgres 和 MySQL(2023 版)

    根据 2023 年的 Stack Overflow 调研 (https://survey.stackoverflow.co/2023/) ,Postgres 已经取代 MySQL 成为最受敬仰和渴望 (the most admired, desired) 的数据库。     随着 Postgres 的发展势头愈发强劲,在 Postgres 和 MySQL 之间做选择变得更难了。   如果看安装数量,MySQL 可能仍是全球最大的开源数

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包