Skip to content

Repository files navigation

AI 모의 면접 에이전트 시스템

같은 이력서를 넣어도, 회사가 다르면 질문이 다릅니다. Solar Pro3의 고유 기능을 역할별로 매핑한 한국형 AI 모의면접 에이전트 시스템

Upstage Solar Pro3 AI Agent 해커톤 출품작입니다. 자소서·이력서·포트폴리오·채용공고를 분석해 그 회사의 실제 면접 스타일을 추론하고, 5개 에이전트가 협력해 동적으로 면접을 진행하는 음성 기반 모의면접 서비스입니다.

프로젝트 정보

항목 내용
작품명 AI 모의 면접 에이전트 시스템
팀명 솔솔(solsol)
팀원 김나경, 박민영, 유지예, 이정연
핵심 모델 Upstage Solar Pro3, Solar Mini
주요 형태 웹 기반 음성 모의면접 서비스

🎯 이 프로젝트가 다른 이유

1. 회사가 바뀌면 질문이 바뀐다

메타 에이전트가 회사명과 채용공고를 분석해 그 회사의 실제 면접 스타일을 LLM으로 추론합니다. 같은 이력서를 넣어도 토스 면접과 삼성전자 면접은 톤·격식·압박 상한·중점 평가 역량이 달라지고, 모든 면접관 에이전트가 이 프로파일을 공유해 회사 분위기에 맞는 질문을 생성합니다.

회사 격식 압박 상한 면접 톤 예시
토스 (예시) casual 2/5 "가장 임팩트가 컸던 결정의 트레이드오프는?"
삼성전자 (예시) formal 4/5 "MSA 전환 시 데이터 정합성 검증 방법을 단계별로 설명해 주십시오."

2. Solar Pro3의 고유 기능을 역할별로 매핑

"모델 이름만 박은" 게 아니라 Pro3의 차별 기능 세 가지를 명시적으로 활용했습니다.

역할 모델 reasoning_effort 목적
라우터·평가자 (meta, judge) Solar Pro3 high 깊은 판단·종합 평가
면접관 (resume, trend, stress) Solar Pro3 low 빠른 질문 생성
답변 품질 분류기 (answer_quality) Solar Mini 비용·속도 우선

추가로 prompt_cache_key로 세션별 캐싱을 적용해 같은 면접 안에서 이력서·자소서가 매 라운드 반복되는 비용을 줄였습니다.

3. 단순 라우터가 아닌 "오케스트레이터 + 가드레일"

메타 에이전트가 LLM 호출 한 번으로 끝나지 않습니다. 3중 가드레일이 시연 안정성과 면접 흐름의 균형을 보장합니다.

  • 답변 품질 게이트 — 답변이 회피적·모순·근거 부족이면 메타가 stress로 강제 라우팅
  • trend 하드 캡 — 트렌드 질문이 면접당 최대 2회를 넘지 못하도록 코드 레벨 제한
  • 에이전트 균형 보정 — 한 면접관이 다른 면접관보다 2회 이상 앞서면 자동으로 가장 적게 쓰인 면접관으로 보정

4. 정적 일반론이 아닌 "실제 뉴스" 기반 트렌드 질문

trend 에이전트는 사전 수집한 네이버 뉴스 DB에서 회사·직무 키워드로 매칭한 실제 기사 본문을 보고 질문을 만듭니다. 각 질문에 사용된 출처 메타데이터(current_question_sources)도 함께 저장해 "이 질문이 어떤 기사 기반으로 만들어졌는가" 까지 추적 가능합니다.


아이디어 배경

최근 면접은 단순한 질문 답변이 아니라 지원자의 경험, 직무 이해도, 문제 해결력, 커뮤니케이션 능력을 종합적으로 평가하는 과정입니다. 더 나아가 회사마다 면접 문화와 평가 기준이 다릅니다. 토스의 임팩트 중심 면접과 삼성의 단계별 검증 면접은 같은 직무라도 요구되는 답변의 결이 완전히 다릅니다.

