항공사들은 이미 여행객이 항공편을 조회하고, 좌석을 선택하고, 예약을 관리할 수 있는 앱과 웹사이트를 갖추고 있으며, 자연스러운 음성 계층을 추가하면 이러한 작업들을 음성 요청으로도 수행할 수 있게 됩니다. 이 음성 계층을 통해 여행객은 말로 좌석을 변경하거나 지연 여부를 확인할 수 있으며, 앱을 벗어나거나 여러 화면을 탐색할 필요가 없습니다. 이를 구축하려면 여러 측면에서 세심한 엔지니어링이 필요합니다. 양방향으로 오디오를 스트리밍하고 여러 턴에 걸친 대화의 맥락을 유지해야 합니다. 또한 에이전트를 기존 백엔드 시스템에 긴밀하게 결합하지 않으면서 해당 시스템에 연결해야 하고, 연휴 주말 전 트래픽 급증 시에도 확장할 수 있어야 합니다.
이 게시물에서는 세 가지 관리형 서비스를 기반으로 항공사 애플리케이션에 음성 여행 컨시어지를 추가하는 방법을 보여줍니다. Amazon Bedrock AgentCore 는 다양한 프레임워크와 모델을 자유롭게 선택하여 AI 에이전트를 규모에 맞게 안전하게 구축, 배포 및 운영할 수 있는 에이전틱 플랫폼입니다. Amazon Nova Sonic Bedrock용은 실시간 음성을 위한 음성 대 음성 모델입니다. Amazon Bedrock Knowledge Bases 는 고객 자신의 문서에 답변을 근거화하는 완전 관리형 검색 증강 생성 서비스입니다. 여행객이 말을 하면 컨시어지가 일정을 불러오고, 좌석을 변경하고, 식사 선호를 업데이트하고, 정책 관련 질문에 답변하고, 요청 시 상담원과 연결해 줍니다.
컨시어지는 기존 화면을 대체하는 것이 아니라 그 위에서 함께 작동하므로, 여행자는 동일한 세션에서 탭하기와 말하기를 오갈 수 있습니다. 필요에 따라 확장되는 서비스에서 실행되므로 인프라가 아닌 경험에 시간을 쏟을 수 있습니다. AI 계층은 합성 데이터를 사용하는 샘플 항공사 백엔드에 연결되어, 이 패턴을 자신의 시스템에 적용할 때 구현 속도를 높여 줍니다. 프로젝트는 모듈로 나뉘어 있으므로 기존 백엔드에 맞는 부분을 재사용하고 이를 도구로 에이전트에 노출할 수 있습니다.
다음 작업을 수행하는 방법을 배우게 됩니다:
- 다음을 사용하여 AWS에 음성 AI 컨시어지 배포하기 AWS Cloud Development Kit(AWS CDK).
- 다음으로 에이전트를 만들어 보세요: Strands Agents 프레임워크 및 Amazon Nova 2.5 Sonic 실시간 음성 대응을 위해 Amazon Bedrock AgentCore 프레임워크의 기능인 AgentCore 런타임에서 호스팅됩니다.
- 백엔드 서비스에 에이전트를 연결하려면 다음을 사용하십시오: Model Context Protocol(MCP) AgentCore Gateway를 통해 가능하며, 이는 Amazon Bedrock AgentCore의 기능입니다.
- Amazon Bedrock Knowledge Bases로 항공사 정책 질문에 답변합니다.
- 여행자에게 상담원에게 연결하면서 참조 번호와 예상 대기 시간을 제공합니다.
솔루션 개요
이 아키텍처는 프런트 엔드, AI 에이전트, 백엔드 서비스를 서로 다른 계층으로 분리하므로 각각을 독립적으로 개발하고 확장할 수 있습니다. MCP는 AI 애플리케이션을 외부 도구 및 데이터에 연결하기 위한 개방형 표준입니다. 이는 에이전트와 백엔드 간에 표준화된 메시지를 전달하여 두 구성 요소가 느슨하게 결합된 상태를 유지하도록 합니다.
이 솔루션은 다음 서비스들을 배포합니다.
- Amazon Cognito 서명된 API 접근을 위한 사용자 인증 및 임시 AWS 자격 증명을 처리합니다.
- Amazon Bedrock AgentCore 런타임 세션마다 microVM 격리로 에이전트를 호스팅합니다.
- Amazon Bedrock AgentCore Gateway 백엔드 엔드포인트를 검색 가능한 MCP 도구로 노출합니다.
- Amazon API Gateway 백엔드를 REST 엔드포인트로 게시하며 AWS Identity and Access Management (IAM) 권한 부여를 사용합니다.
- AWS Lambda 일정, 좌석 맵, 승객 업데이트, 항공편 상태, 마일리지, 정책 조회 및 에스컬레이션에 대한 비즈니스 로직을 실행합니다.
- Amazon DynamoDB 고객 프로필, 예약, 승객, 좌석 맵, 구매 이력, 선호 설정, 대화 및 항공편 데이터를 저장합니다.
- Amazon Bedrock Knowledge Bases 항공사 정책 문서에 응답을 근거하여 정책 관련 질문에 답변합니다.
- Amazon Simple Email Service (Amazon SES) 이메일 알림을 보냅니다.
- AWS Amplify는 React 프런트 엔드를 호스팅합니다.
아키텍처
다음 다이어그램은 네 개의 섹션으로 구성된 솔루션 아키텍처를 보여줍니다.
그림 1: 백엔드, AgentCore Gateway, AgentCore 런타임, 프런트 엔드 전반에 걸친 엔드 투 엔드 아키텍처
섹션 A는 백엔드 인프라를 다룹니다. 다섯 개의 CDK 스택이 DynamoDB 테이블, Lambda 함수, API Gateway 엔드포인트, Amazon Bedrock Knowledge Bases, Amazon Cognito를 배포합니다.
섹션 B는 AgentCore Gateway를 다룹니다. 하나의 CDK 스택이 MCP 프로토콜로 Amazon Bedrock AgentCore Gateway를 생성하고, 모든 백엔드 엔드포인트를 에이전트가 이름으로 호출할 수 있는 도구로 노출합니다.
섹션 C는 AgentCore 런타임을 다룹니다. 두 개의 CDK 스택이 런타임 인프라를 프로비저닝합니다. Amazon Elastic Container Registry(Amazon ECR)는 컨테이너 이미지를 저장하고, Amazon Simple Storage Service(Amazon S3)는 소스 업로드를 보관하며, AWS CodeBuild가 ARM64 Docker 이미지를 생성합니다. Amazon Bedrock AgentCore 런타임은 Strands Agents 프레임워크와 Amazon Nova 2.5 Sonic을 사용하여 WebSocket 지원으로 실행됩니다.
섹션 D는 프런트 엔드를 다룹니다. 하나의 CDK 스택이 React 앱을 AWS Amplify에 배포합니다.
사용자 요청 흐름
- 사용자가 브라우저나 모바일 기기에서 AWS Amplify에 호스팅된 웹 애플리케이션을 엽니다.
- 사용자가 로그인 페이지에서 자격 증명을 입력합니다. Amazon Cognito가 요청을 인증하고 JSON Web Token(JWT)과 임시 AWS 자격 증명을 반환합니다.
- 프런트 엔드는 음성 컨시어지 세션을 시작하기 위해 SigV4 서명된 WebSocket 연결을 Amazon Bedrock AgentCore에 엽니다.
- 런타임은 Amazon Cognito로 토큰을 검증하고 Amazon Bedrock을 통해 Amazon Nova 2.5 Sonic을 초기화합니다.
- 사용자가 요청을 음성으로 말합니다. Amazon Nova 2.5 Sonic이 오디오를 처리하고 도구 호출을 트리거합니다. 에이전트는 MCP를 사용하여 AgentCore Gateway를 호출함으로써 도구 통합을 처리하고, 항공편 데이터를 조회하고, 예약을 관리하고, 승객 선호 설정을 업데이트합니다.
- AgentCore Gateway는 요청을 REST API 호출로 Amazon API Gateway에 전달하고, API Gateway는 이를 AWS Lambda 함수로 라우팅합니다.
- AWS Lambda 함수는 예약, 승객, 좌석 맵, 로열티 상태, 항공편 정보를 위해 Amazon DynamoDB 테이블을 쿼리합니다. 이메일 알림은 Amazon SES를 통해 전송됩니다.
- Amazon Nova 2.5 Sonic이 맥락에 맞는 음성 응답을 생성하고 AgentCore 런타임을 통해 WebSocket 연결로 사용자에게 다시 스트리밍합니다.
- 정책 관련 질문의 경우, AgentCore Gateway는 MCP Knowledge Base 커넥터를 통해 Amazon Bedrock Knowledge Bases를 직접 쿼리합니다. 지식 베이스는 관련 정책 구절을 인용 형태로 에이전트에 반환합니다.
- 사용자가 상담원 연결을 요청하면, AWS Lambda가 Amazon DynamoDB에 에스컬레이션을 기록하고 참조 번호를 반환합니다. 그런 다음 AWS Amplify가 사용자 기기에서 전화를 걸어 상담원과 연결해 줍니다.
빌드 및 운영
다음 두 단계는 실시간 대화 외부에 있습니다. 솔루션 구축 방법과 일상적인 운영 방법을 설명합니다.
- AWS CDK는 단일 스크립트로 솔루션을 배포합니다. 빌드는 에이전트 소스를 Amazon S3에 업로드하고 AWS CodeBuild를 트리거하여 컨테이너 이미지를 생성하며, 이 이미지는 AgentCore 런타임을 위해 Amazon ECR에 저장됩니다.
- Amazon CloudWatch는 모든 서비스에서 로그, 지표, 경보를 수집하고, AWS Key Management Service(AWS KMS)는 저장 데이터를 암호화합니다.
사전 요구 사항
시작하기 전에 다음 사항이 준비되어 있는지 확인하십시오.
- 계정이 있는 AWS 계정.
- 배포하는 AWS 리전에서 Amazon Nova 2.5 Sonic에 대한 Amazon Bedrock 모델 액세스. 리전별 모델 가용성은 Amazon Bedrock의 AWS 리전별 지원 모델을 참조하십시오. Amazon Bedrock Knowledge Bases는 서비스 관리형 임베딩 모델을 사용하므로 별도의 임베딩 모델 액세스가 필요하지 않습니다.
- Node.js 20.x 이상(AWS CDK 및 Lambda 함수용).
- Python 3.12 이상(데이터 시딩 및 테스트 클라이언트용).
- AWS Command Line Interface (AWS CLI) 2.x(자격 증명이 구성된 상태).
- AWS CDK CLI 2.x 가
npm install -g aws-cdk와 함께 설치되어 있고, 계정이 다음으로 부트스트랩되어 있어야 합니다:npx cdk bootstrap. - 다음에서 제공되는 코드: aws-samples GitHub 리포지토리.
AWS CDK로 솔루션 배포
이 솔루션은 단일 CDK 스크립트로 배포됩니다. 리포지토리를 복제하고, AWS 자격 증명을 구성한 후, 배포 스크립트를 실행합니다. 자세한 배포 단계는 GitHub 리포지토리의 README 를 참조하세요.
샘플 항공사 데이터 모델
API Gateway는 IAM 권한 부여 엔드포인트와 Lambda 통합을 갖춘 REST API를 게시합니다. Amazon DynamoDB는 밀리초 한 자릿수의 지연 시간과 온디맨드 확장으로 샘플 항공사 데이터 모델을 저장합니다. 데이터는 고객 프로필, 예약, 탑승객, 좌석 맵, 구매 이력, 선호 설정, 대화 기록 및 항공편 상태를 포괄합니다.
지식 기반으로 정책 질문에 답변하기
여행자는 수하물 한도, 변경 수수료, 반려동물 동반 여행, 멤버십 약관에 대해 질문합니다. 이 솔루션은 Amazon Bedrock Knowledge Bases를 통한 Retrieval Augmented Generation (RAG) 을 사용하여 항공사 정책 문서에 근거한 응답으로 해당 질문에 답변합니다. 리포지토리에는 수하물, 취소 및 환불, 변경 및 재예약, 운임 등급 규칙, 멤버십 약관, 반려동물 동반 여행, 특별 지원, 업그레이드에 대한 샘플 정책 문서가 포함되어 있습니다.
문서를 Amazon S3에 업로드하고 지식 기반을 한 번만 생성하면 됩니다. 이후 Amazon Bedrock이 임베딩, 청킹, 인덱싱, 저장 및 검색을 포함한 나머지를 모두 처리합니다. 저장소는 Amazon S3의 기능인 Amazon S3 Vectors에서 실행됩니다. Smart Parsing은 원본 PDF를 준비하여 표와 구조화된 레이아웃이 정확하게 검색되도록 합니다. 정책 문서가 변경되면 지식 기반을 동기화하기만 하면 새 콘텐츠가 즉시 제공됩니다. 다시 배포해야 하는 파이프라인은 없습니다.
AgentCore Gateway를 통해 지식 기반을 에이전트에 연결하는 것은 간단합니다. 지식 기반을 Connectors 대상으로 추가하고 표준 또는 에이전틱(agentic) 검색을 선택하면, Gateway가 이를 백엔드 API 도구와 함께 이름이 지정된 MCP 도구로 노출합니다. 그러면 에이전트가 런타임에 이를 발견하고 이름으로 호출하며, 작성해야 하는 사용자 지정 Lambda나 검색 코드가 없습니다. 설정 단계는 지식 기반을 게이트웨이 대상으로 추가.
자신의 정책을 사용하려면 PDF 또는 텍스트 파일을 정책 문서 폴더에 넣고 지식 기반 스택을 다시 배포하면 됩니다.
Amazon Bedrock AgentCore를 통한 음성 AI 처리
각 세션은 microVM 격리를 갖춘 AgentCore 런타임에서 관리형 컨테이너로 실행되어 부하 상태에서도 여행자의 대화를 분리된 상태로 유지합니다. AgentCore는 자동 확장, 내장 모니터링 및 세션 라우팅을 제공합니다.
프로덕션 배포의 경우 Amazon Bedrock Guardrails 를 추가하여 프롬프트 인젝션 시도를 필터링하고 응답의 근거를 검증하십시오. 이 솔루션의 confirm-before-write 패턴은 변경을 수행하기 전에 여행자에게 확인을 요청합니다. 이 패턴과 답변을 원본 문서로 추적할 수 있는 지식 기반 인용은 이미 책임 있는 AI 실무의 기준선을 제공합니다.
에이전트는 Strands BidiAgents 프레임워크를 사용하여 시스템 프롬프트, 도구 및 대화 흐름을 정의합니다. Amazon Nova 2.5 Sonic은 컨시어지에 다음과 같은 기능을 제공합니다.
- 다양한 억양에 대한 음성 인식과 배경 소음에 대한 견고성.
- 여행자의 어조에 맞춰 조정되는 음성 응답.
- 낮은 지연 시간의 양방향 스트리밍.
- 대화를 중단하지 않고 데이터를 가져오거나 도구 호출을 병렬로 수행하는 비동기 도구 호출.
- 도구 결과를 기다리는 동안 중간 음성 응답을 생성하여 대화가 자연스럽게 이어지도록 하는 지연 마스킹.
- 바지인(barge-in)과 자연스러운 대화 턴테이킹.
- 여러 턴에 걸쳐 유지되는 컨텍스트.
오디오는 프런트 엔드에서 16 kHz PCM으로 WebSocket을 통해 AgentCore 런타임으로 스트리밍됩니다. Amazon Nova 2.5 Sonic이 음성을 전사하고, 에이전트가 적절한 도구를 선택하여 MCP를 통해 호출합니다. AgentCore Gateway가 각 MCP 호출을 REST 요청으로 변환하고, Lambda가 로직을 실행하여 결과를 반환하며, Amazon Nova 2.5 Sonic이 해당 결과를 음성 응답에 반영합니다.
Amazon Nova 2.5 Sonic의 새로운 기능
이 솔루션은 다음을 사용합니다 Amazon Nova 2.5 Sonic은(는) 실시간 음성을 위한 강력한 추론 능력을 갖춘 음성 대 음성(speech-to-speech) 모델입니다. 백엔드 도구를 호출하고 상세한 시스템 프롬프트를 따르는 음성 컨시어지의 경우, 그 추론 능력은 몇 가지 실용적인 방식으로 드러납니다:
향상된 도구 호출 및 에이전틱 작업 완수 – 에이전트는 여러 단계로 이루어진 요청 전반에서 올바른 도구를 안정적으로 선택하고 연결합니다. 예를 들어 한 번의 대화에서 여정을 조회한 다음 좌석을 변경하는 작업이 이에 해당합니다.
강력한 지시 사항 준수 및 추론 – 모델은 확인 코드와 항공편 번호를 한 글자씩 읽어주는 것과 같은 형식 규칙을 포함하여 시스템 프롬프트를 충실히 따릅니다.
정확한 책임 있는 AI 처리 – 모델은 정당한 여행자의 요청에는 유용하게 응답하는 동시에 부적절한 요청은 안전하게 처리합니다.
사용자 인증
이 솔루션은 역할 기반 액세스를 위해 Amazon Cognito User Pools와 Identity Pools를 사용합니다. 여행자가 사용자 이름과 비밀번호로 로그인하면 액세스 토큰과 ID 토큰인 JWT를 받습니다. 프런트 엔드는 ID 토큰을 Cognito Identity Pool과 교환하여 액세스 키, 시크릿 키, 세션 토큰으로 구성된 임시 AWS 자격 증명을 받습니다. 이 자격 증명은 Signature Version 4(SigV4)를 사용하여 AgentCore runtime으로의 WebSocket 연결과 API Gateway로의 요청에 서명합니다. 인증된 여행자만 애플리케이션과 서비스 API에 도달할 수 있습니다.
인증 및 WebSocket 연결 흐름
프런트 엔드는 임시 AWS 자격 증명을 사용하여 AgentCore runtime에 SigV4로 서명된 WebSocket 연결을 열고 신원 확인을 위해 액세스 토큰을 전송합니다. 그런 다음 브라우저는 16 kHz PCM 오디오를 스트리밍하고 동일한 연결을 통해 음성 응답과 도구 알림을 수신합니다. 중간에 서버 측 프록시가 없습니다.
다음 그림은 브라우저, Amazon Cognito, AgentCore runtime 간의 인증 및 WebSocket 연결 시퀀스를 보여줍니다.
그림 2: 여행자가 Amazon Cognito로 인증하고, 브라우저가 AgentCore runtime에 SigV4로 서명된 WebSocket을 열며, Amazon Nova 2.5 Sonic이 양방향으로 음성을 스트리밍합니다
음성 상호 작용 및 동적 도구 호출
여행자가 자신의 좌석을 보여달라고 요청합니다. Nova 2.5 Sonic이 요청을 전사하고 에이전트가 필요한 도구를 선택합니다. 에이전트는 MCP를 사용하여 AgentCore Gateway를 통해 이를 병렬로 호출하고, Gateway는 각 호출을 API Gateway로의 REST 요청으로 변환합니다. Lambda 함수가 DynamoDB를 쿼리하여 결과를 반환하면, Nova 2.5 Sonic이 모든 것을 종합한 음성 응답을 스트리밍합니다. 도구 호출이 비동기적으로실행되기 때문에 데이터가 로드되는 동안에도 대화가 멈추지 않습니다.
다음 그림은 에이전트가 음성 요청을 처리하고 AgentCore Gateway를 통해 백엔드 도구를 동적으로 호출하는 방법을 보여줍니다:
그림 3: 음성 요청이 Nova 2.5 Sonic, AgentCore Gateway, API Gateway, Lambda, DynamoDB를 거쳐가고 음성 응답이 다시 스트리밍됩니다
지식 기반에서 정책 질문에 답변하기
여행자가 수하물 정책에 대해 묻는 질문을 하면 에이전트는 AgentCore Gateway를 통해 기본 커넥터를 사용하여 Amazon Bedrock Knowledge Bases에 접근합니다. 지식 기반은 관리형 재순위화기(reranker)와 함께 에이전틱 검색을 실행하고 관련 정책 구절을 인용 형태로 반환합니다. Nova 2.5 Sonic이 답변을 작성하여 여행자에게 음성으로 전달합니다.
다음 그림은 Amazon Bedrock Knowledge Bases에서 근거 있는 구절을 검색하여 에이전트가 정책 질문에 답변하는 방법을 보여줍니다:
그림 4: 정책 질문이 Amazon Bedrock Knowledge Bases에 의해 답변되고 여행자에게 음성으로 전달됩니다
상담원으로 에스컬레이션
컨시어지는 요청을 처리할 수 없거나 여행자가 요청할 때 여행자를 사람에게 연결합니다. 여행자가 확인한 후 에이전트는 EscalateToAgent 도구를 호출합니다. Lambda가 DynamoDB에 에스컬레이션을 기록하고 예상 대기 시간과 함께 참조 번호를 반환합니다. 에이전트는 그 참조 번호를 공유하고, Amplify 프런트 엔드가 지원 라인으로 전화를 겁니다. 이 샘플에는 컨택 센터 애플리케이션이 포함되어 있지 않으므로, 사람에게 연결하려면 구성한 지원 번호에 따라 달라집니다.
다음 그림은 여행자가 실제 상담원을 요청할 때의 에스컬레이션 흐름을 보여줍니다:
그림 5: 에이전트가 DynamoDB에 에스컬레이션을 기록하고 참조 번호를 공유하며, 프런트 엔드가 실제 상담원에게 전화를 겁니다
컨시어지 사용 방법
브라우저에서 Amplify URL을 열고 AppUser 자격 증명으로 로그인합니다. 마이크 버튼을 눌러 음성 대화를 시작합니다. 에이전트가 이름으로 인사하고 백그라운드에서 일정을 불러옵니다. 이후 자연스럽게 말하여 좌석을 변경하거나, 지연을 확인하거나, 정책을 검토하거나, 실제 상담원에게 연결할 수 있습니다. 다음 비디오는 인사부터 에스컬레이션까지 전체 세션을 보여줍니다.
전체 대화는 단일 WebSocket 연결을 통해 핸즈프리로 진행됩니다. 에이전트는 변경 사항을 기록하기 전에 항상 확인합니다. 항공편 번호를 한 글자씩 읽어 명확하게 들리도록 하고, 백그라운드에서 백엔드 도구를 호출하여 눈에 띄는 지연이 없습니다.
정리
요금이 계속 청구되지 않도록 배포된 리소스를 제거합니다. 먼저 삭제 내용을 미리 본 다음 정리 스크립트를 실행합니다.
./cleanup-all.sh --dry-run
./cleanup-all.sh
이 스크립트는 리소스를 역순으로 삭제하며, 프런트 엔드부터 시작하여 AgentCore runtime, AgentCore Gateway, 백엔드 인프라 순으로 진행됩니다.
결론
이 게시물은 AWS에서 음성 여행 컨시어지를 구축하는 방법을 보여주었습니다. 인증에는 Amazon Cognito, 에이전트 호스팅에는 Amazon Bedrock AgentCore, 비즈니스 로직에는 API Gateway와 Lambda, 스토리지에는 DynamoDB, 정책 답변에는 Amazon Bedrock Knowledge Bases를 사용합니다. 계층화된 설계는 프런트 엔드, 에이전트, 백엔드를 분리하여 각각 독립적으로 개발하고 확장할 수 있게 합니다. 컨시어지는 일정 관리, 좌석 변경, 기내식 선호, 항공편 상태, 마일리지 질문, 정책 조회, 실제 상담원 에스컬레이션을 MCP 도구를 통해 처리합니다. Amazon Nova 2.5 Sonic은 낮은 지연 시간의 음성, 병렬 도구 호출, 자연스러운 끼어들기 처리를 제공합니다. 사용한 만큼만 지불하는 요금제와 자동 확장은 트래픽에 따라 비용을 유지하며, MCP 통합을 통해 에이전트 코드를 건드리지 않고도 새로운 Lambda 함수를 추가할 수 있습니다. 시작하려면 GitHub의 솔루션 리포지토리 를 방문하여 자신의 항공사 시스템에 맞게 조정하세요.
추가 리소스
- Amazon Nova Sonic Speech-to-Speech 모델 사용
- Amazon Bedrock AgentCore 시작하기
- Model Context Protocol 사양
- Amazon Bedrock Knowledge Bases
