AWS Machine Learning Blog

Generate presentations with Amazon Bedrock AgentCore

6.9内容质量
Generate presentations with Amazon Bedrock AgentCore

TL;DR · AI 摘要

Generate presentations with Amazon Bedrock AgentCore Artificial Intelligence Generate presentations with Amazon Bedrock...

核心要点

  • 主题聚焦:Generate presentations with Amazon Bedrock Agent
  • 来源:AWS Machine Learning Blog,建议结合原文判断细节。
  • AI 分析暂不可用,本条为保底评分与摘要。
#AI#编程#后端#云计算#安全
打开原文

使用 Amazon Bedrock AgentCore 生成演示文稿 | 人工智能

使用 Amazon Bedrock AgentCore 生成演示文稿

金融服务团队每周需要花费大量时间手动根据季度报告、合规文件和市场分析为客户创建 PowerPoint 演示文稿。每次制作演示文稿都需要阅读数百页文档,提取关键数据点,构建幻灯片结构并生成配套视觉内容。本文将带您逐步构建基于 Amazon Bedrock AgentCore 的 AI 代理系统,实现该工作流程的自动化。在我们的内部测试中,该系统可在 90 秒内完成演示文稿生成。这种方法在缩短制作时间的同时,确保内容始终基于原始文档。解决方案在 AgentCore 运行时部署了监督代理,利用 Amazon Bedrock AgentCore 的能力,通过 Strands Agents 框架协调文档生成和摘要工具。Anthropic Claude Sonnet 4.6(Amazon Bedrock 提供)负责内容生成,Amazon Titan Text Embeddings v2 提供向量搜索能力,Stability AI Stable Image Inpaint(Amazon Bedrock 提供)生成幻灯片图像。本文包含包含代码资产的公开代码仓库。

解决方案概述

该解决方案在 Amazon Bedrock AgentCore 运行时部署单个监督代理,根据用户请求在文档生成工具和摘要工具之间进行选择。检索增强生成(RAG)管道使用 Amazon OpenSearch Serverless 进行向量存储,并在多模态内容上执行语义搜索。

该解决方案使用 .NET 8 最小 API 构建了 REST API,因此可以通过标准 HTTP 调用与现有企业应用程序集成。AWS Lambda 提供无服务器计算,包括用于生成 PowerPoint 的容器化函数。解决方案通过 Amazon Virtual Private Cloud(Amazon VPC)隔离、AWS Key Management Service(AWS KMS)加密以及 AWS Identity and Access Management(IAM)最小权限访问控制来保障实现安全。

关键概念

本节将介绍 AgentCore 运行时、RAG 和内容安全防护措施在本解决方案中的应用。

使用 Amazon Bedrock AgentCore 的代理编排

从大型知识库生成文档的单一 AI 代理需要执行内容检索、结构规划、文本生成、图像创建和文件组装等任务。而不是在单个函数中实现这些相互竞争的责任,该解决方案采用基于工具的架构,由监督代理将请求路由到专用工具。

Amazon Bedrock AgentCore 运行时提供了一个平台,可以使用任何框架或模型大规模构建、连接和优化代理。代理代码在隔离容器中运行,包含会话管理、内置身份验证和可观测性功能。该解决方案使用 Strands Agents 框架(一个用于构建 AI 代理的开源 SDK)实现监督逻辑。

监督代理暴露两个工具:

  • generate_pptx:通过调用 PPTX Generator Lambda 函数生成 PowerPoint 演示文稿,该函数从知识库检索内容,生成幻灯片大纲,创建 AI 图像并组装最终文档。
  • generate_summary:使用 RAG 从知识库中提取并合成信息,提供准确且基于原始内容的响应。

代理会判断请求是否需要生成文档、内容摘要或两者都需要,然后调用相应的工具。您可以通过在代理代码中定义新工具来添加新功能,而无需修改现有工具。

企业知识的检索增强生成(RAG)

RAG解决了AI系统中的一个根本性挑战:基于企业数据提供准确、最新的信息,而不是仅依赖模型的训练数据。该实现使用Amazon Bedrock知识库,将向量搜索与大型语言模型(LLMs)结合,先检索相关上下文,再生成响应。

RAG流程如下:

  • 您将企业文档上传到Amazon Simple Storage Service(Amazon S3)。
  • 系统对文档进行分块和解析,对表格、图表和图像等多模态内容进行特殊处理。
  • Amazon Titan Text Embeddings v2将每个分块转换为捕捉语义含义的高维向量。
  • Amazon OpenSearch Serverless存储这些向量,创建可搜索的向量数据库。
  • 查询时,系统将用户的请求转换为嵌入向量,执行相似性搜索以检索相关文档分块。
  • 检索到的分块为语言模型提供上下文,模型根据源材料生成响应。

