2026-01
使用 Amazon Bedrock 在您的软件开发流程中生成、评估和理解代码 机器学习博客
利用 Amazon Bedrock 在软件开发流程中生成、评估和理解代码
关键要点1 生成式人工智能AI模型为软件开发工作流的自动化和增强带来了新可能性。2 Amazon Bedrock 是一个完全管理的服务,可以使用顶尖 AI 公司的高效基础模型。3 本文涵盖了使用生成式 AI 来提升开发效率的多个方面,包括代码助手与代码理解功能。
通过自然语言提示生成代码的能力使开发者和运维工程师的工作方式发生了显著变化,促使他们提升工作效率。在本文中,我们将概述如何利用 Amazon Bedrock 的大型语言模型LLM,来帮助开发者在软件开发生命周期SDLC的各个阶段。
Amazon Bedrock 提供来自 AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI 和 Amazon 的高性能基础模型,且所有模型通过一个 API 提供,帮助构建安全、隐私和负责任的生成式 AI 应用。
生成式 AI 在 SDLC 中的应用
下图展示了一个示例 SDLC 流程,包含了生成式 AI 在关键领域的应用,从而提高开发的效率和速度。
本文重点介绍如何通过使用 Amazon Bedrock 中的模型,开发者可以创建自己的系统来增强、编写和审核代码,而不是依赖现成的编码助手。我们将讨论以下主题:
使用代码助手案例,帮助开发者通过建议更快地编写代码如何利用 LLMS 的代码理解能力,提供洞见和建议自动化应用程序生成案例,生成可运行的代码并自动部署更改考虑因素
选择模型和实施每个步骤的技术选项非常重要。每个模型在不同的数据语料上进行训练,因此在任务性能上存在差异。例如,Anthropic 的 Claude 3 在 Amazon Bedrock 模型中的表现能够有效地生成多种常见编程语言的代码,而其他模型可能在没有进一步自定义的情况下达不到这个水平。进行自定义是另一项技术选择,特别是在用例涉及不常见语言或框架时,因此可能需要通过微调或使用检索增强生成RAG进行自定义,以获得生产级的性能,但这也会增加复杂性和工程实施的工作量。
有大量文献对这些权衡进行了深入分析;本文仅简述了需要探索的内容,为构建者在实现生成式 AI 驱动的 SDLC 旅程中奠定基础。
代码助手
代码助手是非常流行的用例,提供了大量的选择。AWS 提供多个服务来帮助开发者,无论是通过 Amazon CodeWhisperer 进行行内补全,还是通过自然语言与 Amazon Q 进行交互。Amazon Q 为构建者提供了多种实现此功能的方式,例如:
Amazon Q AWS 专家接口Amazon Q 开发者在 IDE 中使用Amazon EC2 实例类型选择针对 Amazon Redshift 查询编辑器的生成 SQL在几乎所有描述的用例中,都可以与聊天界面和助手进行集成。这些用例主要集中在使用自然语言提示进行更直接的代码生成,而不是自动补全编程任务的工具。
一个助手的主要优点在于,你可以根据简单的描述开始新项目。例如,你可以描述希望创建一个无服务器网站,允许用户以博客形式发布内容,Amazon Q 将通过提供示例代码和推荐的框架来开始构建项目。这样的自然语言入口可以为你提供一个模板和框架,让你能花更多时间在应用的差异化逻辑上,而不是反复设置通用组件。
代码理解
企业开始尝试生成式 AI 来增强各自开发者的生产力时,通常会使用 LLM 来推断代码的含义和功能,以提高开发过程的可靠性、效率、安全性和速度。人类对代码的理解是 SDLC 中的核心部分,包括创建文档、进行代码审核和应用最佳实践。即便是成熟的团队,新开发者的入职也是一项挑战。若不让更资深的开发者浪费时间解答问题,可以借助 LLM,对代码库和团队编码标准保持了解,向新开发成员解释代码片段和设计决策,从而让他们快速上手,而资深开发者可以把精力放在构建上。除了面向用户的功能外,这一机制也可以完全在后台运作,以增强现有的持续集成和持续交付CI/CD流程,作为额外的审查者。
黑豹vnp加速器例如,可以使用提示工程技术,引导并自动应用编码标准,或包含现有代码库作为参考材料来使用自定义 API。你也可以采取主动措施,在每个提示前加上遵守编码标准的提醒,并从文档存储中获取这些标准,将其作为上下文传递给模型。作为补救措施,在审核过程中添加一步,检查编写的代码是否符合标准,以确保遵循,如同团队代码审查的工作方式。例如,假设团队的标准之一是重用组件。在审核阶段,模型可以扫描新的代码提交,注意到代码库中已经存在该组件,并建议审核者重用现有组件,而不是重新创建它。
下图演示了这种工作流程。
应用生成
你可以将本文中描述的用例概念扩展,创建完整的应用生成实现。在传统的 SDLC 中,由人类创建一组需求,设计应用,编写代码以实现该设计,生成测试,并从外部源或人员那里获得反馈,然后这一过程重复进行。这个循环中的瓶颈通常发生在实施和测试阶段。一名应用构建者需要具备实质性的技术技能才能有效编写代码,并且通常需要经过多次迭代来调试和完善代码即使是最熟练的构建者。此外,一个公司现有代码库、API 和知识产权的基本知识,对于实施有效的解决方案至关重要,人工学习这些内容通常需要较长的时间。这可能导致新加入的团队成员或技术技能存在差距的团队在创新中的时间延误。如前所述,如果模型既能够生成代码又能够理解代码,则可以创建管道,通过将模型输出的结果反馈作为输入,来执行开发者的迭代 SDLC。
下图展示了这种工作流程。
例如,你可以用自然语言请求模型编写一个应用,输出“1到100之间的所有素数”。它将返回一块可运行的代码,并定义适用的测试。如果程序没有运行或一些测试失败,可以将错误和失败的代码反馈给模型,要求其诊断问题并提出解决方案。管道的下一步是将原始代码以及诊断和建议的解决方案结合起来,生成一个新的程序。SDLC 将在测试阶段重新开始,获取新的结果,并可能再进行迭代,或者产生一个可工作的应用。通过这一基本框架,可以以与传统人类工作流相同的方式添加越来越多的组件。这种模块化方法可以持续改进,直到形成一个强大且高效的应用生成管道,该管道只需输入自然语言提示,并输出一个功能正常的应用,在幕后处理所有错误纠正和最佳实践遵循。
下图展示了这一高级工作流程。
结论
现在,生成式 AI 的采用曲线已使团队能够通过利用多种技术和工具来获得实际的生产力提升。在不久的将来,利用这些生产力提升来保持竞争力将是必需的。我们明确的一点是,技术不断快速进步与变化,因此构建一个容忍变化和灵活的系统至关重要。以模块化的方式开发组件,有助于在这个不断变化的技术环境中保持稳定,同时准备好在每一步都迅速采用最新技术。
要了解如何开始使用 LLM 构建应用,可以参考以下资源:
Q4 Inc 如何使用 Amazon Bedrock、RAG 和 SQLDatabaseChain 解决构建 QampA 聊天机器人的数值和结构化数据集挑战使用实体提取、SQL 查询和 Amazon Bedrock 中的智能文档助手提升 RAG 功能使用 Amazon Bedrock 和 Amazon 转录的生成 AI 创建录音摘要
作者介绍
Ian Lenora 是一位经验丰富的软件开发领导者,专注于构建高质量的云原生软件,并探索人工智能的潜力。他成功领导团队在多个行业交付复杂项目,优化效率与可扩展性。Ian 具备深厚的软件开发生命周期理解,热衷于创新,寻求利用 AI 技术解决复杂问题并创造智能的自适应软件解决方案,推动商业价值。
Cody Collins 是亚马逊云计算服务公司的解决方案架构师,驻扎在纽约,与独立软件厂商ISV客户协作构建云中尖端解决方案。他在多个行业交付复杂项目、优化效率和可扩展性方面拥有丰富经验,专注于 AI/ML 技术,使客户能够发展 ML 能力并将 AI 集成到其云应用当中。
Samit Kumbhani 是一名位于纽约市的 AWS 高级解决方案架构师,拥有超过 18 年的经验。他目前与独立软件供应商ISVs合作,构建高度可扩展、创新和安全的云解决方案。工作之外,Samit 喜欢打板球、旅行和骑自行车。