
Amazon Q Developer 是亚马逊推出的一款专为专业开发人员设计的人工智能助手,旨在提升代码开发和管理的效率。其主要功能包括代码生成、调试、故障排除、安全漏洞扫描等,提供一站式的代码服务。
同时,我们推出了 Amazon Q Developer 在 IDE 中的定制功能(Customization),支持在行内代码补全以及聊天窗口中的定制。现在,您可以在 IDE 代码编辑器中定制 Amazon Q Developer,从私有代码仓库中生成特定的代码推荐,这使得代码建议更加精准、个性化。
对于企业客户来说,通过这些定制功能,Amazon Q Developer 可以根据您团队的内部库、专有算法技术和企业代码风格来提供支持,从而协助软件开发。这不仅可以提高开发效率,还能确保开发过程符合企业的技术要求和编码标准。企业用户可以依据团队的具体需求和偏好配置这些定制选项,以此优化开发流程,加速项目进度,并提高最终产品的质量和性能。这些功能的引入,为企业提供了一个强大的工具,来支持软件开发任务和增强开发团队的协作效率。
Amazon Q Developer 的定制功能严格遵守亚马逊的数据隐私和安全标准。您共享给 Amazon Q Developer 的代码库只限于您的组织使用,不会用于培训我们的基础模型。定制部署后,推理端点将专属于您组织内的开发者,确保您的代码推荐不会在其他公司的开发者 IDE 中显示。您可以自行决定哪些开发者能访问特定的定制,并通过监控相关指标来评估所部署定制的效果。此外,Amazon Q Developer 通过提供使用 Amazon Key Management Service(Amazon KMS)中客户管理的密钥加密您的定制数据的选项,帮助确保您代码的安全。这些定制数据将在定制任务完成后被删除。
本文将通过简单的案例操作来为您展示 Amazon Q Customization 的具体使用方式以及能力。
前提要求
为完成本文的动手实践操作,您需要满足以下要求:
- 配置 Amazon Q Developer 专业版,具体步骤可参考博客 Amazon Q 从入门到精通 -- 入门配置篇。
- 按照以下要求准备您的数据。本文采用的数据来自于 github aws sample code 的 aws-spring-boot-optimization 仓库。--- 您的数据源必须包含至少 2 MB、最多 20 GB 的源代码文件,且必须来自支持的编程语言。数据源中任何超过 10 MB 的文件都将被忽略。--- 数据源中的文件数量没有限制,但您必须至少包括每种语言 10 个文件,以支持您的定制需求。--- 文件名和各个目录名不得超过 255 个字符。(累积起来可以超过 255 个字符。)超出这些限制将导致定制创建失败。--- 在 Amazon S3 数据源中,所有源代码必须放置在某个目录内,不能放在根目录。根级别的任何文件都将被忽略。
整理您的代码库
为了优化 Amazon Q Developer 的性能,我们建议尽量提高您代码库的代码质量。根据最佳实践,我们推荐采用以下几种方法:使用描述性强的函数名,编写简洁明了且能准确传达关键信息的代码注释,添加使用示例,以及包含 README 文件等。通过这些方式提升代码质量,可以让 Amazon Q Developer 生成定制代码的表现更上一层楼。
Amazon Q Developer 的定制功能接受不同的数据源,其中包括 Github、GitLab、Bitbucket 以及 S3。如果您的数据源位于 Github、GitLab 或 Bitbucket 中,那么您可以参考这个教程,通过 AWS CodeConnections 连接。本文将使用 S3 作为数据源。创建 S3 桶,将准备就绪的数据存入 S3 桶中。需要注意的是,在 Amazon S3 数据源中,所有源代码必须放置在一个路径中,而不能放在根级别。根级别的任何文件都将被忽略。如下图所示,所有代码文件都被放置 customerService 这个路径下。

