内容
# 面试飞行员
### AI驱动的面试模拟与准备平台
面试飞行员是一款智能面试模拟平台,旨在通过自适应的AI驱动对话帮助候选人准备技术面试和行为面试。
使用 **LangGraph**、**RAG(检索增强生成)**、**FastAPI** 和 **模型上下文协议(MCP)** 集成构建,面试飞行员创建了逼真的面试体验,评估回答,识别知识空白,并生成个性化的学习笔记。
候选人可以定义面试主题,上传简历或职位描述,并参与根据其技能水平量身定制的互动面试会话。
---
## 面试飞行员实战
| 主界面(启动屏幕) | 即时聊天和实时性能分析 |
| :-----------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------: |
|  |  |
---
## 核心功能
* **通过LangGraph进行代理工作流编排:** 整个面试生命周期(问题生成 → 答案评估 → 后续行动 → 总结生成)被建模为使用LangGraph的状态驱动工作流。
* **通过SSE进行实时流式传输:** 规划步骤、面试进度和代理输出通过服务器发送事件(SSE)即时流式传输到前端。
* **自适应难度引擎:** 根据候选人在整个会话中的表现动态调整面试难度(简单、中等、困难)。
* **RAG支持的上下文检索:** 上传的简历、职位描述、PDF和网络资源通过ChromaDB索引和检索,以生成高度相关的面试问题。
* **MCP支持的学习笔记:** 在面试过程中识别出的薄弱环节通过MCP兼容的集成自动转换为结构化的学习笔记。
* **多模型支持:** 轻松切换支持的LLM提供商和模型以获得不同的面试体验。
* **性能分析:** 跟踪分数、优势、劣势和整个会话的整体面试进度。
* **现代仪表板体验:** 使用React、TypeScript和Tailwind CSS构建,提供干净和交互式的用户体验。
---
## 系统架构
面试飞行员作为由LangGraph编排的状态驱动工作流运行。
```mermaid
graph TD
START -->|route_action| build_context[构建上下文]
build_context --> load_resources[加载资源]
load_resources --> research_summary[研究和总结]
research_summary --> index_documents[索引文档]
index_documents --> retrieve_context[检索上下文]
retrieve_context --> generate_question[生成问题]
generate_question --> wait_for_answer[等待用户回答]
wait_for_answer --> evaluate_answer[评估答案]
evaluate_answer --> supervisor[主管]
supervisor -->|next_question| generate_question
supervisor -->|study_note| create_note[创建学习笔记]
create_note --> generate_question
supervisor -->|summary| summary[生成总结]
summary --> END
```
---
## 工作流程概述
1. 用户选择面试主题。
2. 可选文档(简历、职位描述、PDF)被上传。
3. 资源通过RAG管道处理和索引。
4. LangGraph使用检索的上下文生成面试问题。
5. 用户提交答案。
6. 答案被评估和评分。
7. 薄弱环节被转换为学习笔记。
8. 根据表现调整难度。
9. 生成最终的面试总结和反馈报告。
---
## 项目结构
```text
├── agents/ # AI代理(评估、笔记生成、规划)
├── api/ # FastAPI应用程序和API端点
├── config/ # 应用程序配置
├── frontend/ # React前端应用程序
│ ├── src/
│ │ ├── components/
│ │ ├── hooks/
│ │ ├── pages/
│ │ ├── services/
│ │ └── types/
│
├── graph/ # LangGraph工作流定义
│ ├── nodes/
│ ├── state.py
│ └── builder.py
│
├── llm/ # LLM提供商抽象
├── mcps/ # MCP集成和管理器
├── models/ # 共享数据模型
├── rag/ # 检索增强生成管道
├── services/ # 业务逻辑和面试引擎
├── storage/ # 本地存储实现
└── tests/ # 单元测试和集成测试
```
---
## 技术栈
### 后端
* Python
* FastAPI
* LangGraph
* LangChain
* ChromaDB
* Pydantic
* MCP(模型上下文协议)
### 前端
* React
* TypeScript
* Tailwind CSS
* Vite
### AI & 数据
* Groq
* OpenAI
* Google Gemini
* 向量嵌入
* 检索增强生成(RAG)
---
## 安装和设置
### 要求
* Python 3.10+
* Node.js 18+
* Groq、OpenAI或Gemini API密钥
---
### 后端设置
#### 选项A — 使用uv(推荐)
```bash
uv sync
source .venv/bin/activate
```
Windows:
```bash
.venv\Scripts\activate
```
#### 选项B — 使用pip
```bash
python -m venv .venv
source .venv/bin/activate
```
Windows:
```bash
.venv\Scripts\activate
```
安装依赖项:
```bash
pip install -r requirements.txt
```
---
### 环境变量
创建 `.env` 文件:
```env
GROQ_API_KEY=your_groq_api_key
OPENAI_API_KEY=your_openai_api_key
GOOGLE_API_KEY=your_google_api_key
```
---
### 运行后端
```bash
uvicorn api.app:app --reload
```
后端运行在:
```text
http://localhost:8000
```
---
### 前端设置
```bash
cd frontend
npm install
npm run dev
```
前端运行在:
```text
http://localhost:5173
```
---
## 示例用例
### 技术面试准备
* Android开发人员
* 后端工程师
* 前端工程师
* Python开发人员
* DevOps工程师
### 行为面试
* 领导力问题
* 团队合作
* 冲突解决
* 沟通技巧
### 公司特定准备
* 上传职位描述
* 上传简历
* 练习有针对性的面试问题
---
## 路线图
### 核心平台
* [ ] 基于PostgreSQL的会话持久性
* [ ] 重用面试会话
* [ ] 用户身份验证和个人资料
* [ ] 历史面试仪表板
### 高级RAG
* [ ] 混合搜索(BM25 + 向量搜索)
* [ ] 父文档检索器
* [ ] 多查询检索
* [ ] 上下文重新排序
### MCP生态系统
* [ ] Google Sheets集成
* [ ] Notion集成
* [ ] GitHub集成
* [ ] MCP连接池
### 多代理架构
* [ ] 主管代理模式
* [ ] 专用评估代理
* [ ] 研究代理
* [ ] 学习计划代理
### 分析和可观察性
* [ ] LangSmith集成
* [ ] 代理性能指标
* [ ] 成本跟踪
* [ ] 使用情况分析
### 学习助手
* [ ] 个性化学习计划
* [ ] 学习日历
* [ ] 笔记重复数据删除
* [ ] 技能差距分析
### 语音面试
* [ ] 语音转文本候选人回答
* [ ] AI语音面试官
* [ ] 实时语音对话
* [ ] 模拟电话面试
---
## 愿景
面试飞行员旨在成为一个个人AI面试教练,通过自适应的面试模拟、个性化的反馈和智能的学习推荐,帮助候选人不断练习、学习和改进。
---
## 贡献
欢迎随时提出贡献、想法和反馈。
请随意提出问题或提交拉取请求。
---
## 许可证
该项目根据MIT许可证授权。