자습서: Amazon Kinesis Video Streams를 사용하여 TURN 릴레이를 사용하는 WebRTC
이 자습서에서는 미디어 릴레이를 위해 Amazon Kinesis Video Streams(KVS) 관리형 TURN을 사용하여 AgentCore 런타임에서 실행되는 에이전트와 브라우저 클라이언트 간에 WebRTC 음성 연결을 구축합니다. 에이전트는 speech-to-speech 대화를 위해 Amazon Bedrock 파운데이션 모델을 사용하여 실시간으로 오디오를 처리합니다.
완료되면 오디오가 브라우저와 에이전트 간에 양방향으로 스트리밍되는 WebRTC 연결이 작동합니다.
이 자습서에서는 KVS TURN 엔드포인트에 연결하려면 인터넷 송신이 있는 VPC가 필요합니다. 자세한 내용은 인터넷 액세스 고려 사항 섹션을 참조하세요. 다른 모든 사전 조건은 샘플 애플리케이션에서 처리합니다. 이 샘플은 AgentCore 런타임에 배포하기 위해 AgentCore CLI를 사용합니다.
전체 샘플 애플리케이션은 GitHub의 KVS TURN을 사용하는 WebRTC Voice Agent
아키텍처
- 브라우저 클라이언트
-
브라우저 WebRTC API를 사용하여 마이크 오디오를 캡처하고 에이전트의 오디오 응답을 재생하는 웹 페이지입니다.
- AgentCore 런타임
-
에이전트를 호스팅하고 프라이빗 서브넷의 탄력적 네트워크 인터페이스(ENI)를 통해 사용자의 VPC에 연결합니다.
- 에이전트
-
/invocations엔드포인트를 통해 WebRTC 신호 및 TURN 자격 증명 관리를 처리하고 클라이언트와 파운데이션 모델 간에 오디오를 스트리밍하는 AgentCore 런타임에 배포된 Python 애플리케이션입니다. - 인터넷 송신이 있는 사용자 VPC
-
에이전트에서 KVS TURN 릴레이 서버로의 네트워크 연결을 제공합니다. NAT 게이트웨이와 인터넷 게이트웨이를 통해 프라이빗 서브넷의 ENI에서 TURN 엔드포인트로 연결되는 트래픽 경로입니다.
- KVS TURN 릴레이 서버
-
브라우저 클라이언트와 에이전트 간에 미디어 트래픽을 릴레이합니다. 에이전트는 GetIceServerConfig API를 사용하여 KVS에서 임시 TURN 자격 증명을 가져옵니다.
작동 방식
-
클라이언트는 에이전트를 호출하여 KVS TURN 자격 증명 및 ICE 서버 구성을 가져옵니다.
-
클라이언트는 WebRTC 제안을 생성하여 에이전트에게 전송합니다. 에이전트는 KVS TURN 서버로 구성된 피어 연결을 생성하고 응답을 반환합니다.
-
클라이언트와 에이전트는 ICE 후보를 교환하여 TURN 서버를 통해 연결을 설정합니다.
-
연결되면 클라이언트는 WebRTC를 통해 마이크 오디오를 에이전트로 스트리밍합니다. 에이전트는 오디오를 Amazon Bedrock 파운데이션 모델로 전달하고 모델의 음성 응답을 클라이언트로 다시 스트리밍합니다.