这种方法旨在通过将生成的文档基于企业知识库中的源信息,减少幻觉内容的出现。

注意:Amazon OpenSearch Serverless集合的数据平面必须保持公开可访问,因为Amazon Bedrock知识库通过AWS托管基础设施访问Amazon OpenSearch Serverless,而不是通过客户VPC端点。IAM数据访问策略保护集合,VPC专用访问限制Amazon OpenSearch Serverless仪表板。

Amazon Bedrock Guardrails内容安全机制

企业AI应用需要内容审核以满足组织标准和合规要求。Amazon Bedrock Guardrails提供内置的内容过滤和安全机制,集成在文档生成流程的各个环节。

Guardrails在多个阶段运行:

  • 输入处理:过滤用户请求,帮助防止注入问题和不当内容。
  • 输出生成:监控模型输出,验证是否符合内容策略。
  • 个人身份信息(PII)处理:检测并匿名化或阻止PII。

该实现通过AWS Cloud Development Kit(AWS CDK)创建自定义Guardrails,配置针对企业文档生成的特定策略。代理在模型调用级别应用Guardrails,在无需为每次部署手动配置的情况下提供一致的内容安全。

解决方案架构

下图说明了基于代理的文档生成系统。

Figure 1: Amazon Bedrock AgentCore RAG演示生成系统的架构

数据流从用户请求通过Amazon API Gateway到达,API Gateway将其路由到运行在AWS Lambda上的.NET Chat API。API在Amazon DynamoDB中维护对话状态,然后调用托管在Amazon Bedrock AgentCore运行时的监督代理。

监督代理分析请求并选择合适的工具。生成文档时,它会调用 PPTX Generator Lambda(一个容器化的 Python 函数)。进行摘要时,监督代理会调用 Summary Generator Lambda,该工具通过 retrieve_and_generate API 查询知识库。

系统使用 Amazon Titan Text Embeddings v2 对存储在 Amazon S3 中的文档进行处理、分块和嵌入。Amazon OpenSearch Serverless 对嵌入内容进行索引以实现快速语义搜索。当工具查询知识库时,Amazon OpenSearch Serverless 会检索相关分块内容,并将其作为上下文提供给运行在 Amazon Bedrock 上的 Anthropic Claude Sonnet 4.6 以生成基于事实的响应。

系统将生成的文档存储在 Amazon S3 中,并返回预签名 URL 以实现安全下载。安全措施包括:

  • 在 Amazon API Gateway 上配置 AWS WAF 管理规则集和基于 IP 的速率限制。
  • 使用 Plus 功能计划和高级安全模式的 Amazon Cognito 实现威胁防护。
  • 通过 AWS CDK 部署的 Amazon Bedrock Guardrails 实现一致的内容过滤。
  • Amazon DynamoDB 配置了时间点恢复、删除保护和客户管理的 AWS KMS 加密。
  • Amazon S3 存储桶启用版本控制、服务器访问日志和阻止公共访问。
  • 在 Lambda 函数上启用 AWS X-Ray 跟踪以实现分布式调试。
  • 使用正则表达式验证租户 ID 和会话 ID 实现输入验证。
  • 通过 AWS Security Token Service (AWS STS) 按租户进行角色假设实现租户隔离。

先决条件

部署前需要在环境中配置以下工具和访问权限:

  • AWS 环境:具有基础设施部署权限的活动 AWS 账户。已使用凭证配置的 AWS 命令行界面 (AWS CLI)。具有适当服务访问策略的 IAM 角色。
  • 开发工具:已全局安装 Amazon.Lambda.Tools 的 .NET SDK 8。用于 AWS CDK 和 Lambda 函数的 Python 3.12 或更高版本。用于基础设施部署的 Node.js 和 AWS CDK CLI。用于构建容器镜像的 Docker 或 Finch(需支持 ARM64)。
  • AWS 服务访问权限:Amazon Bedrock 上的 Anthropic Claude Sonnet 4.6、Amazon Titan Text Embeddings v2 和 Stability AI Stable Image Inpaint 模型访问权限(通过 Amazon Bedrock 提供)。有关各区域模型可用性信息,请参阅 Amazon Bedrock 的 AWS 区域支持模型列表。账户中已启用 Amazon Bedrock AgentCore 访问权限。Amazon API Gateway 区域 REST API 集成超时时间配置为至少 300 秒(默认为 29 秒)。有关详细信息,请参阅 API Gateway 配额。现有 Amazon VPC 和私有子网。用于部署工件的 Amazon S3 存储桶。

设置解决方案

