개발자 모의 기술 면접 챗봇 프로젝트 소개
개발자 면접을 준비하는 이들을 위한 AI 챗봇 프로젝트입니다. 기술 면접 질문부터 답변 피드백, 기록 저장, RAG 기반 학습까지 모든 과정을 자동화한 챗봇 기획과 기능을 소개합니다.
개발자 모의 기술 면접 챗봇 프로젝트 소개
1. 프로젝트 개요
프로젝트명 : 개발자 모의 기술 면접 챗봇
프로젝트 기간 : 2025년 2월 13일 ~ 2025년 2월 26일
팀원 : 신제창, 이현지, 박민지, 박종관
프로젝트 배경
개발자 취업 준비 과정에서 가장 부담스러운 순간 중 하나는 기술 면접입니다. 면접 질문은 예측하기 어렵고, 준비한 내용을 실제로 표현해볼 기회도 많지 않죠. 답변에 대한 피드백도 부족해 스스로의 약점을 파악하기 어렵습니다.
우리는 이런 문제를 해결하기 위해 다음과 같은 챗봇을 기획했습니다:
직무와 난이도에 따라 면접 질문을 제공하고, 답변에 대해 AI가 피드백을 주며, 그 기록을 저장해 다시 복습할 수 있는 AI 면접 시뮬레이터
2. 프로젝트 목표
- 직무 기반 면접 질문 제공: 백엔드, 프론트엔드, 데이터 사이언스 등 다양한 직무와 초중고급 난이도 설정 가능
- 답변 피드백 제공: AI가 답변의 완성도와 구체성을 평가하고 개선 방향 제시
- 모의 면접 기록 저장: 사용자의 답변, 피드백, 질문 히스토리를 저장하여 이후 복습 가능
- RAG 기반 보조 학습 제공: 벡터 DB에서 관련 질문과 참고자료 검색해 보완 설명 제공
- 코딩 면접 기능 확장 기획: 추후 코드 작성과 AI 평가 기능까지 포함한 확장성 고려
3. 주요 기능
핵심 기능
- 사용자가 선택한 직무/난이도에 따른 기술 면접 질문 제공
- 답변 입력 후 AI가 실시간 피드백 제공 (논리성, 구체성 등 기준)
- 모든 대화 내역을 DB에 저장하여 모의 면접 히스토리 관리
- RAG 기반 관련 자료 탐색 및 보완 설명 제공
- Streamlit 기반의 UI를 통한 대화형 면접 환경 구현
기획 중/보완 예정 기능
- 코딩 면접 기능: 간단한 코드 문제에 대해 채점 및 피드백 제공
- 음성 입력 및 평가 기능: 추후 Whisper 연동 고려
4. 기술 스택
구분 | 기술 |
---|---|
백엔드 | Python |
웹 프론트 | Streamlit |
챗봇 모델 | OpenAI GPT-3.5 Turbo |
벡터 DB | Pinecone, ChromaDB |
관계형 DB | PostgreSQL |
테스트 | Pytest, Streamlit 세션 테스트 |
CI/CD | GitHub Actions (ci.yml) |
5. 디렉토리 구조 및 구성 요소
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
📦 Chatbot_pjt/ # 프로젝트 루트 디렉토리
│
│── main.py # 로그인 및 회원가입 UI를 포함한 메인 페이지
│
│── 📂 .github/ # GitHub Actions 워크플로우 디렉토리
│ └── 📂 workflows/
│ └── ci.yml # CI 자동화 파일 (코드 checkout, 의존성 설치, pytest 실행)
│
│── 📂 pages/ # Streamlit 멀티 페이지 구성
│ │── home.py # 프로젝트 소개 및 사용법 안내 페이지
│ │── chat.py # 실질적인 면접 챗봇 실행 페이지 (질문 생성/응답/피드백)
│ └── history.py # 사용자별 면접 기록(질문/답변/피드백) 조회 페이지
│
│── 📂 backend/ # 백엔드 로직 디렉토리
│ │── 📂 data/ # 챗봇 학습에 사용되는 문서 데이터
│ │ └── referance.docx # 면접 질문 생성과 평가에 활용될 참조 문서
│ │── db.py # PostgreSQL 테이블 생성 및 DB 연동 로직
│ │── accounts.py # 사용자 회원가입 및 로그인 처리 (bcrypt 해싱 포함)
│ │── config.py # OpenAI, Pinecone, DB 환경 변수 및 설정값 불러오기
│ │── langchain_chatbot.py # LangChain을 활용한 챗봇 체인 구성 및 피드백 생성
│ │── pinecone_db.py # 문서를 벡터화하여 Pinecone에 저장/검색하는 로직
│ └── utils.py # 로그인 상태 UI 및 로그아웃 버튼 처리
│
│── 📂 tests/ # Pytest 기반 테스트 코드 디렉토리
│ │── init.py # 테스트 패키지 인식용 초기화 파일
│ │── test_accounts.py # 회원가입 및 로그인 기능 테스트
│ │── test_config.py # 환경 변수 및 모델/키 테스트
│ │── test_db.py # DB 연결 및 채팅 기능 테스트
│ │── langchain_chatbot.py # LangChain 챗봇 기능 테스트
│ │── test_utils.py # 유틸 함수 테스트
│ └── test_pinecone_db.py # 벡터화 및 Pinecone 기능 테스트
│
│── 📂 .streamlit/ # Streamlit 전용 설정 파일 저장소
│ └── secrets.toml # Streamlit Cloud 배포 시 사용하는 환경변수 설정 파일
│
│── requirements.txt # 프로젝트에서 사용하는 Python 패키지 목록
│── venv # Python 가상환경 디렉토리
│── .env # 로컬 환경변수 설정 파일 (.dotenv)
│── .gitignore # Git으로 관리하지 않을 파일/디렉토리 지정
└── README.md # 프로젝트 전체 설명 및 실행 방법 안내 문서
6. 마무리
이번 프로젝트는 기술 면접에 대한 부담을 줄이고, 혼자서도 연습할 수 있는 챗봇 환경을 제공하는 데 초점을 맞췄습니다. 실제 면접처럼 질문을 주고, 답변을 평가해주며, 히스토리를 통해 성장 과정을 추적할 수 있는 챗봇을 만들고자 했습니다.
This post is licensed under CC BY 4.0 by the author.