이 프로젝트는 사용자의 지원 자료와 채용공고를 분석해 그 회사의 실제 면접 스타일을 추론하고, 여러 AI 면접관이 역할을 나누어 회사 분위기에 맞는 질문을 이어가는 모의면접 환경을 제공합니다. 면접 종료 후에는 질문과 답변 기록을 바탕으로 강점과 개선점을 정리한 피드백 리포트를 제공합니다.


핵심 기능

기능 설명
지원 자료 입력 자소서, 이력서, 포트폴리오 PDF, 회사명, 직무명, 채용공고 링크를 입력합니다.
회사 스타일 추론 메타 에이전트가 회사명과 채용공고를 분석해 격식·압박 상한·중점 평가 역량·실제 면접 관행을 추론합니다.
다중 AI 면접관 이력서 기반, 뉴스/트렌드 기반, 꼬리질문/압박 질문, 총괄 평가 에이전트가 면접을 진행합니다.
답변 품질 진단 매 답변마다 별도 분류기가 score·flag·action_hint를 산출해 메타의 라우팅 결정에 피드백을 제공합니다.
음성 면접 사용자의 음성 답변을 STT로 텍스트화하고, 생성된 질문을 TTS 음성으로 출력합니다.
동적 꼬리질문 답변의 모호함·근거 부족·구체성 부족을 자동 감지해 압박 면접관으로 강제 라우팅합니다.
최종 피드백 전체 대화를 바탕으로 논리성·경험 구체성·트렌드 이해도·종합 점수와 한국어 피드백을 제공합니다.

서비스 흐름

사용자 입력
  자소서 / 이력서 / 포트폴리오 PDF / 회사명 / 직무명 / 채용공고 URL
        │
        ▼
문서 및 공고 분석
  PDF 파싱, 채용공고 크롤링, 핵심 경험 및 직무 요구사항 추출
        │
        ▼
메타 에이전트 — 회사 스타일 추론 (1회)
  격식 / 압박 상한 / 중점 평가 역량 / 실제 면접 관행 / 대표 질문 패턴
        │
        ▼
AI 모의면접 루프 (라운드 반복)
  Answer Quality → Meta → Resume / Trend / Stress → STT/TTS
        │
        ▼
최종 평가
  Judge 에이전트가 4축 점수와 한국어 피드백 리포트 생성

멀티에이전트 구조

본 시스템은 LangGraph 기반 5개 노드와 1개의 별도 분류기(answer_quality)로 구성됩니다.

Agent 모델 / reasoning_effort 책임
meta solar-pro3 / high 회사 스타일 추론 + 동적 라우팅 + 3중 가드레일
answer_quality solar-mini 답변 품질 점수·flag·action_hint 산출 (메타에 피드백)
resume solar-pro3 / low 이력서·자소서 기반 사실 검증 질문
trend solar-pro3 / low 네이버 뉴스 DB 기반 트렌드 질문 + 출처 추적
stress solar-pro3 / low 직전 답변 약점 인용 + 컨텍스트 검증 폴백
judge solar-pro3 / high 4축 점수(overall/logic/experience/trend) + 종합 피드백
              [지원자 답변]
                    │
                    ▼
        ┌─ Answer Quality Classifier (solar-mini)
        │      score / flags / action_hint
        ▼
   ┌──────────────────────────────────────────┐
   │   Meta Orchestrator (solar-pro3 / high)  │
   │   - 회사 스타일 추론 (첫 진입 1회)         │
   │   - quality_gate: 저품질 → stress 강제    │
   │   - trend_cap / balance 가드레일          │
   └─────┬───────────┬──────────┬─────────────┘
         │           │          │
         ▼           ▼          ▼
   [Resume]      [Trend]     [Stress]
   (pro3 low)  (pro3 low +  (pro3 low +
                naver news)  structured)
         │           │          │
         └───────────┼──────────┘
                     ▼
             (max_rounds 도달)
                     │
                     ▼
           [Judge] (solar-pro3 / high)
           overall / logic / experience / trend