设置过程包括配置部署参数和初始化 AWS CDK 环境。

  • 克隆仓库并进入项目目录:git clone https://github.com/aws-samples/sample-generating-powerpoint-presentations-with-amazon-bedrock.git
  • 在仓库根目录创建配置文件 pipeline-params.ini:environment=dev awscliprofile= ContainerRegistry=lambda-pptx-gen AgentContainerRegistry=agentcore-supervisor BucketDev=<amzn-s3-demo-bucket> VpcId=<your-vpc-id> ParsingInferenceProfileId=us.anthropic.claude-haiku-4-5-20251001-v1:0 AgentInferenceProfileId=us.anthropic.claude-sonnet-4-6 EmbeddingModelId=amazon.titan-embed-text-v2:0 ImageGenerationModelId=stability.stable-image-inpaint-v1:0 PPTXGenImageTag=latest AgentImageTag=latest 将 awscliprofile 设置为您的 AWS CLI 配置文件名称,或留空以使用环境变量凭证。
  • 初始化 AWS CDK(每个账户和区域只需一次):cdk bootstrap 该命令会创建 AWS CloudFormation CDKToolkit 堆栈,这是 AWS CDK 部署所必需的。
  • 使构建脚本可执行:chmod +x ./pipeline-build.sh chmod +x ./pipeline-deploy.sh chmod +x ./deploy-agentcore.sh

构建与部署

部署过程包含三个阶段:构建制品、部署基础设施、部署 AgentCore 运行时代理。

构建阶段

构建阶段编译应用程序代码并打包部署制品。运行构建脚本:

code
./pipeline-build.sh

该脚本会编译 .NET 项目(聊天 API)并将其打包为 Lambda 部署包。使用 Docker 或 Finch 构建 PPTX 生成器容器镜像,并与 Amazon 弹性容器注册表(Amazon ECR)进行身份验证。随后将容器镜像推送到仓库,并将构建制品存储在 asset-output 目录中。

基础设施部署阶段

基础设施部署阶段创建 AWS 资源并配置服务集成。运行部署脚本:

code
./pipeline-deploy.sh

该部署会按依赖顺序创建四个 AWS CloudFormation 堆栈:

  • VPCEndpointsStack:为包括 Amazon Bedrock AgentCore 在内的 AWS 服务配置 Amazon VPC 端点。
  • OpensearchStack:为向量存储提供 Amazon OpenSearch Serverless 集群。
  • AgentCoreStack:创建防护规则、Lambda 函数、IAM 角色,并在 AWS 系统管理器参数存储中保存配置。
  • ChatApiStack:部署 Amazon API Gateway 和聊天 API Lambda。

AgentCore 运行时部署

基础设施堆栈部署完成后,将监督代理部署到 AgentCore 运行时:

code
./deploy-agentcore.sh

该脚本会构建监督代理容器(ARM64),将其推送到 Amazon ECR,创建 AgentCore 运行时和端点,并更新系统管理器参数中的端点 Amazon 资源名称(ARN)。聊天 API 通过此端点 ARN 将请求路由到代理。

部署完成后,AWS CloudFormation 输出包含 Amazon API Gateway 端点 URL 和资源标识符。

配置

该解决方案提供多个配置选项:

代理指令

编辑 agent/app.py 修改监督代理的系统提示和行为。代理使用 Strands Agents,其中 agent/tools.py 定义了两个工具:

  • generate_pptx:调用 PPTX 生成器 Lambda 进行文档创建。
  • generate_summary:调用摘要生成器 Lambda 进行知识库查询。

模型选择

在 pipeline-params.ini 中调整模型标识符:

  • ParsingInferenceProfileId:知识库文档解析模型(推荐使用 Anthropic Claude Haiku 4.5 以提高成本效率)。
  • AgentInferenceProfileId:代理推理模型(推荐使用 Anthropic Claude Sonnet 4.6)。
  • EmbeddingModelId:用于向量搜索的嵌入模型(Amazon Titan Text Embeddings v2)。
  • ImageGenerationModelId:用于幻灯片图像生成的模型(Stability AI Stable Image Inpaint)。

使用推理配置文件而非直接模型ID时,请求可以调用更广泛的多区域资源池,从而提高吞吐量并在负载下保持性能稳定性。

Lambda配置

在堆栈文件中调整计算资源:

  • Chat API:128 MB内存,29秒超时,100个保留并发量(在api.py中)。
  • PPTX生成器:900 MB内存,300秒超时,50个保留并发量(在pptx_gen.py中)。
  • 摘要生成器:512 MB内存,300秒超时,50个保留并发量(在sum_gen.py中)。

结果

