서버에서 실시간으로 듣고 말하는 AI 에이전트를 직접 만드는 방법
전화로 걸려온 전화를 AI가 받아 주문을 받고, 화자의 말투를 파악해 적절한 시점에 대답하는 장면을 떠올려 보세요. 이 저장소는 그런 대화형 AI를 서버에서 실행할 수 있게 해주는 도구 모음입니다. 음성 인식, 언어 모델, 음성 합성을 하나의 흐름으로 묶어 사용자가 말하는 동안 AI가 자연스럽게 반응하도록 설계했습니다.
음성과 텍스트를 오가는 대화의 흐름
이 프레임워크는 사용자가 말하는 것을 듣고, 의미를 이해한 뒤 다시 음성으로 답하는 과정을 관리합니다. 음성 인식(STT), 언어 모델(LLM), 음성 합성(TTS)을 자유롭게 조합할 수 있어 특정 벤더에 종속되지 않습니다. 사용자가 말을 끝냈는지 판단하는 '의미적 턴 감지' 기능이 있어 AI가 말을 끊는 일이 줄어듭니다. 또한 MCP(모델 컨텍스트 프로토콜)를 지원해 외부 도구를 한 줄의 코드로 연결할 수 있습니다.
전화와 영상까지 확장되는 연결
단순한 채팅을 넘어 실제 전화 통화나 영상 회의에 참여하는 에이전트를 만들 수 있습니다. LiveKit의 전화 스택과 연동되어 에이전트가 전화를 걸거나 받을 수 있으며, WebRTC 클라이언트를 통해 다양한 플랫폼의 앱과 데이터를 주고받습니다. 여러 에이전트가 역할을 나누어 대화하는 '핸드오프' 패턴도 지원하여, 예를 들어 정보를 수집하는 에이전트가 이야기를 시작하는 에이전트로 자연스럽게 넘겨줄 수 있습니다.
테스트와 배포를 위한 준비
LLM의 비결정적 특성을 고려해 내장된 테스트 프레임워크를 제공합니다. 에이전트가 의도한 대로 동작하는지 검증하는 '재판관(judge)' 기능을 사용해 신뢰성을 높일 수 있습니다. 개발 단계에서는 터미널에서 바로 음성 입출력을 테스트하거나, 파일 변경 시 자동으로 재시작되는 개발 모드를 사용할 수 있습니다. 프로덕션 환경에서는 최적화된 설정으로 실행하며, 필요한 경우 LiveKit 서버를 자체 호스팅하여 전체 스택을 독립적으로 운영할 수 있습니다.
사용 전 확인해야 할 사항
이 저장소는 Apache-2.0 라이선스로 공개되어 있어 상업적 사용이 가능합니다. 다만 음성 인식과 합성 모델은 외부 API 키가 필요하므로, Deepgram, OpenAI, Cartesia 등 원하는 서비스의 인증 정보를 준비해야 합니다. 또한 LiveKit 서버에 연결하기 위해 URL, API 키, 시크릿 키를 환경 변수로 설정해야 합니다. 실시간 성능이 중요하므로, 네트워크 환경과 모델 선택에 따라 지연 시간이 달라질 수 있으니 실제 사용 환경에서 테스트해 보는 것이 좋습니다.