Upstage Solar Pro3 활용 — 고유 기능을 역할에 매핑

Solar Pro3의 3가지 고유 기능Solar Mini와의 분업으로 "왜 Solar Pro3여야 하는가" 에 명확히 답할 수 있게 설계했습니다.

기능 × 컴포넌트 매트릭스

컴포넌트 모델 reasoning_effort prompt_cache_key 이유
meta (라우터·회사 스타일 결정) solar-pro3 high 다단계 추론·전략적 판단
judge (종합 평가) solar-pro3 high 전체 대화 정밀 평가
resume / trend / stress solar-pro3 low 질문 1문장 빠른 생성
answer_quality (분류기) solar-mini 분류 작업은 가볍게

활용 포인트

기능 활용 방식 효과
reasoning_effort 등급 차등 깊은 사고가 필요한 라우터·평가자만 high, 질문 생성기는 low 응답 속도·비용 최적화
prompt_cache_key 세션 ID를 캐시 키로 — 이력서·자소서가 매 라운드 반복되는 비용 절감 두 번째 라운드부터 캐시 히트
구조화 출력 (with_structured_output) RouteDecision, CompanyStyle, JudgeResult, StressQuestion, AnswerQualityResult 5종 스키마 강제 JSON 파싱 오류 0
Solar Mini 분업 답변 품질 라벨링(good/fair/bad)은 Mini로 분리 Pro3 호출 1회 절약

왜 Solar Pro3여야 하는가

  • reasoning_effort 파라미터는 Solar Pro3 전용 — 다른 모델에 동일 개념 없음
  • 한국어 면접 도메인의 존댓말·관행 표현이 자연스러움
  • 한국 기업(토스·네이버·삼성 등)의 실제 면접 후기 정보를 학습 단계에서 풍부하게 보유

기술 스택

레이어 기술
프론트엔드 React, Vite, TanStack Router, Tailwind CSS, Radix UI
백엔드 FastAPI, Python 3.11, Pydantic
Agent LangGraph, LangChain Upstage, Upstage Solar Pro3 / Mini
문서 처리 pdfplumber, Upstage Document Parse / Information Extract
채용공고 수집 httpx, BeautifulSoup
트렌드 데이터 네이버 뉴스 수집 + SQLite 키워드 매칭
음성 처리 OpenAI STT, ElevenLabs TTS, OpenAI TTS fallback
저장소 Redis(세션), SQLite(인터뷰 기록·뉴스 DB)

저장소 구조

shipyak/
├── backend/                    # FastAPI 백엔드와 멀티에이전트 로직
│   ├── main.py                 # API 엔트리포인트
│   ├── app/
│   │   ├── agents/             # meta, resume, trend, stress, judge + llm/state/helpers
│   │   ├── routers/            # 세션, 면접, 턴 기록 API
│   │   ├── services/           # answer_quality, naver_news, STT/TTS, 크롤링, 그래프, 저장소
│   │   └── models/             # Pydantic 모델
│   └── scripts/                # 데모 및 데이터 수집 스크립트
├── lovable/                    # 웹 프론트엔드
│   └── src/
│       ├── components/interview/
│       ├── routes/
│       └── assets/interviewers/
├── docs/                       # 설계 문서와 API/에이전트 문서
├── data/                       # 데이터 수집·전처리 자료 + 뉴스 DB
├── design/                     # 디자인 에셋
└── presentation/               # 발표 자료

시작하기

1. 백엔드 환경 설정

cd backend
uv sync
cp .env.example .env

.env에 필요한 API 키를 입력합니다.

UPSTAGE_API_KEY=
OPENAI_API_KEY=
ELEVENLABS_API_KEY=
ELEVENLABS_VOICE_ID=

2. Redis 실행

brew install redis
brew services start redis

3. 백엔드 실행

cd backend
uv run uvicorn main:app --reload

4. 프론트엔드 실행

