이 실시간 음성 에이전트 시스템은 브라우저, Node.js 기반 WebSocket 릴레이 서버, Gemini API, Spotify API의 연동을 통해 작동합니다.
1. 아키텍처 및 동적 컨텍스트 주입
WebSocket 릴레이 서버는 브라우저와 Gemini API 간 실시간 오디오 스트림을 중개합니다. 대화 시작 시, 서버는 Spotify API를 호출하여 현재 재생 곡, 최근/인기 아티스트 및 트랙 등 실시간 음악 데이터를 가져옵니다. 이 데이터는 자연어 설명으로 변환된 후 Gemini의 시스템 지침에 동적으로 주입되어, AI가 최신 개인 정보를 기반으로 응답하도록 컨텍스트 윈도우를 업데이트합니다.
2. 실시간 대화 처리
사용자의 음성 입력은 브라우저에서 PCM 포맷으로 변환되어 서버를 거쳐 Gemini로 전달되며, Gemini는 이를 처리하고 음성 응답을 생성하여 사용자에게 실시간으로 스트리밍합니다. Gemini 2.0의 멀티모달 라이브 API는 별도 변환 과정 없이 양방향 실시간 대화를 가능하게 하며, AI는 연속 청취하며 사용자 발화에 맞춰 대화를 중단하고 응답하는 유동적 상호작용을 지원합니다.
3. 보안, 확장성 및 학습점
Gemini API 키는 서버 환경 변수에만 존재하며, Spotify OAuth 리프레시 토큰으로 안전하게 관리됩니다. Spotify 외 GPS, 캘린더 등 다른 API 데이터도 AI 컨텍스트에 주입 가능하나, 컨텍스트 윈도우 크기 및 API 호출 비용(5분 타임아웃)을 고려해야 합니다. 구현에서는 Gemini 오디오 포맷 처리, WebSocket 안정성, Spotify API 호출 병렬 처리로 컨텍스트 주입 지연 시간을 1초 이내로 최소화하는 것이 핵심 과제였습니다.