教程使用 Amazon Bedrock AgentCore 构建自动生成 PowerPoint 的 Agent 系统,结合监督 Agent、RAG 和 Guardrails。文中称该系统可在 90 秒内生成有文档依据的演示文稿。
某金融服务团队每周都要花费大量时间,根据季度报告、合规文档和市场分析,手动为客户制作 PowerPoint 演示文稿。每份演示文稿都需要阅读数百页资料、提取关键数据点、组织幻灯片结构,并生成配套视觉素材。本文将带你使用 Amazon Bedrock AgentCore 构建一个 AI 智能体系统,自动完成这一工作流程。在我们的内部测试中,整个流程可在 90 秒内完成。这种方法既能缩短演示文稿的制作时间,又能确保内容以源文档为依据。该解决方案在 Amazon Bedrock AgentCore 提供的 AgentCore runtime 上部署一个监督智能体,使用 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 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 runtime、RAG 和内容安全护栏。
单个 AI 智能体要根据大型知识库生成文档,就必须完成内容检索、提纲组织、文本生成、图片创建和文件组装等任务。该解决方案没有将这些相互争用的职责全部实现在一个单体函数中,而是采用基于工具的架构,由监督智能体将请求路由到专门的工具。
Amazon Bedrock AgentCore runtime 提供了一个平台,可使用任意框架或模型,大规模构建、连接和优化智能体。智能体代码在隔离的容器中运行,具备会话管理、内置身份和可观测性能力。该解决方案使用 Strands Agents 框架(一个用于构建 AI 智能体的开源 SDK)实现监督逻辑。
监督智能体提供两个工具:
generate_pptx:调用 PPTX Generator Lambda 函数创建 PowerPoint 演示文稿。该函数从知识库中检索内容、生成幻灯片提纲、创建 AI 图片,并组装最终文档。generate_summary:使用 RAG 从知识库中提取并综合信息,提供准确且有据可依的回答。智能体会判断请求需要生成文档、汇总内容,还是两者兼有,然后调用相应工具。你可以在智能体代码中定义新工具来添加能力,无须修改现有工具。
RAG 解决了 AI 系统面临的一个根本性难题:如何基于企业数据提供准确、最新的信息,而不是仅仅依赖模型的训练数据。该实现使用 Amazon Bedrock Knowledge Bases,将向量搜索与大语言模型(LLM)相结合,在生成回答之前检索相关上下文。
RAG 流水线的工作流程如下:
这种方法通过让生成的文档以企业知识库中的源信息为依据,帮助减少幻觉内容。
注意:Amazon OpenSearch Serverless 集合的数据平面必须保持可通过公有网络访问,因为 Amazon Bedrock Knowledge Bases 是从 AWS 托管的基础设施访问 Amazon OpenSearch Serverless,而不是通过客户的 VPC 端点。IAM 数据访问策略负责保护该集合,而 Amazon OpenSearch Serverless 控制面板则限制为仅通过 VPC 访问。
企业 AI 应用需要进行内容审核,以满足组织标准和合规要求。Amazon Bedrock Guardrails 提供内置的内容过滤和安全机制,并将其集成到整个文档生成流水线中。
护栏在多个阶段发挥作用:
该实现通过 AWS Cloud Development Kit(AWS CDK)创建自定义护栏,并配置专门针对企业文档创建场景的策略。智能体在模型调用层面应用护栏,提供一致的内容安全保障,无须在每次部署时手动配置。
下图展示了基于智能体的文档生成系统。
图 1:Amazon Bedrock AgentCore RAG 演示文稿生成系统架构
数据流始于用户请求进入 Amazon API Gateway,随后由其将请求路由到运行在 AWS Lambda 上、基于 .NET 构建的 Chat API。该 API 在 Amazon DynamoDB 中维护对话状态,然后调用托管在 Amazon Bedrock AgentCore runtime 上的监督智能体。
监督智能体分析请求并选择合适的工具。对于文档生成任务,它会调用 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。安全措施包括:
部署之前,你需要在环境中配置好以下工具和访问权限:
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 存储桶。
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
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 配置文件名称,或留空以使用环境变量中的凭证。
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 CDK 部署所需的 AWS CloudFormation CDKToolkit 堆栈。
cdk bootstrap
这会创建 AWS CDK 部署所需的 AWS CloudFormation CDKToolkit 堆栈。
为构建脚本添加执行权限:chmod +x ./pipeline-build.sh chmod +x ./pipeline-deploy.sh chmod +x ./deploy-agentcore.sh
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:为 AWS 服务配置 Amazon VPC 端点,包括 Amazon Bedrock AgentCore。
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,可以让请求利用覆盖多个区域的更大容量池,从而提高吞吐量,并帮助系统在高负载下保持稳定的性能。
在堆栈文件中调整计算资源:
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 年年度报告 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 视觉内容的图像幻灯片。
包含演示指导的演讲者备注。
基于企业模板的统一格式。
提供给知识库的摘要输出包括:
对知识库内容的简明综合概述。
可追溯至源文档的引用。
突出关键要点的结构化格式。
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>
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 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 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
删除前清空 Amazon S3 存储桶(AWS CloudFormation 无法删除非空存储桶):aws s3 rm s3://amzn-s3-demo-bucket --recursive
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 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>
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 开发者指南。