Amazon Q进阶指南|技巧二:快速上手代码开发

5437d8149aeb1b0f51633f095db05ee8.gif

Amazon Q Developer是亚马逊云科技推出的一款专为专业开发者设计的人工智能助手,旨在提升代码开发和管理的效率。其主要功能包括代码生成、调试、故障排除、安全漏洞扫描等,提供一站式的代码服务。

上篇文章分享了关于Amazon Q的入门配置技巧,本篇文章将以简单易懂的实际动手操作案例,展示如何具体使用Amazon Q

Hello World

 Amazon Q!

Amazon Q面板的显示和隐藏

VSCode

正常情况下,Amazon Q的面板可以用快捷键来打开和关闭,对于苹果电脑,按下Shift+Command+P快捷键,对于Windows电脑,按下Shift+Ctrl+P快捷键,如图所示。

ad7e1b351547a136c82bda672805704c.png

输入Amazon Q,找到Toggle Amazon Q,并执行,如果此时Amazon Q的面板并未显示,则此命令将令其显示出来,反之,将会隐藏Amazon Q的操作区。

b82d29c98b9d91fe4b31c4bfc4d423ce.png

IntelliJ IDEA

在IDEA的菜单里,如下图所示,选择View、Tool Windows、Amazon Q Chat。

aeaa06ec38c2a550a83a0412028a5440.png

即可在打开和关闭Amazon Q的面板之间,进行切换。

Amazon Q组件—Chat Window

Chat Window是红色方框显示的区域,是Amazon Q提供给开发者最主要的使用自然语言进行交互式开发的用户界面,如下图所示。

1aaac711ba6d2d557489688c8c6a1cd8.jpeg

它的使用方法非常简单,可以直接输入问题,或者开发需求,Amazon Q将像一个聊天机器人一样给予您回复,并根据开发者提出问题的不同,给出合理的解答,有且不限于代码片段等相关信息的提供,以下是几个简单的例子帮助您来感受它的用法。

编写一段代码

比如,可以输入“write a Bubble Sort in python”,Amazon Q将迅速为您编写一段冒泡排序程序,以及对该程序片段的说明来进行应答。

ca3d268a8ee18cf9bb6196ec1123ef40.png

如果开发者想采纳这段代码,可以点击Insert at cursor,便可以将代码完整地插入到当前IDE光标所在的位置。或者点击Copy,代码片段将会被拷贝到剪贴板便于开发者后续使用。

针对当前代码提问

可以试试“please show me the function call flow”,Amazon Q将以一个文字版本的调用关系图来应答,如下图所示。

0167d54c66c60a854e3e9b641114e659.png

对于理解比较复杂的、具有众多函数调用关系的程序文件,这个提问通常可以很大程度上帮助开发者去理解一段陌生的代码。

帮助理解代码

在Amazon Q里输入提示词“please help me understand”,Amazon Q将会给您一段代码的解释,如下图所示。

f70452411dbf7c2cebc60a63bf45b02c.png

无论代码简单还是复杂,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会弹出一个或者多个代码选择供开发者来选择。

7896aa20b926e48203129ab446a68af9.png

点击Next和Previous可以浏览备选代码片段,当开发者感觉某一个建议是满足要求的时候,按下Tab键即可将代码插入到光标处。

强大的深入预测能力

例如在一段js前端应用程序里,当之前的代码里有隐藏或显示某个控件组的代码逻辑存在,当后续编写代码的时候,Amazon Q将智能地推测开发者的意图,并提供推测出来的代码建议,如下图所示。

eddc20db6d2190169dbf1a8d2228b27b.png

其中灰色的部分是Amazon Q预测的代码,在前端应用中,这种控件的隐藏和显示是很琐碎的例行编码工作,Amazon Q会很“聪明“地感知并替您完成,大大节约开发者时间。

Amazon Q组件—Inline Chat

开发者可以在代码编辑器中直接启动聊天,描述需要解决的代码问题或请求特定操作,例如“优化这段代码”或“添加注释”。这种方式消除了在不同窗口之间切换的需要,使得工作流程更加流畅,它主要具有如下几个典型功能。

代码生成与修改