在内部测试中使用90页的Amazon 2024年度报告PDF时,该解决方案产生了以下性能指标:

  • 演示文稿生成时间:端到端耗时70-90秒(包括知识库检索、内容生成、图像创建和文件组装)。
  • 幻灯片数量:包含标题、要点、图文结合、纯图像和要点总结等格式的6张幻灯片。
  • 图像生成:每场演示使用Stability AI Stable Image Inpaint生成2张AI图像。
  • 每次生成成本:在us-east-1区域撰写时,模型调用成本约为0.04美元(文本和图像生成,其中图像生成占主要成本)。
  • 知识库摄入:单个1.3 MB PDF文档的摄入时间少于2分钟。

PowerPoint演示文稿

以下图表展示了生成演示文稿的示例幻灯片。

图2:带可自定义品牌标识的生成标题页

图3:带要点的生成内容页

图4:结合文本与AI生成图像的生成幻灯片

图5:总结盈利指标的生成内容页

图6:带AI生成视觉效果的纯图像幻灯片

图7:生成的要点总结页

生成的演示文稿包含:

  • 带可自定义品牌标识的标题页。
  • 带要点和结构化文本的内容页。
  • 使用Stability AI Stable Image Inpaint(在Amazon Bedrock上)生成视觉效果的图像页。
  • 带演示指导的演讲者备注。
  • 基于企业模板的一致格式。

摘要

提供给知识库的摘要输出包括:

  • 知识库内容的简洁综合。
  • 对来源文档的引用追踪。
  • 带关键点突出显示的结构化格式。

API响应

Chat API返回:

  • 用于实时用户反馈的流式响应。由于内部测试显示演示文稿生成需要70-90秒(超过Amazon API Gateway默认29秒的集成超时时间),Chat API使用异步调用模式。请使用流式传输或轮询接收最终结果,而非等待同步REST调用。
  • 跨多轮对话的上下文维护。
  • 用于文档下载的Amazon S3预签名URL(5分钟过期)。

生成内容在交付前会通过Amazon Bedrock Guardrails验证以确保符合内容政策。

  • 删除 AgentCore 运行时和端点:aws bedrock-agentcore-control delete-agent-runtime-endpoint \ --agent-runtime-id <runtime-id> \ --agent-runtime-endpoint-id <endpoint-id> aws bedrock-agentcore-control delete-agent-runtime \ --agent-runtime-id <runtime-id>
  • 关闭 Amazon DynamoDB 删除保护(在删除堆栈前需要执行):aws dynamodb update-table --table-name chat-sessions-dev --no-deletion-protection-enabled aws dynamodb update-table --table-name tenant-table-dev --no-deletion-protection-enabled
  • 按依赖逆序删除 AWS CloudFormation 堆栈:aws cloudformation delete-stack --stack-name ChatApiStack aws cloudformation delete-stack --stack-name AgentCoreStack aws cloudformation delete-stack --stack-name OpensearchStack aws cloudformation delete-stack --stack-name VPCEndpointsStack
  • 删除 AWS CloudFormation 堆栈前清空 Amazon S3 存储桶(AWS CloudFormation 无法删除非空存储桶):aws s3 rm s3://amzn-s3-demo-bucket --recursive
  • 删除包含容器镜像的 Amazon ECR 仓库:aws ecr delete-repository --repository-name lambda-pptx-gen --force aws ecr delete-repository --repository-name agentcore-supervisor --force
  • 删除租户知识库子堆栈(由租户配置器创建):aws cloudformation delete-stack --stack-name bedrock-kb-<tenant-id>

安全考虑

该解决方案使用 Lambda 环境变量存储配置值,如模型 ID、Amazon S3 存储桶名称和护栏 ID。这些是资源标识符,而非敏感信息。对于生产环境部署,应使用 AWS Secrets Manager 管理 API 密钥和数据库凭证等敏感配置值。

AgentCore 运行时代理在隔离容器中运行,具备会话级隔离。每个用户会话都在独立环境中运行,有助于防止跨会话数据污染。

结论

在本文中,你构建了一个基于 Amazon Bedrock AgentCore 的 AI 代理系统,用于自动化企业文档生成。部署在 AgentCore 运行时的监督代理将请求路由到专用工具进行文档创建和摘要生成,在内部测试中将演示文稿创建时间缩短至约 90 秒。

RAG 流程将生成内容与源文档关联,Amazon Bedrock 护栏验证内容合规性。你可以将此架构应用于金融服务业的自动化报告生成、工程团队的技术文档编写,或销售组织的提案创建。

要开始使用,请克隆 GitHub 仓库并按照设置说明操作。如需了解所使用服务的更多信息,请参阅 Amazon Bedrock AgentCore 文档、Strands Agents SDK 和 AWS CDK 开发者指南。

作者简介

'"` /think