05_꼬리질문_모델_선정.md - 100-hours-a-week/9-team-Devths-WIKI GitHub Wiki
면접 모드 모델 선정
작성 상태: ✅ 완료 (v2 업데이트) 최종 업데이트: 2026-02-09
📋 목차
- 1. 개요
- 2. 요구사항
- 3. 꼬리질문 유형
- 4. 후보 모델 비교
- 5. 최종 선정
- 6. 꼬리질문 생성 전략
- 7. 구현 참조
- 8. 벤치마크 테스트 결과
- 9. 추론 프레임워크 비교
- 10. 면접 평가 시스템 (v2)
- 11. 면접 로직 다이어그램
1. 개요
목적
면접 모드에서 인성/기술 면접 질문 생성, 꼬리질문(Follow-up Question) 생성, 면접 평가까지 전체 모델 선정
사용 사례
- 인성 면접: 5문 고정 질의응답 (vLLM)
- 기술 면접: 메인 질문 + 꼬리질문 3뎁스 (Gemini + vLLM)
- 면접 평가: 모의 면접 종료 후 답변 분석 및 토론 (Gemini Pro + OpenAI)
- 평시 질의응답: vLLM (EXAONE-3.5-8B) 우선, 오류 시 Gemini Flash Fallback — 비용 최적화
핵심 결정
| 기능 | 모델 | 비고 |
|---|---|---|
| 인성 면접 질문 생성 | vLLM (EXAONE-3.5-32B) | 정해진 질문 + 임베딩 모델, 기술은 깊게 인성은 넓게 |
| 기술 면접 메인 질문 | Gemini API | 다양한 데이터가 필요하여 Gemini API 유지, LangGraph 도입 |
| 기술 면접 꼬리질문 | vLLM (EXAONE-3.5-32B) | 3뎁스까지, 앞의 문답들을 vLLM에 넣어서 질문 생성 |
| 면접 평가 (1단계) | Gemini Pro | 모의 면접 종료 버튼 클릭 시 자동 분석 |
| 면접 평가 (2단계) | OpenAI + Gemini Discussion | "분석 결과 다시 받기" 버튼 클릭 시 토론 |
| 평시 질의응답 | vLLM (EXAONE-3.5-8B) → Gemini Flash (Fallback) | 자체 서빙으로 비용 최적화, 오류 시 Gemini Fallback |
2. 요구사항
| 요구사항 | 목표 | 우선순위 |
|---|---|---|
| 응답 속도 | 2초 이내 | 높음 |
| 질문 관련성 | 이전 답변과 90% 이상 연관 | 높음 |
| 자연스러움 | 실제 면접관 수준 | 높음 |
| 한국어 품질 | 4.5/5.0 이상 | 높음 |
| 비용 | 합리적 (속도 우선) | 중간 |
3. 꼬리질문 유형
3.1 심화 질문 (Deep Dive)
| 유형 | 설명 | 예시 |
|---|---|---|
| 기술 심화 | 기술적 세부사항 확인 | "Redis 캐싱에서 TTL 전략은 어떻게 설정하셨나요?" |
| 프로세스 확인 | 문제 해결 과정 검증 | "해당 이슈를 어떻게 디버깅하셨나요?" |
| 결과 정량화 | 정량적 성과 확인 | "응답 시간이 70% 단축되었다고 하셨는데, 구체적인 수치는요?" |
3.2 STAR 보완 질문
| STAR 요소 | 부족 시 질문 예시 |
|---|---|
| S (상황) | "당시 팀 규모와 프로젝트 상황을 설명해주세요" |
| T (과제) | "본인이 맡은 구체적인 역할은 무엇이었나요?" |
| A (행동) | "어떤 기술/방법을 선택하셨고, 그 이유는요?" |
| R (결과) | "프로젝트 결과가 비즈니스에 미친 영향은요?" |
3.3 검증 질문
| 유형 | 설명 | 예시 |
|---|---|---|
| 일관성 확인 | 이전 답변과의 일관성 검증 | "앞서 말씀하신 내용과 연결해서..." |
| 깊이 확인 | 실제 경험 여부 확인 | "해당 기술을 직접 구현하셨나요?" |
| 확장 질문 | 관련 지식 확인 | "비슷한 상황에서 다른 접근법은 고려하셨나요?" |
4. 후보 모델 비교
4.1 Gemini Flash ✅ 선정 (기본)
개요:
- Google의 경량 LLM
- 빠른 응답 속도
장점:
- ✅ 빠른 응답 (1~2초)
- ✅ 한국어 자연스러움 4.8/5.0
- ✅ 스트리밍 지원 (실시간 느낌)
- ✅ 낮은 비용
단점:
- ❌ 복잡한 답변 분석 시 간혹 부정확
비용: $0.075/1M 입력 토큰, $0.30/1M 출력 토큰
4.2 Gemini Pro ✅ 선정 (복잡한 답변용)
개요:
- Google의 고성능 LLM
- 복잡한 추론에 적합
장점:
- ✅ 높은 정확도
- ✅ 복잡한 답변 분석 가능
- ✅ 문맥 이해 우수
단점:
- ❌ Flash 대비 느림 (2~4초)
- ❌ 비용 높음
비용: $1.25/1M 입력 토큰, $5/1M 출력 토큰
용도: 기술 심화 질문, 복잡한 STAR 분석
4.3 OpenAI GPT-4 (비교용)
개요:
- OpenAI의 플래그십 LLM
장점:
- ✅ 높은 추론 능력
- ✅ 일관된 품질
단점:
- ❌ Gemini 대비 비용 높음
- ❌ 한국어 성능 Gemini보다 약간 낮음
용도: Gemini 장애 시 Fallback
4.4 EXAONE-3.5-32B ✅ V2+
개요:
- LG AI Research의 한국어 특화 32B 모델
- 벤치마크 테스트에서 85-90점 품질 달성
- vLLM을 통한 로컬 서빙으로 프라이버시 보장
장점:
- ✅ 꼬리질문 품질 최고 (85-90점)
- ✅ 한국어 자연스러움 (95%+ 한국어 비율)
- ✅ JSON 준수율 100%
- ✅ 데이터 프라이버시 (로컬 서빙)
- ✅ Apache 2.0 라이선스
단점:
- ❌ Gemini 대비 응답 느림 (~20-30초)
- ❌ A100 40GB GPU 필요
- ❌ 인프라 비용 높음 (~$2,160/월)
테스트 결과
| 평가 항목 | 7.8B | 32B |
|---|---|---|
| 질문 유형 일치 | 60% | 80% |
| 키워드 포함 | 40% | 60% |
| 종합 품질 점수 | 75-80점 | 85-90점 ✅ |
용도: V2+ 면접 모드에서 고품질 꼬리질문 생성
4.5 EXAONE-3.5-7.8B (비용 효율 대안)
개요:
- V2+ 일반 채팅용, 비용 효율 중시 시 사용
테스트 결과:
- 품질 점수: 75-80점
- 응답 속도: ~10-15초
- L4 24GB로 구동 가능 (~$576/월)
5. 최종 선정
선정 전략 (V2 — 현재)
인성 면접 모드
| 단계 | 모델 | 선정 근거 |
|---|---|---|
| 질문 생성 (Q1~Q5) | vLLM (EXAONE-3.5-32B) | 정해진 질문 + 임베딩 모델, 프라이버시 보장 |
| 꼬리질문 | 없음 | 인성 면접은 5문 고정, 꼬리질문 미적용 |
| 평가 (1단계) | Gemini Pro | 모의 면접 종료 버튼 클릭 시 자동 분석 |
| 평가 (2단계) | OpenAI + Gemini Discussion | "분석 결과 다시 받기" 버튼 (사용자 수동 트리거) |
기술 면접 모드
| 단계 | 모델 | 선정 근거 |
|---|---|---|
| 메인 질문 (Q1~Q3) | Gemini API | 다양한 데이터가 필요, LangGraph 도입으로 질문 고도화 |
| 꼬리질문 (3뎁스) | vLLM (EXAONE-3.5-32B) | 앞의 문답들을 컨텍스트로 넣어 질문 생성, 품질 85-90점 |
| 평가 (1단계) | Gemini Pro | 모의 면접 종료 버튼 클릭 시 자동 분석 |
| 평가 (2단계) | OpenAI + Gemini Discussion | "분석 결과 다시 받기" 버튼 (사용자 수동 트리거) |
평시 질의응답 (비용 최적화)
| 단계 | 모델 | 선정 근거 |
|---|---|---|
| 일반 대화 (Primary) | vLLM (EXAONE-3.5-8B) | L4 GPU 서버리스로 자체 서빙, API 호출 비용 $0 (인프라 비용만) |
| 일반 대화 (Fallback) | Gemini Flash | vLLM 오류·과부하·타임아웃 시 자동 전환, 저비용 API |
비용 최적화 전략
- 평시 질의응답은 면접 대비 호출 빈도가 높아 API 비용이 누적됨
- EXAONE 8B를 L4 서버리스로 자체 서빙하여 API 호출 비용을 제거
- vLLM 장애·과부하·콜드스타트 등 오류 발생 시에만 Gemini Flash로 Fallback하여 가용성 보장
- 결과적으로 대부분의 평시 대화는 자체 서빙(비용 $0)으로 처리, 소수의 Fallback만 Gemini 비용 발생
Fallback 전략
| 상황 | Fallback 모델 | 비고 |
|---|---|---|
| 평시: vLLM 8B 오류 | Gemini Flash | 과부하·타임아웃·콜드스타트 시 자동 전환 |
| 면접: vLLM 32B 과부하/장애 | Gemini Flash | 꼬리질문 생성 Fallback |
| Gemini API 장애 | GPT-4o | 기술 면접 메인 질문 Fallback |
| OpenAI 장애 | Gemini Pro 단독 분석 | 2단계 토론 불가 시 1단계만 제공 |
라우팅 전략 (V2)
def select_model(
mode: str, # "chat" | "personality" | "technical"
stage: str, # "question" | "followup" | "evaluation"
depth: int = 0 # 꼬리질문 뎁스 (0=메인, 1=1차, 2=2차)
) -> str:
"""모드별 모델 선택"""
# 평시 질의응답: vLLM 8B 우선, 오류 시 Gemini Flash Fallback
if mode == "chat":
return "vllm-exaone-8b" # Fallback: gemini-flash
# 인성 면접: 전부 vLLM 32B
if mode == "personality":
if stage == "question":
return "vllm-exaone-32b"
if stage == "evaluation":
return "gemini-pro"
# 기술 면접
if mode == "technical":
if stage == "question" and depth == 0:
return "gemini-api" # 메인 질문은 Gemini
if stage == "followup" or depth > 0:
return "vllm-exaone-32b" # 꼬리질문은 vLLM
if stage == "evaluation":
return "gemini-pro"
return "gemini-flash" # fallback
async def chat_with_fallback(user_message: str, context: dict) -> str:
"""평시 질의응답 — vLLM 8B 우선, 오류 시 Gemini Fallback"""
try:
return await call_vllm_8b(user_message, context)
except (TimeoutError, ConnectionError, Exception) as e:
logger.warning(f"vLLM 8B 오류, Gemini Fallback 전환: {e}")
return await call_gemini_flash(user_message, context)
비용 분석
■ 평시 질의응답 (비용 최적화)
- Primary: vLLM EXAONE 8B (자체 서빙) → API 비용 $0
- Fallback: Gemini Flash (오류 시에만) → 극소량 API 비용
- 효과: 기존 Gemini 전량 호출 대비 API 비용 대폭 절감
■ 인성 면접 (5문, 꼬리질문 없음)
- vLLM: 자체 서빙 (인프라 비용만)
- 평가: Gemini Pro 1회 ~$0.02-0.05
■ 기술 면접 (3문 × 3뎁스 = 최대 9 Q&A)
- Gemini API (메인 질문 3회): ~$0.003
- vLLM (꼬리질문 6회): 자체 서빙
- 평가: Gemini Pro 1회 ~$0.02-0.05
■ 2단계 토론 (선택적)
- OpenAI GPT-4o: ~$0.05-0.10 추가
월간 예상 비용 (월 500회 면접 + 월 2,000회 평시 대화):
- 평시 대화 (vLLM 8B): 자체 서빙 $0 (인프라 비용만)
- 평시 Fallback (Gemini Flash, 약 5%): 100 × $0.0005 = $0.05
- Gemini API (메인 질문): 500 × 3 × $0.001 = $1.50
- Gemini Pro (평가): 500 × $0.05 = $25.00
- OpenAI (토론, 약 20% 사용): 100 × $0.10 = $10.00
- 총 API 비용: ~$36.55/월 + vLLM 인프라 (8B L4 + 32B A100)
6. 꼬리질문 생성 전략
적용 대상: 기술 면접 모드에서만 적용. 인성 면접은 Q1~Q5 고정 5문으로 꼬리질문 없음.
6.1 면접 모드별 질문 구조
인성 면접 모드 (vLLM)
[대화 시작] → [인성 면접 모드]
│
Q1 ──→ A1
Q2 ──→ A2
Q3 ──→ A3
Q4 ──→ A4
Q5 ──→ A5
│
▼
[모의 면접 종료 버튼 클릭]
→ Gemini Pro 평가
→ (선택) "분석 결과 다시 받기" → OpenAI & Gemini Discussion
- 정해진 질문에 따라 답함 → vLLM 모델 사용 + 임베딩 모델
- 기술은 깊게, 인성은 넓게
기술 면접 모드 (Gemini + vLLM)
[대화 시작] → [기술 면접 모드]
│ Gemini
Q1 (Gemini) ──→ A1
Q1-2 (vLLM) ──→ A1-2 ← 3번째 뎁스까지 질문이
Q1-3 (vLLM) ──→ A1-3 간다면, 앞의 문답들을
│ vLLM vLLM에 넣어서 질문 생성
Q2 (Gemini) ──→ A2
Q2-2 (vLLM) ──→ A2-2
Q2-3 (vLLM) ──→ A2-3
│ vLLM
Q3 (Gemini) ──→ A3
Q3-2 (vLLM) ──→ A3-2
Q3-3 (vLLM) ──→ A3-3
│
▼
[모의 면접 종료 버튼 클릭]
→ Gemini Pro 평가
→ (선택) "분석 결과 다시 받기" → OpenAI & Gemini Discussion
- 다양한 데이터가 필요함 → 따라서 Gemini API 유지, 질문 고도화를 위하여 LangGraph 도입
- 꼬리질문은 앞의 문답 컨텍스트를 vLLM에 넣어서 생성
6.2 꼬리질문 생성 파이프라인 (기술 면접)
[메인 질문 — Gemini API]
│
▼
[사용자 답변 수신]
│
▼
[답변 분석 — vLLM]
├── STAR 요소 확인
├── 기술 키워드 추출
└── 답변 깊이 평가
│
▼
[꼬리질문 생성 — vLLM (EXAONE-3.5-32B)]
├── 앞의 Q&A 컨텍스트 포함
├── 최대 2회 (3뎁스)
└── 답변이 충분하면 스킵 → 다음 메인 질문
│
▼
[스트리밍 응답]
6.3 꼬리질문 프롬프트
FOLLOWUP_PROMPT = """
당신은 면접관입니다. 지원자의 답변을 분석하고 적절한 꼬리질문을 생성하세요.
## 면접 질문
{original_question}
## 지원자 답변
{answer}
## STAR 분석
- Situation (상황): {star_situation}
- Task (과제): {star_task}
- Action (행동): {star_action}
- Result (결과): {star_result}
## 꼬리질문 생성 규칙
1. 부족한 STAR 요소를 보완하는 질문
2. 기술적 세부사항을 확인하는 질문
3. 정량적 성과를 확인하는 질문
4. 자연스럽고 면접관다운 어투 사용
## 출력 형식 (JSON)
{
"followup_type": "star_complement|technical_deep_dive|verification",
"question": "생성된 꼬리질문",
"focus_area": "질문의 핵심 목적",
"expected_answer_elements": ["기대하는 답변 요소들"]
}
"""
6.4 꼬리질문 횟수 제한
기술 면접에서만 적용. 인성 면접은 꼬리질문 없음.
MAX_FOLLOWUP_DEPTH = 2 # 메인 질문당 최대 꼬리질문 횟수 (3뎁스: Q1 → Q1-2 → Q1-3)
MAX_MAIN_QUESTIONS = 3 # 기술 면접 메인 질문 수
async def generate_followup(
mode: str, # "personality" | "technical"
main_question: str,
qa_history: list, # 해당 메인 질문의 Q&A 히스토리
followup_depth: int # 현재 뎁스 (0=메인, 1=1차 꼬리, 2=2차 꼬리)
) -> Optional[str]:
"""꼬리질문 생성 (기술 면접 전용)"""
# 인성 면접은 꼬리질문 없음
if mode == "personality":
return None
# 최대 뎁스 초과 시 다음 메인 질문으로
if followup_depth >= MAX_FOLLOWUP_DEPTH:
return None
# 답변이 충분히 좋으면 꼬리질문 스킵
if is_answer_complete(qa_history[-1]["answer"]):
return None
# vLLM에 앞의 문답 컨텍스트를 넣어 꼬리질문 생성
return await generate_followup_with_vllm(main_question, qa_history)
7. 구현 참조
코드 파일
3.model/app/services/rag_service.py-generate_followup_question()3.model/app/services/llm_service.py- LLM 호출3.model/app/services/star_analyzer.py- STAR 분석
API 엔드포인트
POST /ai/chat(mode: interview) - 면접 모드에서 자동 호출
사용 예시
# 면접 모드에서 자동 처리
# 요청 (내부 처리)
{
"original_question": "가장 어려웠던 프로젝트 경험을 말씀해주세요",
"answer": "대용량 트래픽 처리 프로젝트가 어려웠습니다",
"star_analysis": {
"situation": "incomplete",
"task": "missing",
"action": "incomplete",
"result": "missing"
}
}
# 응답
{
"followup_type": "star_complement",
"question": "해당 프로젝트에서 본인이 맡은 구체적인 역할과 과제는 무엇이었나요?",
"focus_area": "Task 보완",
"expected_answer_elements": [
"담당 역할",
"해결해야 할 과제",
"팀 내 책임"
]
}
8. 벤치마크 테스트 결과
📒 테스트 코드: 99.꼬리질문 테스트.ipynb
테스트 환경
| 항목 | 7.8B 테스트 | 32B 테스트 |
|---|---|---|
| GPU | NVIDIA L4 (24GB) | NVIDIA A100 40GB |
| 양자화 | BitsAndBytes 4bit (NF4) | BitsAndBytes 4bit |
| 런타임 | Google Colab | Google Colab Pro |
테스트 케이스 (5개)
| ID | 카테고리 | 상황 | 기대 유형 |
|---|---|---|---|
| tech_deep_dive_1 | 기술 심화 | Redis 캐싱 도입 | technical_deep_dive |
| star_complement_1 | STAR 보완 | 어려운 프로젝트 경험 | star_complement |
| tech_deep_dive_2 | 기술 심화 | MSA 전환 경험 | technical_deep_dive |
| verification_1 | 검증 질문 | 시스템 설계 주장 | verification |
| star_complement_2 | STAR 보완 | 갈등 해결 경험 | star_complement |
성능 비교 결과
| 모델 | 응답시간 | TPS | JSON 성공률 | 품질 점수 |
|---|---|---|---|---|
| EXAONE-3.5-7.8B (L4) | ~10-15초 | ~35 | 100% | 75-80점 |
| EXAONE-3.5-32B (A100) | ~20-30초 | ~20 | 100% | 85-90점 ✅ |
| Gemini Flash (비교) | ~2-3초 | N/A | 100% | 80-85점 |
품질 평가 세부 항목
| 평가 항목 | 가중치 | 7.8B | 32B |
|---|---|---|---|
| JSON 구조 준수 | 20% | 100% | 100% |
| 질문 유형 일치 | 25% | 60% | 80% |
| 키워드 포함 | 25% | 40% | 60% |
| 질문 길이 적절성 | 15% | 100% | 100% |
| 한국어 비율 | 15% | 100% | 100% |
| 종합 점수 | 100% | 75점 | 88점 ✅ |
✅ 결론: 꼬리질문 품질은 32B 모델이 7.8B보다 10-15점 우수
9. 추론 프레임워크 비교
Transformers vs vLLM Docker
| 항목 | Transformers (직접) | vLLM Docker ✅ |
|---|---|---|
| 동시 요청 | 1개씩 순차 | 여러 요청 배치 |
| TPS (동시) | ~35 | ~70 |
| 메모리 효율 | 기본 | PagedAttention |
| 스트리밍 | 수동 구현 | SSE 기본 지원 |
| 배포 | 간단 (pip) | Docker 필요 |
10. 면접 평가 시스템 (v2)
v2에서 면접 평가 버튼을 추가하여, 면접 종료 후 답변 분석 및 개선 제안을 제공합니다.
10.1 평가 흐름
[모의 면접 진행 완료]
│
▼
[모의 면접 종료 버튼 클릭]
│
▼
[1단계: Gemini Pro 자동 분석]
├── 전체 Q&A를 Gemini Pro에 전달
├── 각 질문별 답변 평가 (적절/부적절/보완필요)
├── 부적절·보완필요 시 추천 답변 제시
└── 종합 점수 및 피드백 생성
│
▼
[사용자에게 결과 표시]
│
▼ (선택적 — 사용자가 "분석 결과 다시 받기" 버튼 클릭)
│
[2단계: OpenAI & Gemini Discussion]
├── GPT-4o가 동일 Q&A를 독립 분석
├── Gemini 분석 vs GPT-4o 분석 비교
├── 불일치 항목 토론 (1라운드)
└── 합의된 최종 분석 + 개선된 추천 답변 출력
10.2 모델 선정 근거
| 단계 | 모델 | 선정 근거 |
|---|---|---|
| 1단계 | Gemini Pro (thinking 모드) | 심층 추론으로 답변 품질 정밀 평가, thinking_level="HIGH" |
| 2단계 | GPT-4o + Gemini Pro | 서로 다른 LLM의 관점으로 다각도 분석, LangGraph 토론 패턴 |
10.3 평가 기준
| 기준 | 설명 | 가중치 |
|---|---|---|
| 관련성 | 질문에 대한 답변의 적합도 | 25% |
| 구체성 | 수치·사례 등 구체적 근거 포함 여부 | 25% |
| 논리성 | 답변의 논리적 일관성 | 25% |
| STAR 기법 | Situation-Task-Action-Result 요소 충족도 | 25% |
10.4 비용
| 단계 | 발생 조건 | 예상 비용/건 |
|---|---|---|
| 1단계 (자동) | 매 면접 종료 시 | ~$0.02-0.05 |
| 2단계 (수동) | 사용자가 원할 때만 | ~$0.05-0.10 추가 |
- 1단계만으로도 충분한 분석 제공 (대부분 여기서 끝)
- 2단계는 사용자 선택이므로 불필요한 비용 발생 없음
11. 면접 로직 다이어그램
아래는 면접 모드의 전체 플로우를 나타낸 다이어그램입니다.
11.1 인성 면접 모드
System User Result
(vLLM)
┌──────────┐
┌──────┐ ┌──────┐ ┌──────┐ │ Gemini │
│인성 │───→│ Q1 │───────→│ A1 │ │ │
│면접 │ ├──────┤ ├──────┤ ───→ │ 모의 면접│
│모드 │───→│ Q2 │───────→│ A2 │ │ 종료 버튼│
│ │ ├──────┤ ├──────┤ │ 클릭 │
│정해진│───→│ Q3 │───────→│ A3 │ └────┬─────┘
│질문에│ ├──────┤ ├──────┤ │
│따라 │───→│ Q4 │───────→│ A4 │ ┌────▼─────┐
│답함 │ ├──────┤ ├──────┤ │분석 결과 │
│+임베 │───→│ Q5 │───────→│ A5 │ │다시 받기 │──→ OpenAI &
│딩모델│ └──────┘ └──────┘ │버튼 클릭 │ Gemini
└──────┘ └──────────┘ Discussion
기술은 깊게, 인성은 넓게
11.2 기술 면접 모드
System User Result
Gemini
┌──────┐ ┌──────┐ ┌──────┐ ┌──────────┐
│기술 │───→│ Q1 │────────────→│ A1 │ │ Gemini │
│면접 │ │(Gem) │ ├──────┤ │ │
│모드 │ ├──────┤ vLLM │ A1-2 │ ───→ │ 모의 면접│
│ │ │Q1-2 │────────────→├──────┤ │ 종료 버튼│
│다양한│ │(vLLM)│ │ A1-3 │ │ 클릭 │
│데이터│ ├──────┤ vLLM └──────┘ └────┬─────┘
│필요 │ │Q1-3 │────────────→ │
│→Gem │ │(vLLM)│ ┌────▼─────┐
│API │ ├──────┤ ┌──────┐ │분석 결과 │
│유지, │───→│ Q2 │────────────→│ A2 │ │다시 받기 │──→ OpenAI &
│질문 │ │(Gem) │ ├──────┤ │버튼 클릭 │ Gemini
│고도화│ ├──────┤ vLLM │ A2-2 │ └──────────┘ Discussion
│위해 │ │Q2-2 │────────────→├──────┤
│Lang │ │(vLLM)│ │ A2-3 │
│Graph │ ├──────┤ vLLM └──────┘
│도입 │ │Q2-3 │────────────→
│ │ │(vLLM)│
│3번째 │ ├──────┤ ┌──────┐
│뎁스 │───→│ Q3 │────────────→│ A3 │
│까지 │ │(Gem) │ ├──────┤
│질문이│ ├──────┤ vLLM │ A3-2 │
│간다면│ │Q3-2 │────────────→├──────┤
│앞의 │ │(vLLM)│ │ A3-3 │
│문답들│ ├──────┤ vLLM └──────┘
│을vLLM│ │Q3-3 │────────────→
│에넣어│ │(vLLM)│
│질문 │ └──────┘
│생성 │
└──────┘
11.3 모델 역할 요약
| 역할 | 평시 질의응답 | 인성 면접 | 기술 면접 | 면접 평가 |
|---|---|---|---|---|
| Primary 모델 | vLLM (EXAONE-3.5-8B) | vLLM (EXAONE-3.5-32B) | Gemini API (메인) + vLLM (꼬리) | - |
| Fallback 모델 | Gemini Flash | Gemini Flash | GPT-4o | - |
| 1단계 분석 | - | - | - | Gemini Pro (thinking) |
| 2단계 토론 | - | - | - | OpenAI GPT-4o + Gemini Pro |
| 트리거 | 사용자 채팅 | 면접 시작 | 면접 시작 | 종료 버튼(1단계), 다시 받기 버튼(2단계) |
| 비용 | 자체 서빙 $0 | 자체 서빙 $0 | 메인만 API (~$0.001/건) | ~$0.02-0.10/건 |
문서 이력
| 날짜 | 내용 |
|---|---|
| 2026-01-27 | 초안: 꼬리질문 모델 선정 (V1 Gemini 기반, V2+ EXAONE 기반) |
| 2026-02-09 | V2 업데이트: 인성/기술 면접 모드 분리, 면접 평가 시스템(Gemini Pro + OpenAI Discussion) 추가, 면접 로직 다이어그램 추가 |
| 2026-02-09 | 평시 질의응답 모델 결정: vLLM EXAONE 8B (Primary) + Gemini Flash (Fallback) — 비용 최적화 전략 |