开发者可以选择一段代码并通过Inline Chat输入框来请求进一步地修改,Amazon Q将生成相应的代码变更,并以差异(diff)的形式对开发者进行展示。用户可以轻松查看建议,并选择接受或拒绝这些更改。

如以下示例,可以利用之前创建的冒泡排序的例子,先选中全部代码,如下图所示。

356b307efd1a722a0e7a8a68fe220b51.png

然后,按下Command+I(windows上为Ctrl+I),会弹出Amazon Q Inline Chat的输入框,并输入一个要求,如提示词“请改变冒泡排序为快速排序”,如下图所示。

f0b9f1e3548e6c036a486f47d1aa4749.png

然后点击Confirm,Amazon Q会生成代码变更,并在编辑器中,以diff代码的方式展现给开发者,红色表示变更前的老代码,绿色是变更后的版本。

93395c4d229158b3a02ef5e024d5e92f.png

开发者如果认为变更是满足要求的,则点击Accept接受变更,反之可以点击Reject取消变更。

错误识别与优化建议

该功能能够实时识别潜在的代码错误,并提供具体的优化建议,帮助开发者提高代码质量和执行效率。

下面假设故意改一个变量,造成执行错误,如下图所示。

9a56649ee5538b7b8594b9661e33105e.png

当开发者呼出Inline Chat功能,全选全部代码,将错误信息粘贴到输入框中,如下图所示。

ef39289e9dcdefdce3b8f54f7de4f31c.png

点击Confirm后,Amazon Q将给出修改建议,如下图所示。

7a0e42b2c306dfe5e0ca9a95e7794088.png

点击Accept后,改动后的代码将进行实际变更。

这只是最简单的一个例子,实际上,对于很复杂的运行时错误,Inline Chat功能都可以准确地给出修改建议。

文档自动生成

开发者可以请求为现有代码添加文档,Amazon Q将自动生成详细的注释和文档,提高代码的可读性和可维护性。

选中上述代码,呼出Inline Chat,输入“please doc it”,Amazon Q会为其生成完善的函数描述,和相关的代码注释,如下图所示。

82d925bc6b4e5b7b9d003d72df9983b5.png

写文档是众所周知的开发者的“麻烦事”,在Amazon Q文档能力的加持下,可以随时通过一句话,来新建,和修正代码的注释,省时省力。

Amazon Q Agents(/dev)

使用Amazon Q Developer Agents来进行软件开发(/dev),可以用更少的时间来自动化构建新功能。开发者用自然语言描述开发任务,Amazon Q会利用当前项目获取workspace的上下文信息,来创建和实现必要的代码,以下是一个使用示例。

在集成开发环境中,在Amazon Q里输入/dev并点击回车,Amazon Q会新增一个Tab页:“Q–Dev”。

385e1190616152b431a9bbe956b92311.png

可以在聊天输入框内输入开发需求,如以下输入示例。

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会按照指示来生成代码,并提供生成代码所需步骤的总结信息,这个过程,取决于代码的复杂度,可能会有几分钟的执行时间,如下图所示。

b82eb4c65946523bc69bfd710f9c0bb5.png

等待1-2分钟后,Amazon Q会给出代码修改建议,如下图所示。

e01f82bbe8fa0d11b4c4a3fa819655f6.png

用户可以在Code Suggestion里的文件变更列表里点击任何一个文件,Amazon Q会给予开发者一个diff的显示,呈现具体的修改。开发者可以对每个文件的变更,选择接受还是拒绝,也可以点击Accept all changes来接受Amazon Q的所有修改建议。

完整实例

为了更好地帮助开发者上手Amazon Q,以下是一项开发实例。

假设开发者有这样的一个需求:“编写一段python代码,实现把本地一个图片文件,以预签名(pre-signed)URL的形式,上传到Amazon S3桶。”

将这一简单需求分为以下几个部分。

探讨需求

使用Chat Window和Amazon Q交流探讨需求,得到一些整体性的建议,比如依赖条件等。以下是该示例的一组截图。

Amazon Q会首先给出一小段描述,甚至会在可能的情况下给出参考文档,如下图所示。

7e5183699b9f7b0165f328d3ba5f2e3f.png

在生成代码的同时,还会给出与之相关的信息,如支撑这段代码能够顺利运行的关键依赖包,应该如何安装,应该如何配置亚马逊云科技云密钥(多种方式),来访问亚马逊云科技云上的Amazon S3桶等资源的必要信息。

