04_채팅_모델_선정.md - 100-hours-a-week/9-team-Devths-WIKI GitHub Wiki
채팅 모델 선정
작성 상태: ✅ 완료 최종 업데이트: 2026-01-25
📋 목차
1. 개요
목적
일반 대화 및 취업/진로 상담을 위한 채팅 모델 선정
사용 사례
- 취업 준비 관련 일반 질문 답변
- 진로 상담 및 조언
- 이력서/포트폴리오 관련 질문
- RAG 기반 개인화된 상담
2. 요구사항
| 요구사항 | 목표 | 우선순위 |
|---|---|---|
| 응답 속도 | 3초 이내 | 높음 |
| 한국어 자연스러움 | 4.5/5.0 이상 | 높음 |
| 문맥 이해 | 대화 히스토리 활용 | 높음 |
| 비용 | 월 $50 이하 | 중간 |
| RAG 연동 | VectorDB 검색 결과 활용 | 높음 |
3. 후보 모델 비교
3.1 Gemini Flash ✅ 선정
개요:
- Google의 경량 LLM
- 빠른 응답 속도
장점:
- ✅ 빠른 응답 (1~2초)
- ✅ 한국어 자연스러움 4.8/5.0
- ✅ 낮은 비용 (~$0.0005/요청)
- ✅ 스트리밍 지원
단점:
- ❌ 복잡한 추론에서 간혹 오류
- ❌ API 의존
비용: $0.075/1M 입력 토큰, $0.30/1M 출력 토큰
3.2 Gemini Pro
개요:
- Google의 고성능 LLM
장점:
- ✅ 높은 정확도
- ✅ 복잡한 추론 가능
- ✅ 긴 문맥 지원 (1M 토큰)
단점:
- ❌ Flash 대비 느림 (2~4초)
- ❌ 비용 높음
용도: 복잡한 분석이 필요한 경우 Fallback
3.3 vLLM (Llama-3-Korean-8B)
개요:
- 오픈소스 한국어 LLM
- 자체 GPU 서버에서 호스팅
장점:
- ✅ 비용 고정 (GPU 서버 비용만)
- ✅ 데이터 프라이버시
- ✅ 커스터마이징 가능
단점:
- ❌ 인프라 관리 필요
- ❌ Gemini 대비 정확도 낮음
- ❌ 초기 설정 복잡
용도: V2+ 비용 절감 옵션
4. 최종 선정
선정 모델: Gemini Flash
| 항목 | 내용 |
|---|---|
| 모델명 | gemini-3-flash-preview |
| 선정 근거 | 빠른 응답, 한국어 우수, 비용 효율 |
| 월 예상 비용 | ~$20 (월 5,000건 기준) |
| Fallback | Gemini Pro (복잡한 질문) |
비용 분석
월간 예상 사용량:
- 일반 채팅: 3,000건/월
- 상담 대화: 2,000건/월
- 평균 토큰: 입력 500 + 출력 300 = 800 토큰/요청
월간 비용:
- 입력: 5,000 × 500 = 2.5M 토큰 × $0.075/1M = $0.19
- 출력: 5,000 × 300 = 1.5M 토큰 × $0.30/1M = $0.45
- 총: ~$0.64/월 (매우 저렴)
5. 채팅 모드별 전략
5.1 일반 대화 (GENERAL)
사용자: "취업 준비 어떻게 해야 해?"
│
▼
[RAG 검색] - 사용자 이력서/포트폴리오 참조 (있는 경우)
│
▼
[Gemini Flash] - 개인화된 조언 생성
│
▼
응답: "경력과 기술 스택을 고려했을 때..."
5.2 분석 요청 (ANALYSIS)
사용자: "내 이력서 분석해줘"
│
▼
[VectorDB 검색] - 저장된 이력서/채용공고 조회
│
▼
[Gemini Flash/Pro] - 분석 수행
│
▼
응답: "강점: ..., 약점: ..., 개선점: ..."
5.3 Fallback 전략
async def chat_with_fallback(message: str, context: dict):
try:
# 1차: Gemini Flash
response = await gemini_flash.generate(message, context)
if is_valid_response(response):
return response
except Exception as e:
logger.warning(f"Gemini Flash failed: {e}")
# 2차: Gemini Pro (Fallback)
return await gemini_pro.generate(message, context)
6. 구현 참조
코드 파일
3.model/app/services/llm_service.py- Gemini API 호출3.model/app/services/rag_service.py- RAG 기반 채팅3.model/app/api/routes/ai.py- 채팅 엔드포인트
API 엔드포인트
POST /ai/chat- 채팅 (SSE 스트리밍)
사용 예시
# 요청
{
"room_id": "room_001",
"user_id": "user_123",
"message": "백엔드 개발자로 취업하려면 어떤 준비가 필요해?",
"model": "gemini",
"context": {
"mode": "general"
},
"history": []
}
# 응답 (SSE 스트리밍)
data: {"content": "백엔드", "done": false}
data: {"content": " 개발자로", "done": false}
data: {"content": " 취업하려면...", "done": false}
data: {"content": "", "done": true}