
Gemini, Groq, 그리고 LanceDB를 사용하여 프로덕션급 WhatsApp AI 어시스턴트를 구축한 방법
요약
Gemini, Groq, Ollama를 체이닝하여 가용성을 높인 WhatsApp AI 어시스턴트 구축 사례를 소개합니다. LanceDB를 활용한 RAG 구현, 음성 전사, 이미지 분석 등 다양한 기능을 월 5달러 규모의 VPS 환경에서 효율적으로 운영하는 방법을 다룹니다.
핵심 포인트
- Gemini-Groq-Ollama로 이어지는 3단계 LLM 캐스케이드로 다운타임 최소화
- LanceDB 벡터 스토어를 활용한 RAG 기반의 대화 문맥 기억 기능
- Whisper를 이용한 로컬 음성 전사 및 멀티모달(이미지) 분석 지원
- 저비용 VPS 환경에서 구동 가능한 고효율 셀프 호스팅 아키텍처
요약 (TL;DR): 저는 절대 다운되지 않는 셀프 호스팅(self-hosted) WhatsApp AI 어시스턴트를 구축했습니다. 이 어시스턴트는 3개의 LLM 제공업체(Gemini → Groq → Ollama)를 체이닝(chaining)하고, 벡터 검색(vector search)을 통해 모든 것을 기억하며, Whisper를 사용하여 음성 메모를 로컬에서 전사(transcribe)하고, PDF를 읽으며, 20개 이상의 명령어를 지원합니다. 이 모든 시스템은 월 5달러짜리 VPS에서 실행됩니다.
⭐ GitHub에서 Star를 눌러주세요 이 내용이 유용하다고 생각하신다면!
문제 (The Problem)
저는 다음과 같은 기능을 갖춘 WhatsApp 어시스턴트를 원했습니다:
- 여러 AI 모델(단 하나가 아닌)을 사용하여 질문에 답변
- RAG(검색 증강 생성)를 통해 과거 대화의 문맥을 기억
- 음성 메모를 전사하고 응답
- 채팅으로 전송된 이미지 분석
- YouTube, TikTok, Instagram, Spotify에서 미디어 다운로드
- 대시보드에서 실시간 모니터링 가능
기존 솔루션들은 폐쇄형 소스(closed-source)이거나, 단일 모델에 국한되어 있거나, 음성/시각 기능을 지원하지 않았습니다. 그래서 저는 직접 만들었습니다.
아키텍처 (The Architecture)
WhatsApp (whatsapp-web.js를 통해)
│
├── 메시지 라우터 (Message Router)
...
3단계 LLM 캐스케이드 (The 3-Tier LLM Cascade)
가장 흥미로운 설계 결정은 AI 캐스케이드(cascade)였습니다. 단일 제공업체에 의존하는 대신, 봇은 순서대로 시도합니다:
async function generateResponse(prompt, context) {
// 1단계: Gemini 시도 (최고 품질, 속도 제한 있음)
try {
...
이것이 중요한 이유:
- 다운타임 제로 (Zero downtime) — 한 제공업체가 다운되거나 속도 제한(rate-limited)에 걸리면, 다음 제공업체가 이어받습니다.
- 비용 최적화 (Cost optimization) — Gemini와 Groq은 관대한 무료 티어(free tiers)를 제공합니다.
- 개인정보 보호 옵션 (Privacy option) — Ollama는 완전히 로컬에서 실행됩니다.
RAG: 봇에게 지식 가르치기 (RAG: Teaching the Bot Your Knowledge)
!learn 명령어를 사용하면 문서를 LanceDB 벡터 스토어(vector store)에 입력할 수 있습니다. 누군가 질문을 하면, 봇은 답변하기 전에 의미론적 검색(semantic search)을 수행합니다:
사용자: !learn https://mycompany.com/docs/faq
봇: ✅ FAQ 페이지에서 47개의 청크(chunks)를 학습했습니다
사용자: 반품 정책이 어떻게 되나요?
...
이는 봇이 단순히 학습 데이터(training data)를 바탕으로 답변하는 것이 아니라, 사용자의 문서를 바탕으로 답변한다는 것을 의미합니다.
로컬 Whisper를 활용한 음성 메모 (Voice Notes)
누군가 음성 메시지를 보내면, 봇은 다음과 같은 과정을 거칩니다:
- WhatsApp에서 OGG 오디오를 다운로드합니다.
- FFmpeg를 사용하여 WAV로 변환합니다.
- 로컬 Whisper 모델을 사용하여 텍스트로 변환(transcribe)합니다.
- 변환된 텍스트를 AI 엔진에 전달합니다. 텍스트 변환을 위해 클라우드 API가 필요하지 않으며, 모든 과정이 사용자의 기기에서 실행됩니다.
실시간 대시보드
Express + WebSocket 대시보드는 다음 항목을 보여줍니다:
- 📊 타임스탬프가 포함된 실시간 대화 피드
- 📈 모델 제공자별 토큰(token) 사용량
- 🖥️ 시스템 상태 (CPU, RAM, 가동 시간)
- 🔧 구성 관리 (Configuration management)
직접 실행하기
git clone https://github.com/Charly-bite/whatsapp-ai-bot
cd whatsapp-ai-bot
npm install
...
WhatsApp으로 QR 코드를 스캔하면 즉시 실행됩니다.
배운 점
- **LLM 캐스케이딩 (LLM cascading)**은 더 많은 사람들이 사용해야 할 프로덕션 패턴입니다.
- LanceDB를 활용한 RAG는 설정이 놀라울 정도로 쉽습니다 (외부 DB가 필요하지 않음).
- 로컬 Whisper는 음성 메모 처리에 충분히 훌륭합니다 (API 비용 발생 없음).
- PM2는 프로덕션 환경의 Node.js 봇에 필수적입니다 (자동 재시작, 로그, 모니터링).
시도해 보세요
전체 프로젝트는 오픈 소스입니다:
🔗 github.com/Charly-bite/whatsapp-ai-bot
이 글이 도움이 되었다면, 저장소(repo)에 ⭐를 남겨주세요 — 다른 사람들이 프로젝트를 발견하는 데 큰 도움이 됩니다!
저는 AI와 보안의 접점에서 도구를 만들고 있는 Universidad de Guadalajara의 사이버 보안 학생 Carlos입니다. GitHub와 LinkedIn에서 저를 찾아보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기