금융 서비스 팀은 분기 보고서, 규정 준수 문서, 시장 분석 자료로부터 고객용 PowerPoint 프레젠테이션을 매주 수작업으로 만드는 데 상당한 시간을 소비합니다. 각 프레젠테이션은 수백 페이지를 읽고, 핵심 데이터 포인트를 추출하고, 슬라이드를 구성하고, 보조 시각 자료를 생성하는 작업을 필요로 합니다. 이 게시물은 이 워크플로를 자동화하는 AI 에이전트 시스템을 다음을 사용하여 구축하는 과정을 안내합니다: 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은 어떤 프레임워크나 모델을 사용하더라도 대규모로 에이전트를 구축, 연결, 최적화할 수 있는 플랫폼을 제공합니다. 에이전트 코드는 세션 관리, 내장 ID, 관찰 가능성을 갖춘 격리된 컨테이너에서 실행됩니다. 이 솔루션은 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 는 벡터를 저장하여 검색 가능한 벡터 데이터베이스를 생성합니다.
- 쿼리 시점에 시스템은 사용자의 요청을 임베딩으로 변환하고 유사성 검색을 수행하여 관련 문서 청크를 검색합니다.
- 검색된 청크는 언어 모델에 컨텍스트를 제공하며, 언어 모델은 원본 자료에 근거한 응답을 생성합니다.
이 접근 방식은 생성된 문서를 기업 지식 베이스의 원본 정보에 근거하게 함으로써 환각(hallucinated) 콘텐츠를 줄이는 데 도움이 되도록 설계되었습니다.
참고: Amazon OpenSearch Serverless 컬렉션 데이터 플레인은 퍼블릭하게 액세스 가능한 상태를 유지해야 합니다. Amazon Bedrock Knowledge Bases가 고객 VPC 엔드포인트가 아닌 AWS 관리형 인프라에서 Amazon OpenSearch Serverless에 액세스하기 때문입니다. IAM 데이터 액세스 정책이 컬렉션을 보호하며, VPC 전용 액세스는 Amazon OpenSearch Serverless 대시보드를 제한합니다.
콘텐츠 안전을 위한 Amazon Bedrock Guardrails
엔터프라이즈 AI 애플리케이션은 조직의 표준 및 규정 준수 요구 사항을 충족하기 위해 콘텐츠 모더레이션이 필요합니다. Amazon Bedrock Guardrails 는 문서 생성 파이프라인 전반에 통합된 기본 제공 콘텐츠 필터링 및 안전 메커니즘을 제공합니다.
Guardrails는 여러 단계에서 작동합니다:
- 입력 처리: 사용자 요청을 필터링하여 인젝션 문제 및 부적절한 콘텐츠를 방지하도록 지원합니다.
- 출력 생성: 모델 출력을 모니터링하여 콘텐츠 정책 준수 여부를 검증합니다.
- 개인 식별 정보(PII) 처리: PII를 탐지하여 익명화하거나 차단합니다.
이 구현에서는 다음을 통해 사용자 지정 guardrails를 생성합니다. AWS Cloud Development Kit (AWS CDK)이는 엔터프라이즈 문서 생성에 맞게 조정된 특정 정책으로 구성됩니다. 에이전트는 모델 호출 수준에서 guardrails를 적용하여 각 배포에 대해 수동 구성이 필요 없는 일관된 콘텐츠 안전을 제공합니다.
솔루션 아키텍처
다음 다이어그램은 에이전트 기반 문서 생성 시스템을 보여줍니다.
그림 1: Amazon Bedrock AgentCore RAG 프레젠테이션 생성 시스템의 아키텍처
데이터 흐름은 다음을 통해 도착하는 사용자 요청으로 시작됩니다. Amazon API Gateway는 이를 에서 실행되는 .NET 기반 Chat API로 라우팅합니다. AWS Lambda. API는 대화 상태를 에 유지합니다. Amazon DynamoDB. 그런 다음 Amazon Bedrock AgentCore 런타임에서 호스팅되는 슈퍼바이저 에이전트를 호출합니다.
슈퍼바이저 에이전트는 요청을 분석하여 적절한 도구를 선택합니다. 문서 생성의 경우 PPTX Generator Lambda(컨테이너화된 Python 함수)를 호출합니다. 요약의 경우 슈퍼바이저는 Summary Generator Lambda를 호출하며, 이 Lambda는 다음을 통해 지식 기반을 쿼리합니다. retrieve_and_generate API.
시스템은 Amazon S3에 저장된 문서를 Amazon Titan Text Embeddings v2를 사용하여 처리, 청크 분할 및 임베딩합니다. Amazon OpenSearch Serverless는 빠른 시맨틱 검색을 위해 임베딩을 인덱싱합니다. 도구가 지식 기반을 쿼리하면 Amazon OpenSearch Serverless가 관련 청크를 검색하며, 이 청크는 근거 기반 응답을 생성하기 위해 Anthropic Claude Sonnet 4.6(Amazon Bedrock에서 실행)에 컨텍스트로 제공됩니다.
시스템은 생성된 문서를 Amazon S3에 저장하고 안전한 다운로드를 위해 presigned URL을 반환합니다. 보안 조치에는 다음이 포함됩니다:
- AWS WAF 관리형 규칙 세트와 Amazon API Gateway의 IP 기반 속도 제한이 적용됩니다.
- Amazon Cognito Plus 기능 플랜과 위협 방지를 위한 고급 보안 모드와 함께.
- AWS CDK를 통해 프로비저닝된 Amazon Bedrock Guardrails로 일관된 콘텐츠 필터링을 제공합니다.
- 시점 복구(point-in-time recovery), 삭제 방지(deletion protection) 및 고객 관리형 AWS KMS 암호화를 갖춘 Amazon DynamoDB.
- 버전 관리, 서버 액세스 로깅, 퍼블릭 액세스 차단이 설정된 Amazon S3 버킷입니다.
- AWS X-Ray Lambda 함수에 대한 추적 기능으로 분산 디버깅을 지원합니다.
- .regex 기반 테넌트 ID 및 세션 ID 검증을 통한 입력 유효성 검사.
- 다음을 통한 테넌트 격리 AWS Security Token Service (AWS STS) 테넌트별 역할 가정.
전제 조건
배포하기 전에 환경에서 다음 도구와 액세스 권한이 구성되어 있어야 합니다:
- AWS 환경:
- 인프라를 배포할 수 있는 권한이 있는 활성 AWS 계정.
- 자격 증명이 구성된 AWS Command Line Interface(AWS CLI).
- 적절한 서비스 액세스 정책을 갖춘 IAM 역할입니다.
- 개발 도구:
- .NET SDK 8 Amazon.Lambda.Tools가 전역으로 설치되어 있는 상태입니다.
- Python 3.12 이상 AWS CDK 및 Lambda 함수용입니다.
- Node.js 그리고 AWS CDK CLI 인프라 배포를 위한 것입니다.
- Docker 또는 핀치(Finch) 컨테이너 이미지를 빌드하기 위한 것입니다(ARM64 지원 필요).
- AWS 서비스 액세스:
- 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 환경 초기화가 포함됩니다.
- 리포지토리 복제 및 프로젝트 디렉터리로 이동:
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=latestSet
awscliprofile을(를) 여러분의 AWS CLI 프로필 이름으로 설정하거나, 환경 변수 자격 증명을 사용하려면 비워 둡니다. - AWS CDK 부트스트랩 (계정 및 리전당 한 번):
cdk bootstrap이렇게 하면 AWS CDK 배포에 필요한 AWS CloudFormation CDKToolkit 스택이 생성됩니다.
- 빌드 스크립트를 실행 가능하게 만듭니다:
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 Resource Name(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초 (지식 기반 검색, 콘텐츠 생성, 이미지 생성, 파일 조립 포함).
- 슬라이드 수: 제목, 글머리 기호, 이미지+텍스트, 이미지 전용, 핵심 요약 형식을 포함한 6개 슬라이드.
- 이미지 생성: Stability AI Stable Image Inpaint를 사용하여 프레젠테이션당 2개의 AI 생성 이미지.
- 생성당 비용: 작성 시점 기준 us-east-1에서 모델 호출 비용으로 약 $0.04 (텍스트 및 이미지 생성 포함, 이미지 생성이 비용의 대부분을 차지).
- 지식 베이스 수집: 1.3 MB PDF 문서 1개 기준 2분 미만.
PowerPoint 프레젠테이션
다음 그림은 생성된 프레젠테이션의 예시 슬라이드를 보여줍니다.
그림 2: 사용자 지정 가능한 브랜딩이 적용된 생성된 제목 슬라이드
그림 3: 글머리 기호가 포함된 생성된 콘텐츠 슬라이드
그림 4: 텍스트와 AI 생성 이미지를 결합한 생성된 슬라이드
그림 5: 수익성 지표를 요약한 생성된 콘텐츠 슬라이드
그림 6: AI 생성 시각 자료가 포함된 이미지 전용 생성 슬라이드
그림 7: 생성된 핵심 요약(takeaways) 슬라이드
생성된 프레젠테이션에는 다음이 포함됩니다:
- 사용자 정의 가능한 브랜딩이 적용된 제목 슬라이드.
- 글머리 기호와 구조화된 텍스트가 포함된 콘텐츠 슬라이드.
- Stability AI Stable Image Inpaint(Amazon Bedrock 기반)로 AI 생성 시각 자료가 포함된 이미지 슬라이드.
- 프레젠테이션 진행 안내가 담긴 발표자 노트.
- 기업 템플릿 기반의 일관된 서식.
요약
지식 베이스에 제공되는 요약 출력에는 다음이 포함됩니다:
- 지식 베이스 콘텐츠의 간결한 종합.
- 원본 문서에 대한 인용 추적.
- 핵심 포인트가 강조된 구조화된 서식.
API 응답
Chat API는 다음을 반환합니다:
- 실시간 사용자 피드백을 위한 스트리밍 응답. 내부 테스트에서 프레젠테이션 생성에 70–90초(기본 Amazon API Gateway 29초 통합 타임아웃 초과)가 걸리는 것으로 나타났기 때문에, Chat API는 비동기 호출 패턴을 사용합니다. 동기 REST 호출로 대기하지 말고 스트리밍 또는 폴링을 사용하여 최종 결과를 수신하십시오.
- 여러 대화 턴에 걸친 대화 컨텍스트 유지.
- 문서 다운로드를 위한 Amazon S3 presigned 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 - 삭제 전 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>
보안 고려 사항
이 솔루션은 모델 ID, Amazon S3 버킷 이름, guardrail ID와 같은 구성 값을 위해 Lambda 환경 변수를 사용합니다. 이들은 리소스 식별자이지 시크릿이 아닙니다. 프로덕션 배포에서는 API 키 및 데이터베이스 자격 증명과 같은 민감한 구성 값에 AWS Secrets Manager를 사용하십시오.
AgentCore 런타임 에이전트는 세션 수준 격리가 적용된 격리된 컨테이너에서 실행됩니다. 각 사용자 세션은 전용 환경에서 작동하여 세션 간 데이터 오염을 방지하는 데 도움이 됩니다.
결론
이 게시물에서는 기업 문서 생성을 자동화하는 Amazon Bedrock AgentCore 기반 AI 에이전트 시스템을 구축했습니다. AgentCore 런타임에 배포된 슈퍼바이저 에이전트는 요청을 문서 생성 및 요약용 전문 도구로 라우팅하며, 내부 테스트에서 프레젠테이션 생성 시간을 약 90초로 단축했습니다.
RAG 파이프라인은 생성된 콘텐츠를 원본 문서에 근거를 두게 하고, Amazon Bedrock Guardrails가 콘텐츠 규정 준수를 검증합니다. 이 아키텍처는 금융 서비스의 자동 보고서 생성, 엔지니어링 팀을 위한 기술 문서, 또는 영업 조직을 위한 제안서 작성에 맞게 조정할 수 있습니다.
시작하려면 다음을 클론하세요: GitHub 저장소 및 설정 지침을 따르십시오. 사용된 서비스에 대한 자세한 내용은 다음을 참조하십시오. Amazon Bedrock AgentCore 문서, Strands Agents SDK, 그리고 AWS CDK 개발자 안내서.