配置定制功能
开始前请确保您已经配置并订阅了 Amazon Q Developer 专业版 (Pro License)。
- 接着,在您的亚马逊云控制台中搜索"Amazon Q Developer",点击选择 Amazon Q Developer (Including Amazon CodeWhisperer)。

- 在右侧导航栏中,点击"Customization", 点击"Create Customization"来创建新的定制任务。

- 然后根据您的场景和需求输入 Customization name 以及 Description。本例为 customerService。

- 在 Connection to source provider 部分,我们选择"Amazon S3"作为数据提供来源(Source provider),并输入 S3 桶或 S3 文件夹的 URI。

- 您可以通过开启日志来了解并定位 Amazon Q Developer Customization 的问题,日志根据您的选择,将被发送至 Amazon CloudWatch Logs,Amazon S3 桶,或 Amazon Data Firehose。

- 本文这里选择使用 CloudWatch 作为日志文件的储存地点。有关日志文件中的 Error Message,更多信息请参阅链接。

- 所有选项都填写完毕后,点击右下角的"Create Customization",Amazon Q Developer 将会开始创建您的定制功能。根据您提供的数据量大小,可能会需要几个小时的时间来完成。您可以通过查看 Status 是否为"Created"来判断创建成功与否。

- 如果失败,您可以通过 Error detail 查看创建失败的原因,并在修改后,通过点击右上角"Actions",选择"update"来重新开始创建。

- 可能会导致创建失败的原因有以下 4 种,可以根据情况进行修改。
--- 您可能会遇到以下错误:Total size of the provided repositories exceeds the maximum allowed size of number for a customization. 在这种情况下,请从您的数据源中移除一个仓库后重试。
--- 您可能会收到错误:Insufficient data to create a customization. Add more files from supported languages and retry。为了使用特定语言编写的代码来创建定制,您的数据源中必须至少包含该语言的 10 个代码文件。您的数据源至少需要包含 2 MB 的代码,建议接近 20 MB,最多不超过 20 GB 的支持语言源代码文件。即使某些文件使用了相关语言,也可能不计入这 2 MB。例如,重复文件和格式不支持的文件将不被计算。如果您收到此错误,添加更多包含您希望定制的编程语言的文件后重试。
--- 您可能会收到错误:Encountered an issue when retrieving some of the selected repositories from CodeConnections. Check the customization's log deliveries for details。如果您遇到此错误,请尝试使用您的连接可以访问的有效仓库再次创建或更新定制。
当定制准备好后,通过点击"Activate",我们手动的在需要时激活该定制功能。这个过程会需要一些时间。

- 同时我们可以在页面上看到右侧部分有一个评估分数,它帮助衡量在根据我的代码库中的代码预测和提供代码建议时的准确性。它提供的分数分为三个等级:1) 非常好,分数在 7 到 10 之间;2) 一般,分数在 4 到 7 之间;3) 较差,分数在 0 到 4 之间。可以看到本文中提供的代码库只得到了 3 分的评分,因为本文提供的代码只是些质量较差的实例代码。我们可以通过使用使用描述性强的函数名,编写简洁明了且能准确传达关键信息的代码注释,添加使用示例,包含 README 文件,以及加入更多的数据等方式来提升这个分数。

- Amazon Q Developer Customization 也提供了版本控制的功能。在此页面中,我们可以看到"Versions"这一项。我们可通过点击右上角的"Actions",选择"Create new version"来创建新的版本。也可以点击"Deactivate"来撤销一个版本的激活。

- 激活定制功能之后,我们可以看到版本的 Status 被更新为"Activated"。

- 在正式开始使用之前我们可以通过选择"Add users and groups"来授予选定的团队成员使用定制功能。这个功能可以帮助企业用户更好的管理访问权限并保护您的数据安全。

- 我们点击 Add Users,并选择一个订阅过 Q Develop 专业版的 User,给予这个用户使用定制功能的权限。

- 我们也可以换到 Groups 部分来添加一个用户组。

