WEBBOOK CHAPTER

말로 일하는 AI: 13장 WebRTC Realtime 세션을 연결한다

13장 WebRTC Realtime 세션을 연결한다

브라우저 기반 실시간 음성에는 WebRTC가 권장된다. 표준 API 키를 브라우저에 넣지 않는다. 현재 공식 문서가 설명하는 방식은 개발자 서버가 세션 초기화 요청을 대신 보내거나 단기 자격을 만들어 브라우저가 연결하도록 하는 것이다.

이 책의 예제는 통합 인터페이스를 사용한다.


브라우저: 마이크 → RTCPeerConnection → SDP offer
우리 서버: 세션 설정 + SDP → OpenAI /v1/realtime/calls
OpenAI: SDP answer → 우리 서버 → 브라우저

서버에는 표준 API 키가 있고 브라우저에는 없다. 브라우저가 만든 SDP를 서버에 보내면 서버가 multipart/form-data로 세션 설정과 함께 전달한다. 모델 이름은 환경 변수로 바꿀 수 있게 하고, 책의 스냅샷 값이 영구 최신이라고 가정하지 않는다.


const sessionConfig={
  type:'realtime',
  model:process.env.REALTIME_MODEL || 'gpt-realtime-2.1',
  audio:{output:{voice:'marin'}}
};

examples/callgarden/live/server.example.mjs는 연결 구조를 보여 주는 선택 예제다. API 키가 없으면 명시적으로 503을 반환한다. 기본 테스트는 이 파일을 실행하지 않는다.

보안 식별자를 쓸 때는 내부 사용자 ID를 그대로 보내지 않고 안정적인 비식별 값을 신뢰할 수 있는 서버에서 설정한다. 마이크 권한, 네트워크 오류, 상위 API 오류를 사용자에게 서로 다른 상태로 보여 준다.