# myai_interview **Repository Path**: huang5288/myai_interview ## Basic Information - **Project Name**: myai_interview - **Description**: ai_interview - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-17 - **Last Updated**: 2026-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MyAI Interview AI 面试助手:一个基于 FastAPI、LangGraph 和 Vue 3 的模拟面试系统。项目支持简历解析、多轮技术面试、SSE 流式对话、追问控制、历史会话、能力画像,以及基于用户私有知识库的 RAG 出题增强。 ## 功能概览 - 简历上传与文本解析,支持 `.pdf`、`.docx`、`.txt`。 - 模拟面试对话,支持开始面试、继续回答、提示、回退、停止流式响应。 - LangGraph 多 Agent 面试流程,包含提问、追问、完成度检查和总结分析。 - 多轮面试会话管理,支持历史会话恢复、删除和创建下一轮面试。 - 能力画像生成,沉淀单轮和综合面试分析结果。 - 私有知识库管理,支持 collection、文档上传、向量化、混合检索、RAG 检索测试和检索日志。 - 前端本地保存用户 API 配置,后端不持久化模型密钥。 ## 技术栈 后端: - FastAPI + Uvicorn - LangGraph / LangChain - PostgreSQL + pgvector - asyncpg / psycopg - PyMuPDF / python-docx - rank-bm25 + jieba 前端: - Vue 3 - Vite - lucide-vue-next - 原生 Fetch API + SSE 读取 ## 目录结构 ```text . +-- backend/ # FastAPI 后端服务 | +-- main.py # 应用入口、路由注册、Uvicorn 启动 | +-- app/ | +-- api/ # chat、upload、sessions、knowledge 路由 | +-- core/ # LangGraph、Agent、LLM、Planner、分析逻辑 | +-- database/ # PostgreSQL 初始化和数据访问层 | +-- models/ # Pydantic 请求/响应模型 | +-- services/ # 文件、Embedding、RAG、文档处理等服务 +-- web/ # Vue 3 / Vite 前端 | +-- src/ | +-- api/ # 前端 API 包装 | +-- components/ # 通用组件 | +-- composables/ # 面试状态管理 | +-- utils/ # 本地存储等工具 | +-- views/ # 首页、面试、历史、知识库、画像页面 +-- docs/ # 示例面试知识文档 +-- memory-bank/ # 架构、设计、进度和实现 notes ``` ## 环境要求 - Python 3.10+ 推荐 - Node.js 18+ 推荐 - PostgreSQL,并启用 `pgvector` 扩展 - 可用的 OpenAI-compatible Chat Completions 接口 - 如使用知识库,需可用的 OpenAI-compatible Embeddings 接口,向量维度固定为 1536 ## 后端启动 进入后端目录并安装依赖: ```bash cd backend pip install -r requirements.txt ``` 配置数据库连接。默认连接为: ```text postgresql://postgres:123456@localhost:5432/ai_interview ``` 也可以通过环境变量覆盖: ```bash set DATABASE_URL=postgresql://postgres:your_password@localhost:5432/ai_interview set HOST=0.0.0.0 set PORT=8000 set DEBUG=false python main.py ``` 在 PowerShell 中可使用: ```powershell $env:DATABASE_URL="postgresql://postgres:your_password@localhost:5432/ai_interview" $env:HOST="0.0.0.0" $env:PORT="8000" $env:DEBUG="false" python main.py ``` 启动后访问: - API 根路径:`http://localhost:8000/` - 健康检查:`http://localhost:8000/health` - Swagger 文档:`http://localhost:8000/docs` - ReDoc 文档:`http://localhost:8000/redoc` 后端启动时会自动初始化业务表、知识库表和 LangGraph checkpoint 相关资源。 ## 前端启动 进入前端目录并安装依赖: ```bash cd web npm install npm run dev ``` 默认访问: ```text http://localhost:3000 ``` 前端默认连接 `http://localhost:8000`。如需修改后端地址: ```bash set VITE_API_BASE_URL=http://localhost:8000 npm run dev ``` 生产构建: ```bash npm run build npm run preview ``` ## API 配置 前端右上角设置弹窗中需要配置模型通道: - `smart`:复杂任务模型,用于规划、总结、分析等。 - `fast`:快速响应模型,用于部分追问、过渡语和轻量判断。 - `embedding`:知识库向量化和检索使用,接口需兼容 OpenAI `/embeddings`,向量维度固定为 1536。 - `rerank`:可选 DashScope Rerank 配置,默认模型为 `gte-rerank`。 这些配置保存在浏览器本地存储中,并随请求传给后端;不要把真实密钥提交到仓库。 ## 知识库 / RAG 知识库入口在前端侧边栏的“知识库”页面。当前支持: - Collection 类型:`technical_interview`、`project_deep_dive` - 岗位方向:`backend`、`frontend`、`algorithm`、`testing`、`product` - 文档格式:`.txt`、`.md`、`.pdf`、`.docx` - 上传大小限制:10MB - 检索方式:BM25 + 向量检索混合召回,RRF 融合,可选 rerank 面试时开启“使用知识库”后,系统会在 Planner 出题阶段自动按用户、岗位方向和面试轮次检索可用 collection,并将相关知识注入出题上下文。检索失败或没有可用知识库时,会降级为原始面试流程。 ## 主要接口 - `POST /api/upload/resume`:上传并解析简历 - `POST /api/chat/start`:开始面试 - `POST /api/chat/stream`:继续面试并返回 SSE 流式响应 - `GET /api/chat/hint/{session_id}/{question_index}`:获取提示 - `POST /api/chat/rollback`:回退会话 - `GET /api/sessions/`:获取历史会话 - `POST /api/sessions/{session_id}/next-round`:创建下一轮面试 - `POST /api/chat/profile/generate`:生成能力画像 - `POST /api/knowledge/collections`:创建知识库 collection - `POST /api/knowledge/collections/{collection_id}/documents`:上传知识库文档 - `POST /api/knowledge/retrieve-test`:知识库检索测试 - `GET /api/knowledge/retrieval-logs`:查看检索日志 完整接口以 `http://localhost:8000/docs` 为准。 ## 开发说明 - 后端路由按功能放在 `backend/app/api/`。 - 可复用业务逻辑优先放到 `backend/app/services/`、`backend/app/core/` 或 `backend/app/database/`。 - 前端页面放在 `web/src/views/`,通用组件放在 `web/src/components/`,API 包装放在 `web/src/api/`。 - 项目当前没有统一测试 runner。提交前至少运行 `npm run build`,并手动验证受影响的后端接口。 - 修改重大功能后,需要同步更新 `memory-bank/architecture.md`。 ## 常见问题 ### 后端启动时报数据库连接失败 确认 PostgreSQL 已启动,数据库存在,`DATABASE_URL` 中的用户名、密码、端口和数据库名正确,并且目标数据库启用了 pgvector。 ### 知识库上传失败 检查 Embedding 配置是否完整,接口是否兼容 OpenAI `/embeddings`,返回向量维度是否为 1536,文件是否超过 10MB。 ### 前端请求后端失败 确认后端运行在 `http://localhost:8000`,或设置 `VITE_API_BASE_URL` 指向实际后端地址。后端 CORS 当前允许 `http://localhost:3000`。