AI 帮我写代码——Amazon CodeWhisperer 初体验
文章作者:游凯超
人工智能的突破和变革正在深刻地改变我们的生活。从智能手机到自动驾驶汽车,AI 的应用已经深入到我们生活的方方面面。而在编程领域,AI 的崭新尝试正在开启一场革命。Amazon CodeWhisperer,作为亚马逊云科技的一款 AI 编程工具,正是这场革命的一部分。
亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!
作为一名接受过计算机科班训练的程序员,我曾坚信编程是一种需要专业技能和深度思考的任务,不可能被 AI 替代。然而,当我真正接触到 Amazon CodeWhisperer 时,我的观念开始发生转变。这款工具能够自动生成代码,以提高编程效率和代码质量。其惊人的效果让我不得不承认,AI 的快速发展已经开始在编程领域中取得一定的突破,甚至在某些方面超越了人类的能力。
CodeWhisperer 是一款由亚马逊云科技推出的 AI 代码生成器。这款工具的出现是为了帮助开发者更快、更安全地构建应用程序,它可以根据开发者的注释和现有代码实时生成从代码片段到全函数的代码建议,从而避免耗时的编程过程(俗称“体力活”),加速使用不熟悉的 API(尤其是亚马逊云服务相关的 API)进行开发。
CodeWhisperer 的主要功能和特点包括:
-
代码生成:CodeWhisperer 经过数十亿行代码的训练,可以根据注释和现有代码实时生成从代码片段到全函数的代码建议。
-
多语言和 IDE 支持: CodeWhisperer 支持15种编程语言,包括 Python、Java 和 JavaScript,以及各种集成式开发环境(IDE),比如 VS Code、IntelliJ IDEA、Amazon Cloud9、Amazon Lambda 控制台、JupyterLab 和 Amazon SageMaker Studio。
-
参考跟踪:CodeWhisperer 可以标记或筛选类似于开源训练数据的代码建议,获取相关开源项目的存储库 URL 和许可证,以便开发者可以更轻松地查看它们并检查许可证兼容性。
-
安全扫描:CodeWhisperer 可以扫描代码以检测难以发现的漏洞,并获取代码建议以立即修复这些漏洞。它遵循跟踪安全漏洞的最佳实践,例如开放全球应用程序安全项目 (OWASP) 概述的漏洞,或者不符合加密库最佳实践及其他类似安全最佳实践的漏洞。
据亚马逊的一项生产力挑战赛显示,使用 CodeWhisperer 的参与者成功完成任务的可能性要比未使用 CodeWhisperer 的参与者高27%,平均完成任务的速度快57%。
使用 CodeWhisperer 的方法很简单,也很直观。以我常用的 VS Code 环境为例:
1. 搜索 CodeWhisperer,注册账号
2. 在 VS Code 里面安装 Amazon Toolkit 插件,侧边栏就会出现一个亚马逊云科技的图标
3. 点进亚马逊云科技图标之后选择“Connect to ......”,就会弹出一个对话框,框里有一串验证码,复制之后点击“Copy Code and Proceed”,导向登录页面,按照要求创建 Builder ID,然后输入刚才复制的验证码,就可以了。
4. 点击 CodeWhisperer 的 Start,就可以使用了。
具体的每一步流程可以参看下面这张图:

CodeWhisperer 有两种使用方式:Auto-Suggestions 模式(程序自动判断何时生成代码),以及手动模式(MacOS 系统按下快捷键 Option+C、Windows系统按下快捷键 Alt+C,按下快捷键之后在光标处生成代码)。我个人喜欢第二种模式,它能给我更强的掌控感:我能明确地知道我在使用一个工具。而第一种模式,由于无法控制生成代码的时机,我经常在写注释和文档期间停下来整理思路的时候,就看到了一大段代码提示,让我感觉像是在考试的时候被监考老师盯着,令人心虚,不敢停下思考……(对,说的就是你,GitHub Copilot,什么时候能够增加手动模式!)
来看一个具体的例子:如果我想在 Python 里写一个快速排序算法,只需要写好文档说明,按下 Option+C 快捷键,就可以看到 CodeWhisperer 的代码建议(高亮的代码是我写的注释文档,灰色部分的代码是自动生成的建议代码)。CodeWhisperer 会生成三份代码建议,按下左(←)右(→)方向键可以在三份代码建议里面选择,按下 Tab 键采纳建议。

这段生成的代码确实是我想要的,但还不完整。所以我在采纳建议之后再次按下 Option+C 快捷键,生成剩余部分的代码:

