📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Architecture diagrams with generative AI: Leveraging AI agents

AWS Events1:00:49

Transcription

你好,欢迎来到 AWS Shibles 的又一期节目。现在,我将从一个问题开始。你们有多少人拍过照片?>> 对不起。好的。抱歉。对此感到抱歉。那么,你们有多少人在设计会议后拍过白板的照片?对。嗯,这听起来可能非常熟悉。你可能会用它来在 Slack 上分享,或者把它放在某个 wiki 或文档页面上。我仍然有罪,因为我有一些客户会议的照片,它们已经变成了完整的架构和实现。但我想告诉你的是,我花了大量时间来构建这些架构图。所以,嗨,Fatima Kumal,首席专家解决方案架构师,在我帮助金融客户的五年里,每一个架构决策都很重要,你知道我们已经看到这种文档差距给我们的团队带来了很多时间,尤其是在受监管的环境中,所以作为 AWS she builds 的核心成员,我热衷于为架构师提供工具来解决这些复杂问题,所以在一个小时内,我们将构建 AI 代理,将任何架构图转化为动态文档。所以,我们将从简单的开始,但在此之前,我有一个特别的嘉宾 Sumit。你想向我们的观众介绍一下你自己,让他们知道你们将要构建什么吗?>> 是的,当然。你好,大家好。我是 Sumit Bi。我是 AWS 的高级客户解决方案经理。我主要在 AWS 的高科技领域工作,支持这些客户进行迁移和现代化之旅。我住在印第安纳州的卡梅尔。所以,我现在正在处理中西部天气。>> 是的。>> 而且 Fatima,你正确地提到了处理这些架构图有多么痛苦,尤其是如果你不是那么技术性的话,而且如果草图不像应该的那样清晰,所有细节都没有提到。所以,是的,在本期节目中,我们将看到所有这些挑战,并看看我们如何提出一个解决方案来帮助我们的观众应对这些挑战。>> 谢谢。所以,我刚才没听清你说话。Summit,我们把你弄丢了吗?>> 我能听到你。哦>> 好的。所以,让我们开始吧。Summit,我们今天看到什么?>> 好的。所以,我将首先给你一个简要介绍,好吧,我们今天要做什么,然后我有一个预先录制的解决方案演示,我们将通过不同的选项进行演示,你知道如何构建那些代理,对吧?然后,如果你有任何问题,我都会回答。好吧,所以让我分享我的屏幕,当你能够看到时告诉我。>> 是的,是的,它正在显示,我们能看到你的屏幕。>> 好的。所以,让我们开始吧。所以,如果你是日常工作中绘制架构图的人,我不需要告诉你这需要多少时间,你每天都会面临一些挑战。Y>> 而且,正如 Fatima 所说,将白板草图转换为正式图表需要数小时甚至数天,然后最佳实践和合规性检查不断变化,而且是手动的,而且不完整。其他事情是图表与实际文档、实际架构、决策发生偏差,对吧?你知道,我们在会议中做出了某些决定,但当我们实际构建它时,我们往往会偏离它。而且,探索多种选项需要大量的手动工作。我的意思是,你正在检查特定架构的优缺点,而不是不同的选项。所以,这些是我们面临的挑战。我想听听观众的意见,你知道他们面临什么挑战,或者他们是否会认同这些挑战。所以,我们如何解决这个问题,你知道当这个特定问题出现时。所以,我们看到 AI 代理如何提供帮助。所以,当我们开始构建这个解决方案时,我们注意到 AI 代理可以读取图像,提取组件并生成正式图表。它还根据需求和最佳实践建议 AWS 服务。我们还可以根据 Well-Architected Framework 进行验证,并集成客户的自定义工具。所以,现在我将向你展示我们可以在今天的会议中用这些代理构建什么。所以,让我们看看。所以,我将用什么来构建这些代理?所以,这些是几种技术,Amazon Bedrock。所以,如果你还没有听说过 Amazon Bedrock,那么它就是用于大规模构建生成式 AI 应用程序和代理的平台。它让你能够访问来自领先 AI 公司的数百个基础模型,并根据你独特的性能和成本需求进行选择。然后是 Strand Agent Framework。它是一种模型驱动的方法来构建 AI 代理,只需几行代码。然后是 Model Context Protocol MCP,我们将在今天的解决方案中经常引用它。它是一种用于将 AI 应用程序连接到外部系统的开源标准。把它想象成 AI 代理系统通信的通用接口。最后但同样重要的是 CLI。这是一个命令行界面。它是一个将代理式 AI 功能和助手直接引入你的终端环境的工具。>> 所以,我们可以说我们给了每个架构师一些主要的超能力,因为我们将数小时的文档工作变成了几分钟。>> 当然,当然。>> 太棒了。>> 好的。所以,这是对架构的一点深入探讨。所以,只是给你一个想法,我们是如何处理它的,我们正在处理什么。所以,在我的开发环境中,在 VS Code 中,也就是 Visual Studio Code,我将有一个 KO 开发目录,其中包含配置,你将了解如何自定义 KO CLI 以进行交互式架构图,这为你提供了对 AI 工作流的编程控制,然后是 Strand Agent,正如我所提到的,这些是基于 Python 的 Strand Agent,它们利用 Amazon Bedrock 模型,你还可以通过本地和远程 MCP 服务器扩展这些代理功能。所以,我们有一个研讨会,为了在你自己的账户上运行这个研讨会,你需要有一个 AWS Builder ID,它是免费使用的,并且可以访问某些开发人员工具和服务。所以,如果你获得了 AWS 认证,你必须拥有那个 AWS Builder ID,你可以在你的 AWS 认证账户中查看,但即使你没有,你也可以登录这个特定的链接,创建一个新的。当你创建一个新的 Builder ID 时,你将获得一些 KO 积分来运行这个研讨会。>> 好的,然后让我>> 对于我们的,抱歉,我是为了我们的观众,我已经把研讨会链接也粘贴到我们的聊天中,所以你可以直接跟随并构建,如果你有自己的账户设置。>> 好的,谢谢 Fatima。所以,让我去这里打开它。>> 你能确认一下 Fatima 吗?你能看到吗?>> 是的。>> 好的。好的。所以,让我们把它变成现实。所以,我将要展示的,在这个研讨会的演示中,你将看到我用 AI 代理分析架构图,将那些白板草图转化为正式的架构提案,然后让一个代理审查那些架构并发现其中的真正问题。在此过程中,你将看到 MCP 服务器如何赋予代理超能力,正如你所提到的 Fatima,例如实时搜索 AWS 文档,以及几行自定义代码如何将通用模型变成领域专家。所以,首先你需要去设置和配置,为了在你的账户中运行这个研讨会,你去这个标签,向下滚动,这是研讨会 zip 文件。你需要下载它,解压它,然后在 VS Code 中打开它。运行这个研讨会所需的一切,Python 脚本,代理配置,示例图表和 MCP 服务器定义,一切都包含在其中。接下来我们需要做的是登录到 KO CLI。它所做的是它会通过 KO CLI 进行身份验证,这样你就可以运行登录命令。这会连接 AWS Builder ID 并解锁 KO AI 应用程序。抱歉,KO 功能和免费套餐提供了足够的积分来完成所有事情。>> 所以,所以你的意思是这个 KO CLI 对于这个研讨会是免费的吗?>> 是的。>> 对于观众来说是免费的。>> 是的。好的。所以,有不同的模块。所以,让我给你看,让我运行。是的。好的。所以,让我们进入第一个代理,它是基本代理。所以,这是第一个模块。所以我将演示不同的方法,正如我之前提到的。所以,关于 AI 代理的快速定义。AI 代理是一个与环境集成的软件程序,它收集数据并执行自主任务以实现目标。你设定目标,代理独立选择。所以,这是 VS Code。我已经下载了研讨会 zip 文件夹。解压它并在我的 Visual Code 中打开它,正如你所看到的,这里提到的所有模块,基本代理架构提案与右侧提到的研讨会相同。好的。所以,第一个任务是。所以,现在我们谈了很多关于架构图的事情。有各种程序用于创建架构图,但共享它们的常用方法是通过将其导出为 PNG 文件,就像我们在 AWS 文档和博文中所看到的 PNG 图像一样。所以,这里有一个图表。它是一个简单的无服务器架构,带有 API Gateway、Lambda、DynamoDB 和 S3。对?所以,我想我们从一个简单的图表开始。所以,让我们开始终端设置。所以,我们将在我们的研讨会中分析这个图表。所以,我在这里做的是我正在设置终端。这些是我正在设置的环境。这样可以更容易地导航和使用这些工具,贯穿整个研讨会。>> 是的。在我们继续之前,有一个来自观众的问题。PNG 文件,不是 JPEG 或 JPG。>> 嗯哼。是的。>> 好的。所以,这个研讨会,我的意思是这个特定的研讨会使用 PNG 文件而不是像 draw.io 这样的源文件的一个原因是,我们试图展示的。因为它是我们用于架构图的常用工具之一。因为在现实世界中,我们经常以 PNG 的形式收到它们,比如在文档或博文中,或者 Slack 消息中,你很少能得到可编辑的源文件。所以,教 AI 分析 PNG 意味着它可以处理那些已经在野外存在的图表,而不仅仅是理想格式。所以,那里有一个答案。>> 是的。是的,谢谢 Fatima。是的。所以,让我们进入任务一。所以,我们的第一个方法是直接使用 Amazon Bedrock API。该脚本使用 Amazon Bedrock Converse API,这是一个一致的接口,适用于所有支持消息的模块。它读取 PNG 文件。它通过 Bedrock 将其发送到云模型,它将创建一个 markdown 报告。所以,让我复制这个。抱歉,我所以,复制这些命令的简单方法,你会看到在,我希望演示正在运行。是的。所以,点击这个右边的东西,它会复制它,然后来到这里粘贴。所以我现在正在运行它。让我们,所以它已经创建了 markdown 文件。所以,让我们去分析图表。所以,这是 Converse.md 文件,它是用脚本创建的。所以,如果你去这里,让我把它放大。好的。所以,正如你注意到的,输出文件已经识别了关键组件。Amazon API Gateway、AWS Lambda、Amazon S3 和 Amazon DynamoDB。它也谈到了数据流,对吧?你知道,用户如何通过 API Gateway 发送请求,API Gateway 如何触发 Lambda 函数,Lambda 函数如何从 DynamoDB 读取数据进行处理,然后 Lambda 函数如何将结果或文件写入 S3 存储。所以,这个架构再次代表了一个简单的典型无服务器模式。所以,从那个特定的图像中,我们能够创建这个 markdown 报告,但它缺乏深度,因为它不提供任何建议,它是僵化的。所以,如果我必须将这个文件保存为不同的格式或进行任何更改,我不能这样做,对吧?因为它是一种僵化的形式。所以,我们如何解决这个问题,通过代理,我们可以解决它。所以,这就是任务二的由来。所以,在这个任务二中,我们将使用这个图像。这个图像是 MCP 服务器如何工作的简单图示。再次,它是 PNG 格式。所以,让我运行这个 KO CLI 聊天。所以,它正在做什么?它正在启动一个聊天会话,这个代理可以访问内置工具,如 shell、read 和 write。所以我正在问代理,让我们看看>> 只要你开始这个聊天,Sumit,对于我们的观众来说,你能告诉我 Bedrock 和 API 方法的区别吗?>> 让我,是的,抱歉,让我暂停一下,是的,是的,请继续>> 是的,所以我想,对于我们的观众,你能解释一下 Bedrock Converse API 方法和基于代理的方法之间的区别吗?因为我们正在进入任务二。>> 好的,这是一个好问题。所以,Converse API 方法是基于传统的脚本。所以,你将图像发送给模型,你会得到一个响应,然后你将其写入文件。所以,它是快速且可预测的,但正如我所提到的,它是僵化的。如果你想添加某些组件,如果你想添加某些研究能力或更改输出格式,你必须修改代码。而当我们谈论代理时,它是自主的,对吧?所以,在这个中,你描述一个目标,然后代理决定调用哪些工具,以什么顺序,并进行迭代直到任务完成。>> 明白了。>> 这回答了你的问题吗?>> 是的,绝对。我只是想知道我们的观众是否还有更多关于我们即将看到的代理的问题。>> 好的。好的。所以,让我们去,让我再次运行。所以,所以现在,你知道,当我复制这个时,我正在做什么?我将要求它从 AWS 文档中下载图像,并将其转换为 mermaid 图。所以,让我们看看输出是什么样的,正如你在终端中看到的,它不断地问我,你知道,授权它。所以,请注意,我们没有告诉它如何下载,我们没有告诉它下载哪个工具,它只是需要我们批准代理的操作,它自己决定。所以,让我们去看看输出文件。所以,MCP response.md 是输出文件,我也想提一下,Converse API 模型实际上是模型无关的。所以,你相同的请求格式将适用于 Claude、Titan、Llama,任何 Bedrock 支持的模型,只是想提一下。>> 好的。好的。所以,这是,所以正如你所看到的,你知道,从那个 PNG 文件中,我们能够创建这个,你知道,序列图,对吧?所以,让我回去,抱歉,我们停下来回答问题。是的。所以,这个图表,正如你所看到的,它是一个序列图。PNG 文件和这个图表之间的区别。所以,这个图表是可编辑的。它是版本可控的。所以,不像图像,你不能对你的图像进行版本控制。但是,你知道,一旦你有了这个图表,你就可以进行更改,并且你会得到可编辑的版本,当然,你也可以管理版本控制。所以,这是任务二。现在,让我们看看,你知道,我们如何自定义代理。所以,自定义代理是为特定的 AWS 规模预先配置的。所以,我们创建了,我创建了一个分析图表代理,你将在你的终端的 KO 代理中找到它。让我去这里。它会显示给你。所以,如果你去这里,在 KO,你向下滚动代理,这是我正在谈论的分析图表代理,让我把它放大。所以,正如你所提到的,在提示中,我们提到了你是一位 AWS 专家,在 AWS 服务和无服务器架构方面。然后我提到了 AWS 知识 MCP 服务器,是的,这就是我们创建的代理。所以,让我初始化它。所以我正在复制它。是的。好的。所以,我正在开始这个分析。所以,我将描述图表中的关键组件,一旦完成。>> 这里我们添加了一个代理,它将带来 AWS 知识,而不是仅仅将东西硬编码>> 到 LLM 中,对吧?所以,是的,它将参考那些 MCP 服务器,对吧?针对那些服务,它将找到文档,然后提供工具。>> 所以,有一件事,这里再次,让我暂停一下。所以,正如你所看到的,你知道,当我们创建一个代理时,它也会让你访问工具,对吧?你知道,如果你想运行它,我本可以在终端中编写它。但如果你写 tools,你会看到这些是这个代理可以使用的工具。所以,有一些内置工具,然后是知识 AWS 知识 MCP 服务器的工具。好的。是的。所以,现在我将给出一个提示。我将要求它描述这个代理中的关键组件和服务,使用图表图像。使用可用的知识库工具来研究 AWS 服务,并将分析保存在输出文件 report/CLI 中。所以我正在运行它,然后你会看到与我们之前创建的报告的区别。它需要一段时间。好的。所以,它再次,那是代理工作流程中的人类循环,我们不想盲目地让代理做所有事情,但在这种情况下,它会不断地问,你是否要批准这个操作,我们也有治理,我们可以说不,我们不批准。好的。所以,现在你会看到输出文件。所以,你注意到,一旦你看到这个输出文件,你就会注意到细节的差异,它提供了什么样的细节。你看到,与第一个报告相比,这个报告包括了特定的 AWS 服务功能,谈到了用例,最佳实践,所有这些都来自当前的 AWS 文档。所以,研究分析,当我们给出 MCP 服务器上下文时,代理会进行分析。>> 是的。所以,如果我们要总结一下,任务一基本上描述了模型记住了什么。任务三描述了模型研究了什么。这就是让代理拥有工具的价值。你从训练数据走向实时知识,这就是 Sumit 刚才向我们展示的。>> 是的。所以,是的。所以,Fatima,你说得对。所以,从第一个开始,第一个只是,你知道,获取图像并创建,你知道,markdown 报告。但在这次,如果你注意到,有详细的服务描述,用例和最佳实践,然后还有集成模式。而且,它的美妙之处在于,它直接来自实时的 AWS 文档,也就是说,如果 AWS 文档有任何变化,你也会得到不同的输出。好的。>> 是的。而且这里有一个关于聊天的问题。这个 Kirro CLI 自定义代理可以被多人使用吗?>> 简短的回答是肯定的。他们可以,但那样的话,他们必须使用 git 仓库,你知道,他们可以创建一个代理并公开导出到 git,然后从那里,你知道,他们可以给他们的团队成员访问权限。所以,我>> 这回答了吗?>> 是的。是的。是的。而且,正如你所看到的,任务三是为什么这很重要的一个完美例子,因为你看到了我们的分析图表,那个是一个自定义代理,那是一个预先创建的 JSON 文件。所以,它将定义要使用的 MCP 服务器,AWS 知识 MCP 服务器。>> 是的。是的。所以,你可以再次创建。所以,当你创建这些图表时,你可以再次去,这个 KO 目录,创建代理,设置你的自定义代理的配置。你把它提交到 git,对吧?然后与你的团队分享。每个人使用相同的配置都将拥有相同的工具和上下文的访问权限。>> 对?>> 好的。所以,现在让我们进入下一个,Strand Agent。所以,Strand Agent,你会觉得很有趣。让我再次播放它。所以,在我们去 Strand Agent 之前,Sumit,你能告诉我们的观众 Strand Agent 和 KO Agent 有什么不同吗?>> 所以,KO CLI Agent 和 Strand Agent。所以,所以你看,Strand Agent 是什么?好吧,让我退一步。所以,KO CLI Agent 是当你想要探索某事的时候,你知道,当你正在为自己创建东西的时候。而 Strand Agent 是你可以在企业级别使用的东西,对吧?我的意思是,你想要一段代码,你想迭代地运行它,并将其添加到你当前的 CI/CD 管道或已有的工作流中,对吧?那就是 Strand Agent 的用武之地。有道理吗?>> 是的,完全有道理。它就像,你定义了 Strands 是一个甜蜜点,当你想要代理行为,但你需要它嵌入在你的应用程序代码中。>> 是的。是的。所以,基本上它是,我该怎么说呢?它对你的自动化工作流很有好处,我提到了 CI/CD 管道,但任何你想要代理以编程方式运行而无需人工交互的场景,对吧?>> 是的。>> 而 Kira CLI 是一个预先构建的交互式助手,你可以与你的终端聊天,它会不断地给你输出。所以,把 Strand Agent 想象成嵌入 CI/CD 管道的代理的构建块。而 Kira CLI 是一个即用型工具,用于交互式开发工作。好的。所以,在这个 Strand Agent 中,让我抱歉,我按错了。所以,是的,所以我们谈到了 Strand Agent。所以,在 Strand Agent 中,再次,它是一个框架,Strand Agent Framework 是一个基于 Python 的代码优先方法来构建代理。想法是将代理嵌入到 CI/CD 管道中,我们有嵌入式系统提示,与之前的代理相比,我们将要求代理使用 AWS 知识 MCP 服务器来分析服务。所以,让我来分析一下,让我复制它。>> 我们在聊天中还有一个问题。>> 我们需要使用很多不同的工具来完成一项任务。它将 PNG 图转换为 mermaid。这是真的吗?为什么不只使用一个工具?>> 这取决于。所以,你能重复一下问题吗?如果我理解正确的话>> 我们正在,你知道,我们正在使用很多工具来完成一项任务,比如将那个 PNG 图转换为 mermaid。所以,问题是为什么我们不只使用一个工具来完成所有这些事情?>> 是的。所以,如果我理解的话,就像,让我这样说,你知道,根据你的需求,你可以,你知道,人们有一个工具是,我是说,我需要退一步,对于 Strand Agent,我们谈到了,你知道,它有多难。现在你在谈论第一个模块。我正在尝试看看我如何回到那个,所以答案是,一个工具是读取文件,一个工具是获取关于它的 AWS 知识。另一个工具是写入文件。所以,根据你的需求,你可以使用不同的工具。这回答了问题吗?还是你想让我详细说明?>> 不,这很好。谢谢。>> 所以,所以,在这种情况下,你知道,有些人有特定的要求,我们想创建一个 mermaid 图,对吧?而有些人则认为,好吧,这是架构,对吧?我们只需要创建一个 markdown 报告,因为我们需要上下文。我们需要 markdown 报告来用于我们的架构文档。对?所以,在第一个任务中,如果你注意到,有一个图像,对吧?所以,我们把它转换了。但是,如果你想给那个图像添加版本,你不能给那个特定文件添加版本控制。对?那就是任务二的由来,对吧?我们从中创建了 mermaid 图。对?在那里你可以进行版本控制,而且它是可编辑的。>> 谢谢。>> 好的。好的。所以,与此同时,抱歉,我暂停了。所以,让我再次运行它。所以,是的,所以我们已经粘贴了,而且对于 Strand Agent。所以,在 Strand Agent 中,你会注意到,好吧,它还在运行。让我给你看输出。所以,是的,所以这是分析,我们正在谈论的代理,再次,用户提示,你看到,你知道,我们如何描述关键组件和服务,然后再次,在第 40 行,我们谈论知识 MCP 服务器,然后在第 48、49 行,我们告诉代理应该如何运行,所以它应该已经完成了,对吧?看,它不断地问,你想写,你知道,它不断地要求我批准。我需要点击是,然后它才会继续。现在,让我们分析输出。所以,你注意到它有一个与之前的输出相似的结构,你知道,我们运行了用于 curl 的自定义代理,但它包括了关键特性,功能特性和常见模式。它还谈到了错误处理,测试策略,并提供了全面的细节。所以,它有更多的细节,但不同之处在于它可以用于你的企业级别。好的。所以,让我们进入这个模块的最后一个任务。我知道这很多。所以,这就是为什么我想让你去。所以,在这个任务中,是的,我们不会分析任何东西。在这种情况下,我们将生成图表。>> 所以,我们已经完成了分析。>> 是的,我们已经完成了。所以,我们如何开发图表?所以,AWS Diagram MCP 使用 Python 代码创建图表。你需要在这里检查。所以,如果你注意到,这个图表,你需要运行这个命令,并检查你的机器上是否安装了 graphviz。然后通过运行这些命令来替换 AWS Icon 图像。我已经完成了,但是,你知道,当观众在你自己的账户上运行这个研讨会时,你需要检查一下,否则你会开始收到错误。所以,现在,让我启动这个 KO CLI Agent。是的,我退出了,然后我清除了它,只是为了保持整洁。所以,正如你所注意到的,它正在运行,你会在第四步看到它谈论上下文。所以,我们如何看到上下文?有一个,让我为你打开它。所以,在,是的,抱歉,在上下文中,你创建一个转向文件,并告诉你想如何制作你的图表,在那里你可以定义转向文件,再次,在目录中,你去那里,转向,你在这里提到,你给出命令或提示,你知道,你想如何创建你的图表,它有所有的颜色,所有的图标,特别是你可以定义,当然,你可以根据你的需要进行更改。>> 并且谈谈转向文件,它是什么样的?它就像一个持久的指令集,会自动加载到代理的上下文中。所以,它会告诉代理如何使用 Python Diagrams 包,或者命名约定,布局规则,图标偏好,所有这些都在转向文件中定义。是的,同意。谢谢。谢谢 Fatima。好的。所以,现在我只是,抱歉。现在我只是给出一个命令,用服务器 API 架构创建一个云架构图,有四个主要组件,我提到了用户、Amazon API Gateway、Lambda,以及数据层,它被分为 DynamoDB 和 Amazon S3。所以,这与我们在任务一中看到的第一个架构非常相似。所以我来到这里,给出>> 问题。>> 抱歉,这里有个问题。对于我们的 SA 来说,在我们的通话中,我可以说出任何我想要的云架构图中的其他服务。对?所以,如果明天我有一个架构,我想谈谈,你知道,S3 和一些其他服务的文件服务,或者你知道,一些其他数据库服务,或者 RDS,我只需要给出所有这些服务,我就应该能够生成一个架构图了。>> 当然,当然。而且,你知道,这来了,你知道,当你和你的客户开会时,你围绕它进行了讨论,你没有创建任何,比如说,白板图像或类似的东西,或者你只是和某人谈话,在去吃午饭的时候,在电梯里那种设置,你谈到了某些组件。所以,你来到这里,回到这里,使用这个代理,你说,好吧,他们提到了这个,他们提到了那个,我们可以提出什么样的架构?>> 所以,这就是它的全部。好的。所以,我已经给出了命令,它正在运行。让我们看看。所以我希望突出一个原因。我预先录制这个演示的原因是,正如你所看到的,所有这些代理都在运行,它需要时间。所以,通常这个研讨会需要一个多小时,但我希望它保持简洁,这样你们就可以看到我运行了什么命令,得到了什么样的输出。>> 但是的,所以当你运行这个研讨会在你自己的 AWS 账户中,它可能需要更长的时间,所以不要认为 Summit 的速度很快,为什么它需要更长的时间?所以,我只是想提一下。>> 是的,Sumit 已经处理了所有潜在的先决条件和所有设置,但通常不运行一个小时。我们需要一个多小时才能完成整个研讨会。所以,嗯,是的,但请在您自己的账户中运行它,看看效果如何。>> 是的。好的。所以,让我们看看它创建了什么。它创建了什么?让我们去。好的。让我们希望它正在运行。是的。所以,我来到这里,这是服务器 API 架构 PNG。让我,所以你看,让我把它放大,这样你们就能看到。所以,正如你所注意到的,它有用户 API 层、计算层、数据层。这就是我们提供的。重要的是,不仅仅是图像,你还看到了代码。所以,它创建了代码。而且,如果你想做一些更改,如果图表不符合你的要求,你可以在代码中进行更改,并且基于代码,你将得到新的图表。而且很多人,你知道,这不是说,比如说,如果你正在运行这个研讨会,比如说你们两个人正在运行,你知道,你们两个都得到了不同的输出,那是 AI 代理的非确定性性质,对吧?所以,你的代码会,你的输出可能会略有不同,但正如我所提到的,这是 AI 的非确定性性质。好的。所以,这是任务五的结束。所以,所以,好的。所以,这是模块一的结束。所以,你现在已经体验了从基本 API 调用到具有知识集成的复杂代理的进展。在下一个模块中,我们将把这些概念应用于现实世界的场景,比如将白板草图转化为具有 AWS 服务推荐的综合架构提案。如果有什么问题,我将在这里暂停,让我喝口水。>> 是的,这里有一个问题。>> 是的。>> 我们可以从 Terraform 或 CloudFormation 文件生成图表吗?>> 嗯,我们可以用>> Terraform 或 CloudFormation 文件生成图表吗?>> 我认为在任务五中,是的,你可以>> 应该可以。>> 是的,但这是一个好建议。我还没有尝试过,但在我的,我们必须尝试,但正如我所提到的,我还没有尝试过,但我认为这是可行的。>> 是的,使用 KO CLI 和 Python Diagrams 自定义代理,就像 Sumit 所说的任务五,使用 IaC 文件并请求图表。>> 是的,我不知道它效果如何,因为我没有测试过,但我认为它应该可以。是的。>> 是的,这是一个很好的测试。是的,这是一个很好的选择。是的。>> 我可以用任何 LLM 运行它吗?>> 任何 LLM?嗯,是的。所以,它是,你知道,因为我们在这里使用 Amazon Bedrock。如果那个 LLM 在那里,是的,你可以运行它。但你知道,每个 LLM 都有自己的能力,或者你知道,它们擅长,比如说,分析,运行创建好的图表图像,对吧?所以,如果它在 Amazon Bedrock 中,是的,你可以运行它。所以,基本上 Strand 支持,在 Strand 中,它通过 Bedrock 支持多个模型,你可以,你知道,你可以改变模型 ID 并使用它。在其中,我们使用 Claude,但如果你可以去,你可以改变模型 ID 并使用它。对于 KO CLI,使用,你知道,你将使用 /model 命令来查看哪些可用,你可以选择任何一个可用的模型。>> 好的。>> 另外,这个需要视觉能力,对吧?尤其是这个。>> 所以,你想确保这些模型支持通过 Converse API 进行图像处理,而并非所有 Bedrock 模型都支持。所以,是的,检查一下。>> 是的,这是一个很好的提醒,Fatima。快速时间检查,我们准时吗?>> 是的,我们还有时间。>> 好的,那太好了。所以,让我们快速跳到模块二,你知道,我们在开始时谈到了白板图像。让我们看看,让我把它放大。所以,在这个模块中,我将采用一个非正式的白板草图,并使用代理将其转化为多部分架构图或文档。这是一个典型的场景,有人在设计会议期间在白板上草绘了一个架构,所以目标是将其转换为专业的文档,并附带服务推荐。所以,在这个图像中,如果你注意到,它看起来像一个内容发布系统,你注意到白板图表通常是临时的,细节程度各不相同。这个图表包含几个关键元素,我们必须识别。所以,正如你所注意到的,有三个服务,如 Gutenberg 和 Alexandria。六个纯粹的,我们在这里放了上下文,用于编辑功能,内容在那里被创作和完善。Gutenberg 用于发布和 PDF 转换,Alexandria 用于存储数据库。然后我们谈到了两个微服务。你注意到有一个搜索微服务,它使用 NoSQL 数据库,还有一个显示微服务,它使用 SQL 权限。这里有两个参与者,编辑和客户,以及几个工作流程。所以,正如你所注意到的,这里有,让我抱歉,让我回去。是的。所以,正如你所注意到的,这个特定的模块,它没有连接到主架构。它提到了显示服务,但如何,而且没有箭头连接,没有线条连接。所以,这种情况经常发生,Fatima,如果你错了,请纠正我,当我们创建这些图表时,有时我们会错过一些细节。>> 很多时候我们会错误地发送错误的箭头,或者缺少一些箭头,这在白板会议中经常发生。>> 这是正确的。好的。所以,现在让我们看看,你知道,我们如何使用这个代理来读取那个特定的白板图像并将其转换为文档。所以,让我在这里展示一下,我将运行这个命令。所以,它将做什么?它将运行 Strand Agent。所以,我们所做的是我们创建了一个自定义工具,它编码了领域特定的知识。所以,当我说是领域特定的知识时,我的意思是,你知道,我提到的所有三个服务,Shakespeare、Gutenberg 和 Alexandria,它是,让我打开,我想它在演示中,我打开了它。它要求是。让我点击是。我一会儿会给你看代理。是的。所以,如果我在这里去架构,然后,好的,所以,它所做的是,抱歉,所以,它所做的是,你知道,我打开了,我运行了 Strand Agent,以及关于所有这些服务的上下文,这是编辑服务,这是存储服务器,我们已经提供了那个上下文,因为每个公司,每个组织都有自己关于某些工具的上下文,他们有遗留应用程序,他们可以为你提供上下文,所以你可以把这个特定的上下文效果放在你的区域。所以,这是基本代理。所以,现在让我们看看输出是什么样的。所以,那是输出。所以,它识别了核心服务。它谈到了微服务。这些是角色,它还创建了 mermaid 序列图。而且,我想我滚动了,但是,你知道,如果你审查这个文件,你会注意到它提供了 AWS 推荐。所以,让我们以一个例子来说,让我在这里停下来。所以,它谈到了推荐,比如对于 NoSQL,使用 Amazon OpenSearch Service,对于 SQL 数据库权限,使用 Amazon RDS。它提供了推荐。所以,是否使用推荐取决于你。但它没有详细说明为什么使用它。它只是提供了,你可以使用这个。是的,这一点非常重要,Sumit,因为大多数时候,当我们与客户一起进行白板会议时,有太多的 AWS 服务,我的客户会说,我不知道,哪个适合我,他们会认为,因为他们听说过一个特定的服务,他们就会选择它,这不一定是适合他们用例架构的正确服务,但如果有一个这样的图表,它会根据 AWS 的文档知识库提供推荐,这对我们来说非常方便。>> 是的。是的。而且我们将增强这一点,Fatima。不是说你不会在这里停止。我们将,这是基本的东西。我们只是转换了这个图像。他们提供的。所以,让我们看看我们如何增强它。所以,在下一步,让我去展示如何增强它。所以,所以这是任务二,对吧?所以,在那里我们谈论使用 MCP 服务器的企业级分析。所以,在这里我们将使用那些 MCP 服务器。所以,它所做的是,而不是将那些服务名称硬编码到代理代码中,我们将服务目录外部化到 MCP 服务器,它使用 AWS 知识 MCP 服务器进行更深入的研究。这主要是为了模拟真实世界的模式,所以,如果组织有自己的内部服务目录,并且他们有自己的批准的技术或自己的命名约定,那么你知道,你可以自由地将这些组件映射到 AWS 服务。>> 当然,当然。这是绝对正确的。而且,我想提的一件事是,我添加了一个额外的上下文,你知道,添加像 C4 模型这样的图表到图表中。所以,让我们看看它是什么样的。所以,让我现在运行它。所以,你知道,你在左边看到它将搜索 AWS 文档。它正在连接到 AWS 知识库,并且正在搜索那些 AWS 文档。现在,让我们去看看输出是什么样的。Proposal.md。所以,你会注意到这里识别的组件与代理一中的组件相同。但是,如果你继续向下滚动,让我们看看。好的。是的,数据流描述是相同的,对吧?它提供了更多的上下文。再次,这是一个序列图。而且,如果你注意到 AWS 推荐,如果你注意到 Fatima,你知道,我们提到了 NoSQL 数据库,对吧?>> 是的。>> 推荐是 OpenSearch。我们为什么这样做?因为它支持全文搜索功能,对吧?你可以看到它谈到了高级查询 DSL,实时索引聚合,对吧?所以,它提供了更多的上下文,因为它直接从 AWS 知识 MCP 服务器拉取那些 AWS 文档。>> 当然。>> 谈论规模。即使我们错过了那些细微的细节,这就是它检查并说,好吧,你知道,这些是原因,为什么不同的服务可能更适合你的用例。>> 当然,当然。而且,而且在底部,正如我所提到的,有一个 C4 模型系统图,我提到了。所以,它根据那个,再次,白板图像,它创建了 C4 图。所以,当你运行这个研讨会时,这个特定的任务二将比任务一花费更长的时间,因为在这种情况下,我们添加了 MCP 服务器,它将花费更长的时间来运行。所以,我们分析了什么?我们分析了两个代理,并展示了一个渐进的评估。在第一个代理中,当你看到输出 Proposal One 时,那是一个独立的代理,具有硬编码的服务目录,生成了一个四部分的分析。而第二个代理和 Proposal Two 输出中,你看到了一个升级,基于你的企业风格架构,通过用两个 MCP 服务器替换硬编码目录,然后我使用了 C4 图。但是,你有选择,你知道,当我们运行这个研讨会时,我们创建了不同的图表。所以,你看到 PlantUML,它有更多的,我说,它更清晰,而且,你知道,更好的可见性,而且细节也更多。所以,你可以创建不同类型的图表。它不一定是 C4 图。你可以创建 PlantUML 和基于 Python 的图表。>> 好的。>> 在我们进行的时候,有一个问题。它说,根据我听到的,Kira CLI 只是 Mermaid 的替代品,不处理 CF CloudFormation Terraform。处理白板的原始图像。这是真的吗?Kira CLI 不是 Mermaid 的替代品。Kira CLI 就像一个通用的 AI 代理 CLI。