在 IDE 中使用定制功能
打开您熟悉的 IDE,本文将使用 VScode 作为演示。在 IDE 中使用创建好的 User 来登录 Amazon Q 之后,正常情况下,AmazonQ 的面板可以用快捷键来打开和关闭,对于苹果电脑,按下 Shift + Command + P 快捷键,对于 Windows 电脑,按下 Shift + Ctrl + P 快捷键。
- 找到"Amazon Q: Select Customization"并点击。

- 选择刚刚创建好的 customerService 这个 Customization。

- 通过 Amazon Q Developer Inline chat 的功能来生成复合我们代码库风格的代码,从私有代码仓库中生成特定的代码推荐。下图中,我们输入注释,即对 Amazon Q 的指令,为"use the customerService class and write a method to load customer info and delete specific customer by ids"。图中的代码都由 Amazon Q Developer 生成。

- 将 Amazon Q Developer 生成的代码与我们内部的代码进行对比。如下图所示,可以看到 Amazon Q Developer 生成的代码正确运用了我们内部库中已经存在的 customer repository 以及相关的函数,包括 findAll 和 deleteById。

在 Chat 中的定制问答功能
除了Inline的代码生成功能以外,Amazon Q Developer 定制功能同样支持在 IDE 与 Amazon Q 的对话框中询问与内部代码库相关的问题。如下图所示,询问 Amazon Q 内部代码库中 customerService 这个包的信息,可以看到 Amazon Q 可以给出准确并详细的总结。这个功能可以加速开发人员学习理解内部代码的过程,提升工作效率。

监控 Amazon Q 定制功能的效果
在 Dashboard 页面上,提供了各种关键性能指标,包括每天的活跃用户数量、生成的代码行数以及执行的安全扫描次数等。通过这些数据,我们不仅可以更全面地评估 Amazon Q Developer 的整体表现,还能直观地观察到它在提高工作效率方面为我们带来的具体成效。

除了 Dashboard 外,我们还可以在 Amazon CloudWatch 中访问更多的可视化指标,这些指标包括代码块接受率(Block Accept Rate)和代码行接受率(Line Accept Rate)等。这些高级指标进一步帮助我们监控和优化 Amazon Q Developer 的使用情况,确保我们能够最大化地利用这些工具来提升开发过程的效率和安全性。通过这种方式,我们可以根据实时数据作出判断,优化代码和输出质量。

目前支持的编程语言
目前 Amazon Q Developer Customization 功能支持的编程语言包括 Java (.java)、JavaScript (.js, .jsx)、Markdown (.md, .mdx)、Python (.py)、reStructuredText (.rst)、Text (.txt)、以及 TypeScript (.ts, .tsx)。其他语言即使被包含在代码库中也不会被 Amazon Q Developer 使用。
最后
Amazon Q Developer Customization 通过其强大的定制功能和灵活的数据源支持,为企业和开发者提供了强有力的支持,从而使得代码开发过程更加高效、安全且符合个性化需求。通过实际案例的演示,我们可以看到,无论是在代码生成、代码质量提升还是团队协作方面,Amazon Q Developer 都能显著提升开发者的工作效率和代码质量。
随着技术的进步和市场需求的变化,Amazon Q Developer 将继续更新和扩展其功能,以满足更广泛的编程语言和更复杂的开发场景。我们期待看到 Amazon Q Developer 如何继续推动创新。
感谢您阅读本文,希望它能为您在使用 Amazon Q Developer 时提供帮助和启发。如有更多问题或需求,欢迎继续探索更多资源或联系我们的技术支持团队。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。
本篇作者

本期最新实验为《Agentic AI 帮你做应用 ------ 从0到1打造自己的智能番茄钟》
✨ 自然语言玩转命令行,10分钟帮你构建应用,1小时搞定新功能拓展、测试优化、文档注释和部署
💪 免费体验企业级 AI 开发工具,质量+安全全掌控
⏩️[点击进入实验] 即刻开启 AI 开发之旅构建无限, 探索启程!