cd lovable
npm install
npm run dev

주요 API

메서드 경로 설명
POST /api/v1/session 지원 자료 업로드 및 면접 세션 생성
GET /api/v1/session/{id} 세션 조회
POST /api/v1/session/{id}/start 면접 시작 및 첫 질문 생성 (회사 스타일 추론 포함)
POST /api/v1/session/{id}/answer 답변 제출 후 다음 질문 생성
GET /api/v1/session/{id}/report 최종 피드백 리포트 조회
POST /api/interview-sessions/{id}/turns/audio 음성 답변 업로드 및 다음 질문 TTS 반환
GET /health 서버 및 Redis 상태 확인

차별점 — 다른 멀티에이전트 데모와의 차이

영역 일반 멀티에이전트 데모 본 프로젝트
회사 적응 회사명을 프롬프트에 끼워넣고 끝 메타가 채용공고를 분석해 격식·압박 상한·중점 역량·실제 면접 관행을 추론
라우팅 라운드별 고정 순서 (resume → trend → stress 반복) 답변 품질 분류기(solar-mini)가 매 턴 score·flag·action_hint 산출 → 메타가 동적 선택
에이전트 견고성 LLM 응답이 깨지면 시연 멈춤 5종 구조화 출력 + 다중 폴백 경로 + 3중 가드레일 (quality_gate, trend_cap, balance)
트렌드 질문 LLM 학습 시점의 일반론 네이버 뉴스 DB에서 키워드 매칭한 실제 기사 + 출처 메타데이터 추적
Upstage 활용도 모델 이름만 박음 reasoning_effort 등급 차등 + prompt_cache_key + Mini 분업
추적 가능성 블랙박스 meta_decisions, answer_quality_history, current_question_sources 세 가지 로그로 "왜 이 질문이 나왔는가" 추적 가능

측정 가능한 결과

  • 한 세션당 LLM 호출 패턴: meta(1) + answer_quality(N) + 면접관(N) + judge(1)
  • 5종 구조화 스키마로 JSON 파싱 실패율 0
  • 데모 영상에서 "같은 이력서, 회사만 다르게" 비교 시연 가능

협업 규칙

  • 브랜치 전략 — 팀원별 feat/* 브랜치에서 작업 (예: feat/agent, feat/backend, feat/data, feat/design). main은 항상 동작 가능한 통합 브랜치
  • PR·머지feat/*main PR 후 머지. 작은 단위로 자주 머지하고, 머지 후 다른 팀원은 main을 다시 pull해 동기화
  • 커밋 — 작게 자주 push (해커톤 환경 대비 백업). 커밋 메시지는 한국어로, 변경 의도가 한 줄에 드러나게 작성
  • 코드 스타일 — PEP 8 준수, snake_case 변수/함수명, 줄 길이 최대 100자. ruff로 lint
  • 의존성 변경 — 패키지 추가/제거는 반드시 uv add / uv remove. 변경된 pyproject.toml·uv.lock을 함께 커밋
  • 환경변수 — 모든 API 키는 .env로만 관리(하드코딩 금지). .env.example만 공유하고 실제 .env.gitignore 처리
  • 문서 갱신 — 새 엔드포인트·에이전트·환경변수가 추가되면 README와 docs/ 관련 문서를 같은 PR에서 갱신

기대 효과

취업 준비자는 고비용 면접 컨설팅 없이 실제 면접과 유사한 환경에서 반복 연습할 수 있습니다. 특히 개인의 지원 자료뿐 아니라 지원 회사의 실제 면접 스타일까지 반영되기 때문에 일반적인 예상 질문보다 실전 대응력을 높일 수 있습니다.

향후에는 직무별 전문 면접관, 기업별 면접 스타일 라이브러리화, 면접 리포트 PDF, 답변 개선 예시, 실시간 발화 습관 분석 등으로 확장할 수 있습니다.


참고 문서

About

솔솔(solsol) — Solar Pro3 기반 모의 면접 서비스

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages