럭셔리 자동차 정비소를 위한 AI 리셉셔니스트 구축기 - Part 1

4 days ago 6
  • 고급 정비소의 전화 응답 부재로 인한 매출 손실을 해결하기 위해, 실제 전화를 받는 AI 리셉셔니스트 ‘Axle’ 이 개발됨
  • AI는 Retrieval-Augmented Generation(RAG) 기반으로 구축되어, 웹사이트에서 수집한 실제 서비스·가격 정보를 근거로 정확한 답변을 제공
  • Vapi, Deepgram, ElevenLabs, FastAPI, MongoDB Atlas 등을 연동해 전화 연결, 음성 인식·합성, 대화 기록 저장 기능을 구현
  • 음성 품질은 자연스러운 톤과 짧은 문장 구조로 조정되어, 고객에게 친근하면서도 전문적인 응답을 제공
  • 향후 예약 시스템·SMS 알림·콜백 대시보드로 확장 예정이며, 비즈니스 특화 음성 에이전트는 지식 기반과 에스컬레이션 설계가 핵심

AI 리셉셔니스트 구축 과정

  • 고급 자동차 정비소를 운영하는 오빠가 전화 응답 부재로 매달 수천 달러의 손실을 겪는 문제를 해결하기 위해 맞춤형 AI 리셉셔니스트 ‘Axle’ 을 구축
  • 단순 챗봇이 아닌, 실제 전화를 받을 수 있는 음성 기반 에이전트로 설계되어, 가격·운영시간·정책 등 실제 정보를 기반으로 고객 문의에 응답
  • 프로젝트는 세 단계로 구성: 지식 기반 구축(RAG 파이프라인)전화 연결 및 서버 연동음성 품질 및 대화 톤 조정

Step 1: 두뇌 구축 (RAG 파이프라인)

  • Retrieval-Augmented Generation (RAG) 방식을 사용해 AI가 실제 데이터에 기반해 응답하도록 설계
    • 단순 LLM 사용 시 잘못된 가격 제시 등 환각(hallucination) 위험이 있어, 실제 정보만을 근거로 답변하도록 제한
  • 웹사이트 데이터 스크래핑을 통해 21개 이상의 문서를 수집, 서비스 종류·가격·소요 시간·운영시간·결제 방식·보증·대차 정책 등을 포함
  • MongoDB Atlas에 지식 베이스를 저장하고, Voyage AI (voyage-3-large) 모델로 1024차원 벡터 임베딩 생성
    • Atlas Vector Search 인덱스를 통해 의미 기반 검색 수행
  • 고객 질문이 들어오면 동일한 임베딩 모델로 쿼리를 변환해 의미적으로 유사한 상위 3개 문서를 검색
  • Anthropic Claude (claude-sonnet-4-6) 모델을 사용해 검색된 문서를 맥락으로 응답 생성
    • 시스템 프롬프트에 “지식 베이스 외 정보 금지, 간결하고 대화체 유지, 모르면 콜백 제안” 규칙 포함
  • 결과적으로 터미널에서 “오일 교체 비용은?” 같은 질문에 실제 가격과 서비스 내용을 정확히 응답 가능

Step 2: 실제 전화번호 연결

  • AI 두뇌를 실제 전화 시스템에 연결하기 위해 Vapi 플랫폼 사용
    • 전화번호 구매, Deepgram 기반 음성 인식, ElevenLabs 기반 음성 합성, 실시간 함수 호출 기능 제공
  • FastAPI 웹훅 서버 구축
    • Vapi가 고객 질문을 tool-calls 요청으로 /webhook 엔드포인트에 전달
    • 서버는 이를 RAG 파이프라인으로 전달해 Claude 응답을 받아 다시 Vapi로 전송
    • 자연스러운 대화 속도를 유지하기 위해 지연 최소화 필요
  • Ngrok을 이용해 로컬 서버를 외부 HTTPS URL로 노출, 개발 중에도 실시간 테스트 가능
  • Vapi 어시스턴트 설정

    • 인사말, 두 가지 도구(answerQuestion, saveCallback)를 웹훅에 연결
    • 질문에 답하거나, 모를 경우 이름과 전화번호를 받아 콜백 저장
    • 대화 메모리 기능으로 이전 대화 맥락 유지
    • “운영시간이 어떻게 되나요?” → “그럼 타이어 교체는 얼마인가요?” 같은 연속 질의 처리 가능
  • MongoDB에 통화 로그 저장

    • 발신번호, 질문, 응답, 인간 상담 전환 여부, 타임스탬프 기록
    • 콜백 요청은 별도 callbacks 컬렉션에 저장해 후속 연락 가능
    • 이를 통해 고객 문의 패턴과 콜량 분석 가능

Step 3: 음성 품질 조정

  • 텍스트 응답과 음성 응답의 차이를 고려해 음성 전달 최적화 필요
    • 글로는 자연스러운 문장도 음성으로 들으면 부자연스러울 수 있음
  • ElevenLabs 음성 선택

    • 약 20개의 음성을 테스트한 결과, ‘Christopher’ 음성이 가장 자연스럽고 정비소 분위기에 적합
    • 지나치게 로봇 같거나 과도하게 밝은 음성은 부적합
  • 시스템 프롬프트 수정

    • 짧은 문장, 마크다운 제거, “좋은 질문이에요!” 같은 불필요한 문구 삭제
    • 가격은 자연어로 발음 (“forty-five dollars”)
    • 응답은 2~4문장 이내로 제한
    • 목표는 친근하고 전문적인 인간 음성 구현
  • 에스컬레이션(콜백) 흐름 테스트

    • 지식 베이스에 없는 질문 시, AI가 모른다고 말하고 이름·번호 요청 후 MongoDB에 저장
    • 정비소 주인이 직접 후속 연락 가능
  • 통합 테스트 작성

    • RAG 파이프라인, 웹훅 처리, 전체 플로우 검증
    • 잘못된 요청, 검색 결과 없음, 콜백 번호 누락 등 엣지 케이스 처리 포함

기술 스택 구성

  • Vapi (Deepgram & ElevenLabs 통합) — 전화번호, 음성 인식, 음성 합성, 함수 호출
  • Ngrok — 로컬 개발용 HTTPS 터널
  • FastAPI + Uvicorn — 웹훅 서버
  • MongoDB Atlas — 지식 베이스, 벡터 검색, 통화 로그, 콜백 큐
  • Voyage AI (voyage-3-large) — 의미 기반 텍스트 임베딩
  • Anthropic Claude (claude-sonnet-4-6) — 지식 기반 응답 생성
  • Python — pymongo, voyageai, anthropic, fastapi로 구성
  • Copilot CLI — 빌드 자동화 도구

다음 단계

  • 현재 AI는 질문 응답과 콜백 수집 기능까지 완성
  • 다음 목표는 캘린더 연동을 통한 실시간 예약, SMS 알림, 콜백 관리 대시보드, 보안 강화, Railway 배포
  • 완성 시 24시간 운영 가능하며, 전화 응답 누락으로 인한 매출 손실 방지
  • 가장 어려웠던 부분은 코드가 아니라 정비소에 어울리는 음성 톤 구현
  • 핵심 교훈: 비즈니스 특화 음성 에이전트에는 원시 LLM을 그대로 사용하지 말 것
    • 실제 지식 베이스에 기반하고, 모를 때의 대응 흐름(에스컬레이션) 을 반드시 설계해야 함
    • 이는 예외가 아닌 핵심 기능
Read Entire Article