85ba311e329722049d9cfb14bc6ded84.png

以上Amazon Q提供的宏观和微观的信息,既可以帮助开发者做好准备,也可以给予实际的代码样例,直接进入编程调试。

搭建框架

使用Agents能力(/dev),迅速快捷地创建工程框架。

在Amazon Q的聊天窗口,输入/dev,键入回车,进入agent模式,让它从零创建一个CDK工程,用来创建一个运行这个示例程序所需要的Amazon S3桶。如下图所示。

b31ba09c3e26287e8b57df33c48827d9.png

由于是第一次执行,Amazon Q不知道在哪里创建,会要求开发者去选择代码路径。开发者通过点击Select files for context,可以选择具体的代码路径,对本例而言,选择一个空白的本地目录即可。

da0f9808f81d63626afcb9ce02d56320.png

选择了正确的代码路径之后,点击Retry,Amazon Q会开始工作,为开发者创建所需要的CDK代码,如下图所示。

e419a35b2d8fae2233693142517fe76b.png

箭头在所区域为Amazon Q提供的代码建议,可以看到Amazon Q将会改变5个文件,可以点击任意的一个文件,去查看具体的变更,本例展示了点击名为vpc_s3_stack.py的CDK代码,可以在左侧看到完整的源码(关于CDK,本文不做深入展开)。可以选择点击Accept all changes来接受全部变更,也可以单独点击某个文件旁边的勾或叉,去逐一接受或拒绝文件级别的变更,如下图所示。

6acbdc2adfacfedf2c0f49a42232cf50.png

另外,Amazon Q为项目创建了README.md。

d4aa3369165c02d9281dc686ef911007.png

Amazon Q不仅创建了完整的CDK代码,而且还包含了详细的说明。

生成上传图片到Amazon S3的代码

可以采用两种方式来创建代码。

  • 第一种方式:把第一步Chat Window里Amazon Q生成的代码,拷贝到当前的代码文件中。

  • 第二种方式:或者使用Inline Code功能,如下图书写注释,利用Amazon Q“注释即代码”功能,按下回车键,选择并创用按下TAB来生成代码。

1e2ffd676444cefa497d241489becb47.png

值得注意的是,作为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将展示代码重构的变更情况,如下图所示。

824e4263f54fb1ea95d30d85165ba958.png

就是如此简单,Amazon Q为开发者重构了代码,生成了一个名为S3Uploader的类,为开发者进一步完成实际开发任务,提供了有力的帮助。

至此基本完成了一个从得到需求、讨论需求、快速搭建云资源依赖、快速书写原型代码,以及代码重构的所有步骤。

总结

本文提供简单易懂、图文并茂的的实际代码用例,对Amazon Q Developer的基本使用进行了描述,并以一个相对完整的用户需求,在Amazon Q的辅助之下,从思考、到编码,到最终形成生产可用的代码的全过程进行了讲解。

本条技巧分享到此,后续将持续推出更多关于使用Amazon Q的实用技巧,敬请关注!

本篇作者

a8c223b9e4d29ade14c40799e2b2942b.png

Kelvin Guo

亚马逊云科技资深解决方案架构师。主要技术方向为MLOps、DevOps、容器、数据分析。拥有20多年软件开发、项目管理、敏捷思想落地、工程效能咨询和落地经验。

ec7368a0e49f259d145527b14bcf25b7.jpeg

王佩佳

亚马逊云科技解决方案架构师,负责亚马逊云科技云计算方案咨询和设计。同时致力于生成式AI应用方面的研究和推广,并通过可实施的解决方案,帮助客户取得业务价值。

诚邀您参与「云上探索实验室」,扫描下方二维码,立即体验Amazon Q Developer,开启您的极简开发之旅!

11d74b94fef2107166c990b96e4ea3ff.jpeg

6cea0eb61322962a07c2083f2be58fd1.png

b7e5ce588bc8fd5532aa1abdda161711.gif

星标不迷路,开发更极速!

关注后记得星标「亚马逊云开发者」

听说,点完下面4个按钮

就不会碰到bug了!

04d603d75aa1db6df945a61efbe973a1.gif

点击阅读原文查看博客!获得更详细内容!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值