Amazon Q Developer是亚马逊云科技推出的一款专为专业开发者设计的人工智能助手,旨在提升代码开发和管理的效率。其主要功能包括代码生成、调试、故障排除、安全漏洞扫描等,提供一站式的代码服务。
上篇文章分享了关于Amazon Q的入门配置技巧,本篇文章将以简单易懂的实际动手操作案例,展示如何具体使用Amazon Q。
Hello World
Amazon Q!
Amazon Q面板的显示和隐藏
VSCode
正常情况下,Amazon Q的面板可以用快捷键来打开和关闭,对于苹果电脑,按下Shift+Command+P快捷键,对于Windows电脑,按下Shift+Ctrl+P快捷键,如图所示。
输入Amazon Q,找到Toggle Amazon Q,并执行,如果此时Amazon Q的面板并未显示,则此命令将令其显示出来,反之,将会隐藏Amazon Q的操作区。
IntelliJ IDEA
在IDEA的菜单里,如下图所示,选择View、Tool Windows、Amazon Q Chat。
即可在打开和关闭Amazon Q的面板之间,进行切换。
Amazon Q组件—Chat Window
Chat Window是红色方框显示的区域,是Amazon Q提供给开发者最主要的使用自然语言进行交互式开发的用户界面,如下图所示。
它的使用方法非常简单,可以直接输入问题,或者开发需求,Amazon Q将像一个聊天机器人一样给予您回复,并根据开发者提出问题的不同,给出合理的解答,有且不限于代码片段等相关信息的提供,以下是几个简单的例子帮助您来感受它的用法。
编写一段代码
比如,可以输入“write a Bubble Sort in python”,Amazon Q将迅速为您编写一段冒泡排序程序,以及对该程序片段的说明来进行应答。
如果开发者想采纳这段代码,可以点击Insert at cursor,便可以将代码完整地插入到当前IDE光标所在的位置。或者点击Copy,代码片段将会被拷贝到剪贴板便于开发者后续使用。
针对当前代码提问
可以试试“please show me the function call flow”,Amazon Q将以一个文字版本的调用关系图来应答,如下图所示。
对于理解比较复杂的、具有众多函数调用关系的程序文件,这个提问通常可以很大程度上帮助开发者去理解一段陌生的代码。
帮助理解代码
在Amazon Q里输入提示词“please help me understand”,Amazon Q将会给您一段代码的解释,如下图所示。
无论代码简单还是复杂,Amazon Q都会给出十分详细的分析,便于用户对代码进行详尽地理解。
Amazon Q组件—Inline Code
与刚才的Chat Window不同的是,当开发者正在编辑器中真正编写代码的时候,Amazon Q可以根据上下文实时提供代码补全和建议,这个功能被称为Inline Code。
与传统IDE,如VSCode或者IntelliJ IDEA默认提供的代码补全能力不同,Amazon Q利用人工智能能够更好地去预测,完成代码补全和预测工作。
注释即代码—快速创建代码片段
以一个python代码为例,如果输入# write bubble sort,则Amazon Q Inline Code会弹出一个或者多个代码选择供开发者来选择。
点击Next和Previous可以浏览备选代码片段,当开发者感觉某一个建议是满足要求的时候,按下Tab键即可将代码插入到光标处。
强大的深入预测能力
例如在一段js前端应用程序里,当之前的代码里有隐藏或显示某个控件组的代码逻辑存在,当后续编写代码的时候,Amazon Q将智能地推测开发者的意图,并提供推测出来的代码建议,如下图所示。
其中灰色的部分是Amazon Q预测的代码,在前端应用中,这种控件的隐藏和显示是很琐碎的例行编码工作,Amazon Q会很“聪明“地感知并替您完成,大大节约开发者时间。
Amazon Q组件—Inline Chat
开发者可以在代码编辑器中直接启动聊天,描述需要解决的代码问题或请求特定操作,例如“优化这段代码”或“添加注释”。这种方式消除了在不同窗口之间切换的需要,使得工作流程更加流畅,它主要具有如下几个典型功能。
代码生成与修改
开发者可以选择一段代码并通过Inline Chat输入框来请求进一步地修改,Amazon Q将生成相应的代码变更,并以差异(diff)的形式对开发者进行展示。用户可以轻松查看建议,并选择接受或拒绝这些更改。
如以下示例,可以利用之前创建的冒泡排序的例子,先选中全部代码,如下图所示。
然后,按下Command+I(windows上为Ctrl+I),会弹出Amazon Q Inline Chat的输入框,并输入一个要求,如提示词“请改变冒泡排序为快速排序”,如下图所示。
然后点击Confirm,Amazon Q会生成代码变更,并在编辑器中,以diff代码的方式展现给开发者,红色表示变更前的老代码,绿色是变更后的版本。
开发者如果认为变更是满足要求的,则点击Accept接受变更,反之可以点击Reject取消变更。
错误识别与优化建议
该功能能够实时识别潜在的代码错误,并提供具体的优化建议,帮助开发者提高代码质量和执行效率。
下面假设故意改一个变量,造成执行错误,如下图所示。
当开发者呼出Inline Chat功能,全选全部代码,将错误信息粘贴到输入框中,如下图所示。
点击Confirm后,Amazon Q将给出修改建议,如下图所示。
点击Accept后,改动后的代码将进行实际变更。
这只是最简单的一个例子,实际上,对于很复杂的运行时错误,Inline Chat功能都可以准确地给出修改建议。
文档自动生成
开发者可以请求为现有代码添加文档,Amazon Q将自动生成详细的注释和文档,提高代码的可读性和可维护性。
选中上述代码,呼出Inline Chat,输入“please doc it”,Amazon Q会为其生成完善的函数描述,和相关的代码注释,如下图所示。
写文档是众所周知的开发者的“麻烦事”,在Amazon Q文档能力的加持下,可以随时通过一句话,来新建,和修正代码的注释,省时省力。
Amazon Q Agents(/dev)
使用Amazon Q Developer Agents来进行软件开发(/dev),可以用更少的时间来自动化构建新功能。开发者用自然语言描述开发任务,Amazon Q会利用当前项目获取workspace的上下文信息,来创建和实现必要的代码,以下是一个使用示例。
在集成开发环境中,在Amazon Q里输入/dev并点击回车,Amazon Q会新增一个Tab页:“Q–Dev”。
可以在聊天输入框内输入开发需求,如以下输入示例。
Create a new REST API endpoint /api/authenticate to handle user authentication. This endpoint should accept POST requests with user credentials and return a JWT token upon successful authentication. Additionally, update the user management system to integrate with the new authentication endpoint and enforce authentication for relevant API endpoints.
按下回车键后,Amazon Q会按照指示来生成代码,并提供生成代码所需步骤的总结信息,这个过程,取决于代码的复杂度,可能会有几分钟的执行时间,如下图所示。
等待1-2分钟后,Amazon Q会给出代码修改建议,如下图所示。
用户可以在Code Suggestion里的文件变更列表里点击任何一个文件,Amazon Q会给予开发者一个diff的显示,呈现具体的修改。开发者可以对每个文件的变更,选择接受还是拒绝,也可以点击Accept all changes来接受Amazon Q的所有修改建议。
完整实例
为了更好地帮助开发者上手Amazon Q,以下是一项开发实例。
假设开发者有这样的一个需求:“编写一段python代码,实现把本地一个图片文件,以预签名(pre-signed)URL的形式,上传到Amazon S3桶。”
将这一简单需求分为以下几个部分。
探讨需求
使用Chat Window和Amazon Q交流探讨需求,得到一些整体性的建议,比如依赖条件等。以下是该示例的一组截图。
Amazon Q会首先给出一小段描述,甚至会在可能的情况下给出参考文档,如下图所示。
在生成代码的同时,还会给出与之相关的信息,如支撑这段代码能够顺利运行的关键依赖包,应该如何安装,应该如何配置亚马逊云科技云密钥(多种方式),来访问亚马逊云科技云上的Amazon S3桶等资源的必要信息。
以上Amazon Q提供的宏观和微观的信息,既可以帮助开发者做好准备,也可以给予实际的代码样例,直接进入编程调试。
搭建框架
使用Agents能力(/dev),迅速快捷地创建工程框架。
在Amazon Q的聊天窗口,输入/dev,键入回车,进入agent模式,让它从零创建一个CDK工程,用来创建一个运行这个示例程序所需要的Amazon S3桶。如下图所示。
由于是第一次执行,Amazon Q不知道在哪里创建,会要求开发者去选择代码路径。开发者通过点击Select files for context,可以选择具体的代码路径,对本例而言,选择一个空白的本地目录即可。
选择了正确的代码路径之后,点击Retry,Amazon Q会开始工作,为开发者创建所需要的CDK代码,如下图所示。
箭头在所区域为Amazon Q提供的代码建议,可以看到Amazon Q将会改变5个文件,可以点击任意的一个文件,去查看具体的变更,本例展示了点击名为vpc_s3_stack.py的CDK代码,可以在左侧看到完整的源码(关于CDK,本文不做深入展开)。可以选择点击Accept all changes来接受全部变更,也可以单独点击某个文件旁边的勾或叉,去逐一接受或拒绝文件级别的变更,如下图所示。
另外,Amazon Q为项目创建了README.md。
Amazon Q不仅创建了完整的CDK代码,而且还包含了详细的说明。
生成上传图片到Amazon S3的代码
可以采用两种方式来创建代码。
第一种方式:把第一步Chat Window里Amazon Q生成的代码,拷贝到当前的代码文件中。
第二种方式:或者使用Inline Code功能,如下图书写注释,利用Amazon Q“注释即代码”功能,按下回车键,选择并创用按下TAB来生成代码。
值得注意的是,作为Amazon Q有别于其他AI代码生成系统的一大特点是,Amazon Q会明确标注代码的版权信息,在某些严谨的企业级开发当中,这个功能是及其重要的。
使用Inline Chat进一步优化代码
到此,开发者使用Amazon Q得到了基本的功能,并已经实际运行和通过测试。由于实际上这还只是一段“玩具”代码,离达到生产级别的代码要求通常还有些距离,需要进行一定的重构,比如Amazon S3上传功能,需要包装为一个python的类,便于进一步使用。为了实现这个需求,Inline Chat可以成为首选,具体的操作如下。
首先,开发者全选全部代码,按下Command+I,或者Ctrl+I(Windows)快捷键,呼出Inline Chat窗口,写明重构的描述:“refactor to a class base code to be re-used more easily”,然后点击Confirm,Amazon Q将展示代码重构的变更情况,如下图所示。
就是如此简单,Amazon Q为开发者重构了代码,生成了一个名为S3Uploader的类,为开发者进一步完成实际开发任务,提供了有力的帮助。
至此基本完成了一个从得到需求、讨论需求、快速搭建云资源依赖、快速书写原型代码,以及代码重构的所有步骤。
总结
本文提供简单易懂、图文并茂的的实际代码用例,对Amazon Q Developer的基本使用进行了描述,并以一个相对完整的用户需求,在Amazon Q的辅助之下,从思考、到编码,到最终形成生产可用的代码的全过程进行了讲解。
本条技巧分享到此,后续将持续推出更多关于使用Amazon Q的实用技巧,敬请关注!
本篇作者
Kelvin Guo
亚马逊云科技资深解决方案架构师。主要技术方向为MLOps、DevOps、容器、数据分析。拥有20多年软件开发、项目管理、敏捷思想落地、工程效能咨询和落地经验。
王佩佳
亚马逊云科技解决方案架构师,负责亚马逊云科技云计算方案咨询和设计。同时致力于生成式AI应用方面的研究和推广,并通过可实施的解决方案,帮助客户取得业务价值。
诚邀您参与「云上探索实验室」,扫描下方二维码,立即体验Amazon Q Developer,开启您的极简开发之旅!
星标不迷路,开发更极速!
关注后记得星标「亚马逊云开发者」
听说,点完下面4个按钮
就不会碰到bug了!
点击阅读原文查看博客!获得更详细内容!