ElevenLabs의 Reception.ai를 따라 만든 오픈 소스 셀프 호스팅 AI 접수원
요약
Frontdesk.ai는 오픈 소스로 구현된 AI 접수원 시스템으로, 전화를 받고 예약을 잡으며 웹사이트 질문에 답변하는 기능을 제공합니다. 사용자의 서버에서 구동되며, ElevenLabs의 제품에서 영감을 받아 비용 효율적이고 커스터마이징 가능한 셀프 호스팅 솔루션을 목표로 합니다.
핵심 포인트
- 오픈 소스(Apache-2.0) 기반으로 누구나 수정하고 실행 가능합니다.
- 사용자 서버에 Docker Compose로 쉽게 배포할 수 있습니다.
- WebRTC를 이용한 실시간 오디오 스트리밍을 구현했습니다.
- Groq Whisper, LLM 등 다양한 API 키 조합이 가능하여 비용 효율적입니다.
치과 병원에서 전화가 울리지만, 모두들 손이 바빠서 아무도 전화를 받지 못합니다. 결국 발신자는 다른 곳에 예약을 합니다.
Frontdesk.ai는 이러한 상황을 대신 처리하는 오픈 소스 AI 접수원입니다. 이 시스템은 전화를 받고, 실제 캘린더에 예약을 잡으며, 사업체의 웹사이트에서 질문에 답하고, 통화 기록(transcript), 녹음 파일, 요약본 등을 남깁니다.
코드: github.com/Sainigurnoor511/frontdesk-ai (Apache-2.0)
아이디어가 나온 계기
Frontdesk.ai는 ElevenLabs의 Reception.ai에서 영감을 받았습니다. 저는 이 제품이 마음에 들어서, 누구나 읽고, 수정하고, 직접 실행할 수 있는 오픈 소스 셀프 호스팅 버전을 만들고 싶었습니다. 이는 처음부터 작성된 독립적인 프로젝트이며, ElevenLabs와는 제휴 관계가 없습니다.
- 사용자 시스템에서 구동됩니다. 노트북이나 서버에
docker compose up한 번만 하면 됩니다. 통화 기록, 클라이언트 정보, 녹음 파일은 사용자의 Supabase 프로젝트에 저장됩니다. - ElevenLabs 구독료가 없으며, 저에게도 플랫폼 수수료가 없습니다. 음성 및 LLM(대규모 언어 모델)을 위한 API 키를 직접 가져와서 해당 제공업체에 사용한 만큼만 지불하면 됩니다.
- 모든 부분이 교체가 가능합니다. 목소리, 모델, 프롬프트 또는 전체 음성 엔진을 변경할 수 있습니다.
기능
- 브라우저, 대시보드 또는 공개 예약 페이지에서 자연스러운 음성으로 전화를 받습니다
- 실제 가용성을 확인하여 예약을 잡습니다: 영업시간, 직원 근무 시간, 휴무일 및 기존 예약 현황을 체크합니다.
- 사업체의 웹사이트, 업로드된 파일 및 FAQ의 질문에 답변합니다
- 모든 내용을 기록합니다: 통화 기록(transcript), 녹음 파일, 요약본 및 결과 보고서
- 설정까지 해줍니다: 웹사이트 URL을 붙여넣기만 하면 사업체 프로필과 서비스가 자동으로 채워집니다.
통화 과정
실시간 통화는 WebRTC를 이용한 실시간 오디오 스트리밍이며, 중간에 작업 큐(job queue)가 없습니다:
Browser ⇄ LiveKit room (WebRTC audio)
│
voice worker joins the room
...
브라우저는 서버에 방(room)과 토큰을 요청한 다음 연결합니다. 음성 작업자(voice worker)가 같은 방에 참여하여 음성-텍스트 변환(speech-to-text)을 위해 Groq Whisper를, 대화를 위해 Groq에서 호스팅되는 LLM을, 그리고 목소리를 위해 Fish Audio를 실행합니다.
이 에이전트는 세 가지 도구(check_availability, book_appointment 및 search_knowledge)를 가지고 있습니다. 모든 도구 호출에는 두 가지 규칙이 적용됩니다:
- 어떤 것도 데이터베이스에 기록되기 전에 인수는 Zod로 검증됩니다. 모델 출력은 절대 데이터베이스로 바로 흐르지 않습니다.
- 비즈니스 로직은 서버에서 해결되며, 클라이언트가 보낸 ID로부터는 결코 발생하지 않습니다.
만약 음성 작업자를 실행하고 싶지 않다면, 각 접수원은 하나의 설정으로 관리형 음성 에이전트 API로 전환할 수 있습니다. 도구들은 한 번 작성되었고 두 엔진 모두 이를 사용합니다.
스택 (The stack)
| 계층 (Layer) | 선택 (Choice) |
|---|---|
| 앱 (App) | Next.js 16 (App Router, Server Actions), React 19 |
| ... | |
| 이는 멀티테넌트(multi-tenant)입니다: 모든 비즈니스는 오직 자신만의 호출, 클라이언트 및 캘린더만 볼 수 있습니다. |
아직 구현되지 않은 기능 (What is not done yet)
- 아직 인바운드 전화 통화는 지원하지 않습니다. 현재 통화는 브라우저에서 이루어집니다. 실제 전화번호가 로드맵의 최우선 항목입니다.
- 취소 및 재조정 기능은 아직 음성 도구가 아닙니다. 발신자는 예약 페이지에서 이 두 가지를 모두 할 수 있습니다.
사용해 보기 (Try it)
git clone https://github.com/Sainigurnoor511/frontdesk-ai.git
cd frontdesk-ai
cp .env.example .env.local # 키 추가
...
http://localhost를 열고 웹사이트 주소를 붙여넣은 다음, 접수원에게 전화를 걸어보세요.
기여에 열려 있습니다. 사용해 보시고 어떤 부분이 작동하지 않았는지, 그리고 다음에 무엇을 처리하도록 하고 싶은지 알려주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기