亚马逊AWS官方博客
Amazon Q 从入门到精通 – 快速实战篇
![]() |
Amazon Q Developer 是亚马逊推出的一款专为专业开发人员设计的人工智能助手,旨在提升代码开发和管理的效率。其主要功能包括代码生成、调试、故障排除、安全漏洞扫描等,提供一站式的代码服务。
本文接下来将以简单易懂的实际动手操作案例,来展示 Amazon Q 的具体使用。
Hello World,Q!
Amazon Q 面板的显示和隐藏
- VSCode
正常情况下,AmazonQ 的面板可以用快捷键来打开和关闭,对于苹果电脑,按下 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”,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 智能体(/dev)
使用 Amazon Q Developer 智能体来进行软件开发(/dev),可以用更少的时间来自动化构建新功能。开发者用自然语言描述开发任务,Amazon Q 会利用当前项目获 workspace 的上下文信息,来创建和实现必要的代码。以下是一个使用示例。
在集成开发环境中,在 Amazon Q 里输入/dev 并回车,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 的形式,上传到 S3 桶。”
我们把这个简单的需求,分为几个部分。
1. 探讨需求
使用 Chat Window 和 Amazon Q 交流探讨需求,得到一些整体性的建议,比如依赖条件等。以下是该示例的一组截图。
Amazon Q 会首先给出一小段描述,甚至会在可能的情况下,给出参考文档,如下图所示。
![]() |
在生成代码的同时,还会给出与之相关的信息,如支撑这段代码能够顺利运行的关键依赖包,应该如何安装,应该如何配置亚马逊云密钥(多种方式),来访问亚马逊云上的 S3 桶等资源的必要信息。
![]() |
以上 Amazon Q 提供的宏观和微观的信息,既可以帮助开发者做好准备,也可以给予实际的代码样例,直接进入编程调试。
2. 搭建框架
使用智能体能力(/dev),迅速快捷地创建工程框架。
在 Amazon Q 的聊天窗口,输入/dev,键入回车,进入 agent 模式,让它从零创建一个 CDK 工程,用来创建一个运行这个示例程序所需要的 S3 桶。如下图所示。
![]() |
由于是第一次执行,Amazon Q 不知道在哪里创建,会要求开发者去选择代码路径。开发者通过点击 Select files for context,可以选择具体的代码路径,对本例来说,选择一个空白的本地目录即可。
![]() |
选择了正确的代码路径之后,点击 Retry,Amazon Q 会开始工作,为开发者创建创建所需要的 CDK 代码,如下图所示。
![]() |
在箭头所区域,为 Amazon Q 给予的 Code Suggestion,可以看到 Amazon Q 将会改变 5 个文件,可以点击任意的一个文件,去查看具体的变更,本例展示了点击名为 vpc_s3_stack.py 的 CDK 代码,可以在左侧看到完整的源码(关于 CDK,本文不做深入展开)。可以选择点击 Accept all changes 来接受全部变更,也可以单独点击某个文件旁边的勾/叉,去逐一接受/拒绝文件级别的变更。如下图所示。
![]() |
另外,我们还可以注意到,Amazon Q 为项目创建了 README.md。
![]() |
Amazon Q 不仅创建了完整的 CDK 代码,而且还包含了详细的说明。
3. 生成上传图片到 S3 的代码(2 种方式)
可以采用两种方式来创建代码。
- 第一种方式:把第一步 Chat Window 里 Amazon Q 生成的代码,拷贝到当前的代码文件中。
- 第二种方式:或者使用 Inline Code 功能,如下图,书写注释,利用 Amazon Q“注释即代码”的能力,按下回车键,选择并创用按下 TAB 来生成代码。
值得注意是,作为 Amazon Q 有别于其他 AI 代码生成系统的一大特点是,Amazon Q 会明确标注代码的版权信息,在某些严谨的企业级开发当中,这个功能是及其重要的。
4. 使用 Inline Chat,进一步优化代。
到此,开发者使用 Amazon Q 得到了基本的功能,并已经实际运行和测试通过之后,因为实际上这还只是一段“玩具”代码,通常距离达到生产级别的代码要求还有些距离,需要进行一定的重构,比如,这个 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 的辅助之下,从思考、到编码,到最终形成生产可用的代码的全过程,进行了讲解。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。