它可以做的事情远不止生成图表。>> 是的,我错过了问题吗?>> 是的,所以问题是,基于他们听到的,他们认为 Kro CLI 只是 Mermaid 的替代品,它不处理 CloudFormation 或 Terraform。它处理来自白板的原始图像。所以那不是真的。>> 不,那不是真的。对。对。对。不,那不是真的。>> 所以 Kira CLI,你知道,它就像一个代理。它可以做的事情远不止这些。你的 Mermaid 是一个基于文本的编程图表语法。>> 是的。Kirro uh Kirro CLI 再次,所以那是我感到困惑的地方,对吧?你知道,你提到了 Kirro CLA 和 Mermaid。所以是的,Mermaid 图只是一个格式,对吧?你正在使用它,而 Ko cla,抱歉,Ko cla 是命令行界面,对吧?>> 那是带来人工智能功能的工具,对吧?你可以与一个交互式会话进行交互式聊天,你正在说我,比如说我遇到了这个错误,对吧?比如说,你知道,当你运行这个研讨会并遇到一些问题,然后你登录到 Ko cla 并遇到某个错误时,你可以问 Keros CLI,嘿,我遇到了这个错误,你能帮我修复它吗?它会修复它。而且,如果你看看基础代理,我认为是在任务二中有一个错误。你知道发生了什么吗?你知道,当我们创建那个 Mermaid 图时,生成的代码中有一个换行符。对。所以我们做了什么?我问 Ko cla,你能修复它吗?它就删除了换行符。>> 对。并且它能够生成 Mermaid 图。所以总结一下,Ko uh 是一个人工智能开发助手,而 Mermaid uh 是,我可以称之为,它是一个图表即核心语言,对吧?>> 在研讨会中。好的。>> 是的。>> 希望它清楚,对吧?>> 是的,绝对。所以在这个 Smith 演示的例子中,如果你看到 Kirro CLI,我们主要关注图表分析。但如果你想分析那个 Python 文件,你知道,与 Kirro CLI 聊天,用 Kirro chat 做,你知道,如果你有任何错误,故障排除,所有这些都可以用 Kohat 处理。所以它做得更多。你甚至不需要知道 Python,你不需要知道任何东西。你几乎可以聊天,让 Kira 弄清楚。>> 是的。而且是的,绝对 Fatima 和 Curo 代理实际上会生成 Mermaid 代码作为输出,对吧?它们是互补的,而不是相互替代。>> 是的。好的。那么,让我们进入最后一个模块,架构审查。好的,让我打开,抱歉,我的鼠标出了点问题。是的。好的。所以在最后一个模块中,我们将要处理的是架构决策审查文档。那么,你们有没有,让我问你们。你们以前处理过架构 ADR 吗?>> 嗯,它是非正式的。你可以说,人们会去谈论,好的,这是正确的事情还是不对。我们并没有真正那样标记它,但让我们多听听。>> 好的。所以在这个模块中,对吧?我们执行一个,所以如果存在一个架构文档,对吧?我们将要审查架构图,看看它是否看起来完整,它是否包含所有需要的东西,它是否像应该的那样完整,或者我们是否遗漏了什么,对吧?所以它意味着什么,让我运行它,所以在这个例子中,我们将,我们的代理将分析与 ADR 的不一致之处。所以当我谈论 ADR 时,让我向你们展示。所以在这里,如果你注意到,在架构图中,这是 ADR。ADR 的意思是,根据某个组织,对吧?如果有一个数据库的选项,比如说有一个 PostgreSQL 和 MySQL。所以公司已经提到,优先考虑 PostgreSQL 而不是 MySQL。同样,如果我们去看 Aurora,那是另一个 ADR 决策。让我>> 是的。所以如果我们必须总结一下,把它想象成某种结构化的文档,它捕捉了团队为什么做出特定的架构决策,不仅仅是你选择了什么,而是背景是什么,你考虑了哪些替代方案,后果是什么?把它想象成你架构的决策日志。绝对 Fatima,正如你所注意到的,对于 Aurora 有各种选项,但公司的优先事项是使用 Amazon Aurora PostgreSQL。所以这个 ADR 我们已经在代码中提供了,只是为了看看当我们审查架构时,它是否与提到的 ADR 一致。所以让我们运行它。所以在这个例子中,我们将使用我们在前几个模块中创建的架构图。所以让我快速向你展示我们将再次分析的架构图。那就是同一个,我不想花太多时间。所以这是关键组件、参与者、内部服务,它看起来很完整,对吧?但它是否符合 ADR,让我们看看。所以让我去这里,我们将审查这个架构。你知道,有时如果你认为 ADR 应该由人类来完成,因为人类最终拥有经验。把它想象成,你知道,在它到达人类手中之前的第一次检查。>> 所以只是让你的工作更容易,更有效率。好的。所以让我们看看输出。它正在运行。所以让我们看看输出。我知道我们已经到了最后一分钟。所以我正在尝试。所以当你审查时,如果,好的,它完成了。让我向你展示。所以你在 review.md 文件中会注意到。所以它创建了执行摘要。它谈到了这个架构图的优点,你知道,什么最好,然后它发现了不一致之处。所以如果你注意到,它谈到了数据库技术的不匹配。让我们先读一下,它提到,你知道,你使用了这个 MySQL 用于 PostgreSQL,但根据 ADR,已经决定它应该是 PostgreSQL。所以如果你的架构图存在不一致之处,与定义的 ADR 相比,是的,它会找到它。然后是的,我不会详细说明,但是的,如果我只是快速浏览一下,希望它能解释清楚。Fatima,如果我还需要在这里解释任何东西,请告诉我。>> 嗯,我们很好。我们还有三分钟。但我也想,你知道,那里还有另一个问题,他问我们如何为这些研讨会做准备。所以我们有这个视频中的材料。>> 是的。是的。我正在快速去看。所以我只是想提一下,你知道,一旦它谈到了不一致之处,它也谈到了建议,如何改进它。你需要修复架构文档中的第一件事是什么?它谈到了,他们会给出中、高、低优先级。好的。所以这就是这个特定研讨会的全部内容。所以我们从这个研讨会中获得的要点是,我们注意到代理是如何做出自主决策的,而不仅仅是执行预定的逻辑。MCP 通过标准化协议和嵌入的自定义上下文领域专业知识,以及从独立 MCP 到嵌入式和企业级代理的渐进式复杂化来扩展能力。你可以自动化你的审查文档和人类专业知识。所以这就是这个研讨会的全部内容。资源清理,你不需要做,因为一切都在 Amazon Bedrock 模型接口 API 中运行,一旦你关闭它,就没有持久化资源被创建,所以没有清理工作。所以让我打开我的幻灯片,请给我一秒钟。>> 但是,当您需要总结时,您能否告诉我如何将我今天学到的内容包含到我的实际工作中,为我们的听众。>> 嗯,这是一个非常好的问题。所以这取决于你的角色,对吧?所以如果我需要和 Fatima 谈谈,对吧?Fatima 正在提问,我知道 Fatima 是一位首席工程师,对吧?所以如何在你的具体工作中,工作中使用它。所以你与客户有各种会议,你需要,你需要总结这些,你需要根据讨论创建内容,你需要将这些代理纳入你的日常工作流程,这样,你知道,一旦你这样做了,它将为你节省大量时间。所以你可以审查那些架构,你将创建各种代理来审查你的工作,对吧?它会发现,正如你正确提到的,如果架构中存在混乱,你如何找到它。>> 太棒了。我们节目的最后了。感谢您的参与,两周后我们将与您一起参加 AWS Shaples 的另一期节目。祝您有美好的一天。谢谢你,Sumit。>> 谢谢。再见,各位。谢谢。