这样,一个完整的快速排序算法就写完了。在这个过程中,我只负责写函数文档,相当于化身一个产品经理,让 CodeWhisperer 为我写出满意的代码,体验非常棒。当然,这个版本的快速排序算法还存在很多可以改进的地方。但是 CodeWhisperer 仅仅根据我这些注释就写出了代码,这效果可谓是非常惊艳了。
由于我的日常学习科研主要涉及一些机器学习研究相关的代码,不涉及安全相关的问题,所以我没有尝试参考跟踪和安全扫描这两项功能。感兴趣的读者可以自行尝试,CodeWhisperer 是免费使用的,也很容易上手。
在对 CodeWhisperer 这款神奇工具有了一定了解之后,我们有必要将目光转向一个或许中国人听说较少、但却在全世界影响力深远的科技巨头——亚马逊云科技。它是全球份额排名第一的云服务提供商,我们生活中许多无法忽视的科技突破,无论是崭新的应用还是创新的理念,背后都离不开亚马逊云服务的支持。
近期,类似ChatGPT的大语言模型在科技界引发了巨大的关注,它们通过模拟人类语言的复杂模式,展现了惊人的智能。这些模型的训练,需要大量的数据和庞大的计算能力,其中很多模型就是在亚马逊云服务的平台上训练的。可以说,亚马逊云服务如同一只无形的巨手,默默推动着人工智能技术的进步。
如果你也对这股AI浪潮背后的力量感到好奇,如果你也想要探索科技的未知领域,那么,欢迎来参加2023年6月27日-28日在上海世博中心举办的亚马逊云科技中国峰会。在这次峰会上,亚马逊云科技将围绕可靠的技术与服务,携手众多业内领先技术践行者,特别呈现创新技术应用、明星讲师团实力助考、开发者社群交流等多样化内容。这将是一个为来自全球不同行业、拥有不同技术水平的用户,提供共话交流、共谋合作、共同探索的机遇的大会。此外,峰会将涵盖多个热点主题,包括云计算年度热点话题盘点、数字化转型创新、行业转型之道等。在这里,无论你是科技领域的专家,还是对科技有着浓厚兴趣的学生,都可以深入了解亚马逊云服务的魅力,亲身感受云科技如何改变世界。峰会还将提供开发者专属板块,以及面向企业高管的全面升级的定制化参会体验。
想要参加峰会的朋友,微信搜索【亚马逊云科技】小程序,在首页就可以看到亚马逊云科技中国峰会的报名通道了。欢迎大家来共同探索 AI 在编程领域的未来可能性,体验 CodeWhisperer 的强大功能,借助亚马逊云科技中国峰会的机会,在亚马逊云服务这个创新的平台上,共享知识,共创未来。
文章来源:AI 帮我写代码——Amazon CodeWhisperer 初体验
相关文章:
AI 帮我写代码——Amazon CodeWhisperer 初体验
文章作者:游凯超 人工智能的突破和变革正在深刻地改变我们的生活。从智能手机到自动驾驶汽车,AI 的应用已经深入到我们生活的方方面面。而在编程领域,AI 的崭新尝试正在开启一场革命。Amazon CodeWhisperer,作为亚马逊云科技的一款…...
实训笔记9.1
实训笔记9.1 9.1笔记一、项目开发流程一共分为七个阶段1.1 数据产生阶段1.2 数据采集存储阶段1.3 数据清洗预处理阶段1.4 数据统计分析阶段1.5 数据迁移导出阶段1.6 数据可视化阶段 二、项目的数据产生阶段三、项目的数据采集存储阶段四、项目数据清洗预处理的实现4.1 清洗预处…...
汽车SOA架构
文章目录 一、汽车SOA架构的基本概念二、汽车SOA架构的优势三、从设计、开发和测试方面介绍汽车SOA架构四、SOA技术在汽车行业的应用 汽车SOA架构是指汽车软件架构采用面向服务的架构(Service-Oriented Architecture,简称SOA)的设计模式。SOA…...
L1-017 到底有多二 C++解法
题目 一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数…...
motionface respeak视频一键对口型
语音驱动视频唇部动作和视频对口型是两项不同的技术,但是它们都涉及到将语音转化为视觉效果。 语音驱动视频唇部动作(语音唇同步): 语音驱动视频唇部动作是一种人工智能技术,它可以将语音转化为实时视频唇部动作。这…...
LeetCode——顺时针打印矩形
题目地址 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目解析 按照顺时针一次遍历,遍历外外层遍历里层。 代码如下 class Solution { public:vector<int> spiralOrder(vector<vector<int>>& matrix) {if(…...
C语言课程作业
本科期间c语言课程作业代码整理: Josephus链表实现 Josephus 层序遍历树 二叉树的恢复 哈夫曼树 链表的合并 中缀表达式 链接:https://pan.baidu.com/s/1Q7d-LONauNLi7nJS_h0jtw?pwdswit 提取码:swit...
Yolov8魔术师:卷积变体大作战,涨点创新对比实验,提供CVPR2023、ICCV2023等改进方案
💡💡💡本文独家改进:提供各种卷积变体DCNV3、DCNV2、ODConv、SCConv、PConv、DynamicSnakeConvolution、DAT,引入CVPR2023、ICCV2023等改进方案,为Yolov8创新保驾护航,提供各种科研对比实验 &am…...
基于小波神经网络的空气质量预测,基于小波神经网络的PM2.5预测,基于ANN的PM2.5预测
目标 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 小波神经网络(以小波基为传递函数的BP神经网络) 代码链接:基于小波神经网络的PM2.5预测,ann神经网络pm2.5预测资源-CSDN文库 https:/…...
Vue / Vue CLI / Vue Router / Vuex / Element UI
Vue Vue是一种流行的JavaScript前端框架,用于构建用户界面 它被设计为易于学习和使用,并且具有响应式的数据绑定和组件化的架构 Vue具有简洁的语法和灵活的功能,可以帮助开发人员构建高效、可扩展的Web应用程序 它也有一个大型的生态系统和活…...
Lesson4-2:OpenCV图像特征提取与描述---Harris和Shi-Tomas算法
学习目标 理解Harris和Shi-Tomasi算法的原理能够利用Harris和Shi-Tomasi进行角点检测 1 Harris角点检测 1.1 原理 H a r r i s Harris Harris角点检测的思想是通过图像的局部的小窗口观察图像,角点的特征是窗口沿任意方向移动都会导致图像灰度的明显变化ÿ…...
华为云云耀云服务器L实例评测|部署spring项目端口开放问题的解决 服务器项目环境搭建MySQL,Redis,Minio...指南
目录 引出书接上回,部署spring项目,端口访问失败最后排查结果反馈 尝试的几种解决方案【未成功】1.指定tomcat启动ipv4端口2.添加开放端口规则保存规则防火墙相关命令记录 最终成功解决【成功!】用firewall成功了问题来了,如果这里…...
MySQL内外连接
MySQL内外链接 内连接显示SMITH的名字和部门名称 外连接左外连接查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来 右外连接把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来列出部门名称…...
sql:SQL优化知识点记录(十四)
(1)索引失效行锁变表锁 建立2个索引 索引是失效后,系统性能会变查,如果涉及到锁的话,行锁会变表锁 有一个问题,当session1用b字段做查询条件因为是varchar类型,需要加双引号,但是没…...
什么是IIFE(Immediately Invoked Function Expression)?它有什么作用?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐IIFE 的基本语法⭐IIFE 的主要作用⭐如何使用 IIFE 来创建私有变量和模块封装⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅…...
Codeforces Round 866 (Div 2)(A - D)
Codeforces Round 866 (Div. 2)(A - D) Dashboard - Codeforces Round 866 (Div. 2) - Codeforces A. Yura’s New Name(思维) 思路:枚举每个下划线 , 计算其前后需要补齐的 ‘^’ 个数 , 注意特判样例四的特殊情况…...
QTday3(QT实现文件对话框保存操作、实现键盘触发事件【WASD控制小球的移动】)
1.实现文件对话框保存操作 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }void Widget::on_fontBtn_clicked() {//调用QFo…...
WPF基础入门-Class8-资源基础
WPF基础入门 Class8-资源基础 前言:方便各种资源的集中管理和动态效果 静态引用:初始化的时候确定样式,后续不发生改变 动态引用:样式随着引用的内容一起改变 1、新建资源字典.xaml,创建一个边框颜色资源MyBrush和一…...
Axure RP PC电商平台Web端交互原型模板
Axure RP PC电商平台Web端交互原型模板。原型图内容齐全,包含了用户中心、会员中心、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等完整的电商体系功能架构和业务流程。 在设计尺寸方面,本套模板按照主流的…...
Ubuntu目录和linux内核文件用途
一,目录: 1./:根目录,是整个文件系统的起点 2./bin:binary 二进制可执行文件目录,包含用于系统启动和运行的基本命令 3./boot: 启动加载器目录,包含用于系统启动的内核和引导程序文件。 4./dev: device 设备文件目录&a…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
