使用 Amazon Bedrock AgentCore 自动生成演示文稿
Generate presentations with Amazon Bedrock AgentCore
这是一篇 AWS 教程,介绍如何用 Amazon Bedrock AgentCore 构建 AI 智能体系统,自动将季度报告、合规文档和市场分析生成客户 PowerPoint 演示文稿,内部测试中整个流程不到 90 秒即可完成。
某金融服务团队每周都要花费大量时间,手动从季度报告、合规文件和市场分析中创建客户 PowerPoint 演示文稿。每份演示文稿都需要阅读数百页内容、提取关键数据点、组织幻灯片结构,并生成配套的视觉素材。本文将带你构建一个基于 Amazon Bedrock AgentCore 的智能体系统,将该工作流自动化,在我们内部测试中可在 90 秒内完成。这种方法在缩短演示文稿创建时间的同时,还能使内容有源文档作为依据。该方案在 AgentCore runtime(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 runtime 上部署了一个单一的主管智能体,根据用户请求在文档生成工具和摘要工具之间进行选择。检索增强生成(RAG)流水线使用 Amazon OpenSearch Serverless 对多模态内容进行向量存储和语义搜索。
该解决方案包含一个用 .NET 8 minimal APIs 构建的 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 runtime、RAG 以及内容安全防护机制,并说明它们在该解决方案中的应用。
使用 Amazon Bedrock AgentCore 进行智能体编排
一个从大型知识库生成文档的单一 AI 智能体,必须完成检索内容、组织大纲、生成文本、创建图像和组装文件等任务。该解决方案没有在单个单体函数中实现这些相互竞争的职责,而是采用了基于工具的架构,由主管智能体将请求路由到专门的工具。
Amazon Bedrock AgentCore runtime 提供了一个平台,可使用任意框架或模型大规模构建、连接和优化智能体。智能体代码运行在隔离的容器中,具备会话管理、内置身份和可观测性。该解决方案使用 Strands Agents 框架(一个用于构建 AI 智能体的开源 SDK)来实现主管逻辑。
主管智能体提供两个工具:
- generate_pptx:通过调用 PPTX Generator Lambda 函数创建 PowerPoint 演示文稿,该函数从知识库中检索内容、生成幻灯片大纲、创建 AI 图像并组装最终文档。
- generate_summary:使用 RAG 从知识库中提取并综合信息,以提供准确、有据可依的回答。
该智能体判断请求是需要文档生成、内容摘要,还是两者都需要,然后调用相应的工具。你可以通过在智能体代码中定义新工具来添加新功能,而无需修改现有工具。
面向企业知识的检索增强生成(RAG)
RAG 解决了 AI 系统中的一个根本挑战:提供基于企业数据的准确、最新的信息,而不是仅仅依赖模型的训练数据。该实现使用了 Amazon Bedrock Knowledge Bases,它将向量搜索与大语言模型(LLM)相结合,在生成响应之前检索相关上下文。
RAG 流水线的工作流程如下:
- 您将企业文档上传到 Amazon Simple Storage Service (Amazon S3)。
- 系统对文档进行分块和解析,并对包括表格、图表和图像在内的多模态内容进行特殊处理。
- Amazon Titan Text Embeddings v2 将每个分块转换为捕获语义含义的高维向量。
- Amazon OpenSearch Serverless 存储这些向量,创建一个可搜索的向量数据库。
- 在查询时,系统将用户的请求转换为嵌入向量,并执行相似性搜索以检索相关的文档分块。
- 检索到的分块为语言模型提供上下文,使其生成基于源材料的响应。
这种方法旨在通过让生成的文档基于企业知识库中的源信息,帮助减少幻觉内容。
注意:Amazon OpenSearch Serverless 集合的数据平面必须保持可公开访问,因为 Amazon Bedrock Knowledge Bases 是从 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,无需为每次部署进行手动配置即可提供一致的内容安全。
解决方案架构
下图展示了基于智能体的文档生成系统。
图 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 会检索相关文本块,然后将其作为上下文提供给 Anthropic Claude Sonnet 4.6(通过 Amazon Bedrock),以生成有依据的回复。
系统将生成的文档存储在 Amazon S3 中,并返回预签名 URL 以供安全下载。安全措施包括:
- 在 Amazon API Gateway 上使用带托管规则集和基于 IP 的速率限制的 AWS WAF。
- 使用 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 environment:
- 一个具有基础设施部署权限的活跃 AWS 账户。
- 已配置凭证的 AWS Command Line Interface (AWS CLI)。
- 具有相应服务访问策略的 IAM 角色。
- Development tools:
- 全局安装了 Amazon.Lambda.Tools 的 .NET SDK 8。
- 用于 AWS CDK 和 Lambda 函数的 Python 3.12 或更高版本。
- 用于基础设施部署的 Node.js 和 AWS CDK CLI。
- 用于构建容器镜像的 Docker 或 Finch(需要支持 ARM64)。
- AWS services access:
- Amazon Bedrock 已开启以下模型的模型访问权限:Anthropic Claude Sonnet 4.6、Amazon Titan Text Embeddings v2 以及 Stability AI Stable Image Inpaint(可通过 Amazon Bedrock 获得)。有关各区域模型可用性,请参阅 Supported models by AWS Region in Amazon Bedrock。
- 您的账户中已启用 Amazon Bedrock AgentCore 访问权限。
- Amazon API Gateway 区域 REST API 集成超时时间配置为至少 300 秒。默认值为 29 秒。更多信息请参阅 API Gateway quotas。
- 一个带有私有子网的现有 Amazon VPC。
- 一个用于部署工件的 Amazon S3 存储桶。
设置解决方案
设置过程包括配置部署参数和初始化 AWS CDK 环境。
- Clone the repository and navigate to the project directory:
git clone https://github.com/aws-samples/sample-generating-powerpoint-presentations-with-amazon-bedrock.git - Create the configuration file
pipeline-params.iniat the repository root: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 配置文件名称,或留空以使用环境变量凭证。 - Bootstrap AWS CDK (one-time per account and Region):
cdk bootstrap这将创建 AWS CDK 部署所需的 AWS CloudFormation CDKToolkit 堆栈。
- Make build scripts executable:
chmod +x ./pipeline-build.sh chmod +x ./pipeline-deploy.sh chmod +x ./deploy-agentcore.sh
构建和部署
部署分为三个阶段:构建工件、部署基础设施以及部署 AgentCore 运行时智能体。
构建阶段
构建阶段编译应用程序代码并打包部署工件。运行构建脚本:
./pipeline-build.sh此步骤会编译 .NET 项目(Chat API),并将其打包为 Lambda 部署包。它会使用 Docker 或 Finch 构建 PPTX Generator 容器镜像,并与 Amazon Elastic Container Registry(Amazon ECR) 完成身份验证。随后推送容器镜像,并将构建工件存储在 asset-output 目录中。
基础设施部署阶段
基础设施部署会创建 AWS 资源并配置服务集成。运行部署脚本:
./pipeline-deploy.sh该部署按依赖顺序创建四个 AWS CloudFormation 堆栈:
- VPCEndpointsStack:为包括 Amazon Bedrock AgentCore 在内的 AWS 服务配置 Amazon VPC 终端节点。
- OpensearchStack:预置用于向量存储的 Amazon OpenSearch Serverless 集合。
- AgentCoreStack:创建防护栏、Lambda 函数和 IAM 角色,并将配置存储在 AWS Systems Manager Parameter Store 中。
- ChatApiStack:部署 Amazon API Gateway 和 Chat API Lambda。
AgentCore 运行时部署
在基础设施堆栈部署完成后,将主管智能体部署到 AgentCore 运行时:
./deploy-agentcore.sh此脚本构建主管智能体容器(ARM64),将其推送到 Amazon ECR,创建 AgentCore 运行时和端点,并使用端点的 Amazon 资源名称(ARN)更新 Systems Manager 参数。Chat API 引用该端点 ARN,将请求路由到智能体。
部署完成后,AWS CloudFormation 输出将包含 Amazon API Gateway 端点 URL 和资源标识符。
配置
该解决方案提供了多个配置点:
智能体指令
编辑 agent/app.py 以修改主管智能体的系统提示词和行为。该智能体使用 Strands Agents,并定义了 agent/tools.py 中的两个工具:
- generate_pptx:调用 PPTX Generator Lambda 进行文档创建。
- generate_summary:调用 Summary Generator 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 Generator:900 MB 内存,300 秒超时,50 个预留并发(位于
pptx_gen.py中)。 - Summary Generator:512 MB 内存,300 秒超时,50 个预留并发(位于
sum_gen.py中)。
结果
在使用一份 90 页的 Amazon 2024 Annual Report PDF 进行的内部测试中,该解决方案产生了以下性能指标:
- 演示文稿生成时间:端到端 70–90 秒(包括知识库检索、内容生成、图像创建和文件组装)。
- 幻灯片数量:六张幻灯片,涵盖标题、要点、图文组合、纯图像和总结等格式。
- 图像生成:每次演示文稿使用 Stability AI Stable Image Inpaint 生成两张 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 上)生成的 AI 视觉图像幻灯片。
- 带有演示指导的演讲者备注。
- 基于公司模板的一致格式。
摘要
提供给知识库的摘要输出包括:
- 对知识库内容的简明综合。
- 对源文档的引用追踪。
- 结构化格式并突出显示关键要点。
API 响应
Chat API 返回:
- 用于实时用户反馈的流式响应。由于内部测试显示演示文稿生成需要 70–90 秒(超出了 Amazon API Gateway 默认的 29 秒集成超时时间),Chat API 采用异步调用模式。请使用流式传输或轮询来接收最终结果,而不是等待同步 REST 调用。
- 跨多轮对话的上下文维护。
- 用于文档下载的 Amazon S3 预签名 URL(5 分钟有效期)。
生成的内容在交付前会经过 Amazon Bedrock Guardrails 验证,以确保符合内容政策。
清理
为避免持续产生费用,请删除已部署的资源:
- Delete the AgentCore runtime and endpoint:
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> - Turn off Amazon DynamoDB deletion protection (required before stack deletion):
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 - Delete AWS CloudFormation stacks in reverse dependency order:
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 - Empty Amazon S3 buckets before deletion (AWS CloudFormation cannot delete non-empty buckets):
aws s3 rm s3://amzn-s3-demo-bucket --recursive - Delete Amazon ECR repositories containing container images:
aws ecr delete-repository --repository-name lambda-pptx-gen --force aws ecr delete-repository --repository-name agentcore-supervisor --force - Delete tenant knowledge base sub-stacks (created by the tenant provisioner):
aws cloudformation delete-stack --stack-name bedrock-kb-<tenant-id>
安全注意事项
此解决方案使用 Lambda 环境变量来存储配置值,例如模型 ID、Amazon S3 存储桶名称和护栏 ID。这些是资源标识符,而非机密信息。在生产部署中,请使用 AWS Secrets Manager 来存储敏感的配置值,例如 API 密钥和数据库凭证。
AgentCore 运行时智能体在具有会话级隔离的隔离容器中运行。每个用户会话都在专用环境中运行,有助于防止跨会话的数据污染。
结论
在本文中,您使用 Amazon Bedrock AgentCore 构建了一个自动执行企业文档生成的智能体系统。部署在 AgentCore 运行时上的监督智能体将请求路由到专用于文档创建和摘要的工具,在内部测试中将演示文稿的创建时间缩短至约 90 秒。
RAG 流水线将生成的内容基于源文档,Amazon Bedrock Guardrails 验证内容合规性。您可以将此架构应用于金融服务中的自动化报告生成、工程团队的技术文档编写,或销售机构的提案创建。
要开始使用,请克隆 GitHub 代码库 并按照设置说明操作。有关所用服务的更多信息,请参阅 Amazon Bedrock AgentCore 文档、Strands Agents SDK 和 AWS CDK 开发人员指南。
关于作者
来源:AWS Machine Learning Blog · aws.amazon.com






