用 Amazon Bedrock AgentCore 构建自动生成演示文稿的 AI 智能体
Generate presentations with Amazon Bedrock AgentCore
AWS 官方博客介绍如何用 Amazon Bedrock AgentCore 构建自动生成 PowerPoint 演示文稿的 AI 智能体系统,内部测试中端到端生成耗时 70–90 秒。
原文给出可复用的 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 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 到达的用户请求,后者将其路由到运行在 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。
- 使用 Amazon Cognito,并启用 Plus 功能计划和高级安全模式以提供威胁防护。
- 通过 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:
- 具有 Anthropic Claude Sonnet 4.6、Amazon Titan Text Embeddings v2 和 Stability AI Stable Image Inpaint 模型访问权限的 Amazon Bedrock(可通过 Amazon Bedrock 使用)。有关各区域的模型可用性,请参阅 Amazon Bedrock 中按 AWS 区域支持的模型。
- 在您的账户中启用了 Amazon Bedrock AgentCore 访问权限。
- 将 Amazon API Gateway 区域 REST API 集成超时配置为至少 300 秒。默认值为 29 秒。有关更多信息,请参阅 API Gateway 配额。
- 具有私有子网的现有 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 运行时部署
基础设施堆栈部署完成后,将 supervisor agent 部署到 AgentCore 运行时:
./deploy-agentcore.sh该脚本构建 supervisor agent 容器(ARM64),将其推送到 Amazon ECR,创建 AgentCore 运行时和终端节点,并使用终端节点 Amazon Resource Name (ARN) 更新 Systems Manager 参数。Chat API 引用此终端节点 ARN 以将请求路由到 agent。
部署完成后,AWS CloudFormation 输出包括 Amazon API Gateway 终端节点 URL 和资源标识符。
配置
该解决方案提供了多个配置点:
Agent 指令
编辑 agent/app.py 以修改 supervisor agent 的系统提示和行为。该 agent 使用 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:用于 agent 推理的模型(推荐使用 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 构建了一个 AI 代理系统,用于自动化企业文档生成。部署在 AgentCore 运行时上的监督代理将请求路由到用于文档创建和摘要的专用工具,在内部测试中将演示文稿创建时间缩短至约 90 秒。
RAG 管道将生成的内容建立在源文档的基础上,Amazon Bedrock Guardrails 验证内容合规性。您可以将此架构应用于金融服务中的自动化报告生成、工程团队的技术文档或销售组织的提案创建。
要开始使用,请克隆 GitHub 仓库 并按照设置说明操作。有关所用服务的更多信息,请参阅 Amazon Bedrock AgentCore 文档、Strands Agents SDK 和 AWS CDK 开发人员指南。
关于作者
Dr. Ian Lunsford
Ian 是 AWS Professional Services 的航空航天 AI/ML 工程师。他将云服务集成到航空航天应用和系统中。Ian 专注于使用 AWS 服务构建 AI/ML 解决方案。
Neil Kamin
Neil 是 AWS Professional Services 的 AWS 数据/AI 服务高级交付顾问。他负责开发 AWS 基础设施。
Stephen Morgan
Stephen 是 AWS Professional Services 的交付顾问。他负责开发 AWS 基础设施。
来源:AWS Machine Learning Blog · aws.amazon.com






