AI-Powered Interview Platform for Education Assessment
Quick Start • Features • API • Config
English | 中文
Core
- Multi-LLM support (DeepSeek, OpenAI, Qwen, GLM, ERNIE)
- Dynamic follow-up questions (max 3)
- Context-aware AI responses
- Multi-user concurrent sessions
- Admin dashboard with analytics & export (CSV/JSON/XLSX)
- Public URL sharing with QR code (cloudflared/ngrok)
UI (React 19 + TypeScript)
- ShadcnUI + Tailwind CSS
- Dark mode & Command Palette (Ctrl+K)
- PWA support (offline-ready)
- Performance monitoring (Web Vitals)
Prerequisites: Python 3.11+ • Node.js 18+
git clone https://github.com/username/interview_system.git cd interview_system python start.pyFirst Run: Configure provider (deepseek/openai/qwen/glm/ernie), API key, and optional model override.
Access:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000/docs
- Admin: http://localhost:5173/#admin/overview
Admin Token: Auto-generated 32-char password displayed on startup.
Public Access:
python start.py --public # Requires cloudflared or ngrokManual Setup
# Backend pip install -e ".[api]" uvicorn interview_system.api.main:app --reload --port 8000 # Frontend cd frontend && npm install && npm run devinterview_system/ ├── src/interview_system/ │ ├── api/ # FastAPI (routes, schemas) │ ├── application/ # Use cases │ ├── domain/ # Entities, services │ ├── infrastructure/ # DB, cache, external │ ├── config/ # Settings, logging │ └── integrations/ # LLM providers └── frontend/ └── src/ ├── components/ # UI (chat, layout, common) ├── stores/ # Zustand state ├── hooks/ # TanStack Query └── services/ # API client Stack: React 19 • TypeScript • Vite • ShadcnUI • Tailwind • FastAPI • SQLite
Session Management
POST /api/session/start Create session GET /api/session/{id} Get session POST /api/session/{id}/message Send message POST /api/session/{id}/undo Undo exchange POST /api/session/{id}/skip Skip question POST /api/session/{id}/restart Reset session DELETE /api/session/{id} Delete session Admin (Protected by X-Admin-Token header)
GET /api/admin/overview Metrics + time series GET /api/admin/sessions Session list (filters + pagination) GET /api/admin/search Search conversation logs GET /api/admin/export Export CSV/JSON/XLSX Backend (.env)
API_PROVIDER=deepseek # deepseek/openai/qwen/zhipu/baidu API_KEY=your_api_key API_MODEL=deepseek-chat API_SECRET_KEY= # baidu only DATABASE_URL=sqlite+aiosqlite:///./interview_data.db ADMIN_TOKEN= # Auto-generated on startupFrontend (.env)
VITE_API_URL=http://localhost:8000/apiProviders
| Provider | Model | API |
|---|---|---|
| DeepSeek | deepseek-chat | platform.deepseek.com |
| OpenAI | gpt-3.5-turbo | platform.openai.com |
| Qwen | qwen-turbo | dashscope.console.aliyun.com |
| GLM | glm-4-flash | open.bigmodel.cn |
| ERNIE | ernie-3.5-8k | qianfan.baidubce.com |
Keywords: Customize depth-scoring in config/interview_keywords.yaml
Input Disabled: Click "快速访谈" and wait for first question.
API Validation Failed: Check .env credentials or set API_KEY="" for preset-only mode.
# Tests cd frontend && npm test pytest -q # Build cd frontend && npm run buildMIT