基于 LangGraph 的全能求职助手:智能面试模拟 + 简历深度优化
AI求职助手是一个利用大语言模型(LLM)和 LangGraph 状态机技术构建的综合求职辅助系统。它不仅能进行全真模拟面试,还能像专业的职业咨询师一样,通过多智能体协作(Multi-Agent)对简历进行深度诊断和定向优化,帮助求职者全方位提升竞争力。现已上线测试:-AI求职助手
- Qwen3-Omni 实时交互: 使用 Qwen3-Omni 模型实现与 AI 面试官的高性能实时语音对话。
- 全链路流式体验: 基于 SSE 实现音频与文本双重响应流。
- 高级语音工程: 集成 VAD (语音活动检测) 与浏览器端 STT,确保交互自然。
- 智能会话克隆: 支持从文本面试一键克隆至语音模式,完整保留历史上下文。
- 本地存储优化: 利用 IndexedDB 缓存用户录音,支持离线多端持久化播放。
- 进度深度追踪: 与多轮面试系统联动,精确定位面试问题索引与跟进状态。
- 多专家协同诊断: 采用创新圆桌会议架构,由 匹配分析师(分析 JD 匹配度)、内容优化师(提供修改建议)、HR 审核官(模拟筛选视角)三位 AI 专家共同会诊。
- 深度反思机制: 内置 Quality Assurance (Reflector) 节点,对专家建议进行二次审核与反思精炼,确保输出高质量、可落地的优化方案。
- JD 定向优化: 深度分析目标职位描述(JD),精准提取关键词,提供针对性的经验重写建议(如 STAR 法则应用)。
- 简历生成: 支持整合面试对话中挖掘出的亮点,从零生成或针对特定职位定制专业简历。
- 智能规划: 根据简历和职位描述(JD)自动生成个性化面试题目清单
- 全真模拟: 模拟真实面试体验,面试过程中不给即时反馈
- 智能提示: 模拟面试没思路,可以获取面试提示辅助回答
- 多类型题目: 自我介绍、技术问题、行为面试、系统设计
- 流畅过渡: AI 面试官自然引导对话,逐题推进
- 结束报告: 面试结束后生成综合评价报告(评分、优缺点、录用建议)
- 连续面试流程: 一面完成后可一键开启下一轮,简历/JD 自动继承
- 智能轮次推断: 自动区分一面(基础)、二面(深度)、三面(综合)不同策略
- 问题去重机制: 下一轮自动避免重复上一轮已问过的问题
- 灵活题数: 支持自选 3-10 道题目,适应不同面试长度
- 多维度评分: 技术能力、沟通能力、问题解决、学习能力、团队协作
- 雷达图可视化: 直观展示各项能力得分
- 技能标签提取: 自动识别展现的技术技能
- 累计档案: 多次面试后的综合能力趋势
- 多 LLM 支持: OpenAI、Azure、以及兼容 API(如 DeepSeek、通义千问)
- 前端动态配置: 用户可在界面上配置 API Key 和模型
- 流式响应: 全链路 SSE 流式输出,体验丝滑
| 层级 | 技术 | 说明 |
|---|---|---|
| 后端核心 | LangGraph | 复杂 Agent 工作流编排(面试流、优化流) |
| LangChain | LLM 交互与工具调用 | |
| FastAPI | 高性能 Python Web 框架 | |
| 前端 | Next.js 15 | React 全栈框架 (App Router) |
| TypeScript | 类型安全 | |
| Tailwind CSS | 原子化样式 | |
| shadcn/ui | 精美 UI 组件库 | |
| Zustand | 轻量状态管理 | |
| 数据存储 | PostgreSQL 16 | 关系型数据库 |
| asyncpg | 异步数据库驱动 | |
| 部署 | Docker | 容器化部署 |
- Python 3.11+
- Node.js 20+
- PostgreSQL 16 (或使用 Docker)
- OpenAI API Key (或兼容 API)
git clone https://github.com/yourusername/ai-interview.git
cd ai-interviewcp .env.production.example .env
# 编辑 .env 文件.env 文件内容:
# 数据库
DATABASE_URL=postgresql://ai_interview:your_password@localhost:5432/ai_interview
# LLM 配置
OPENAI_API_KEY=sk-your-api-key
OPENAI_BASE_URL=https://api.openai.com/v1
SMART_MODEL=gpt-4
FAST_MODEL=gpt-3.5-turbo使用 Docker 快速启动 PostgreSQL:
docker run -d \
--name ai_interview_db \
-e POSTGRES_USER=ai_interview \
-e POSTGRES_PASSWORD=your_password \
-e POSTGRES_DB=ai_interview \
-p 5432:5432 \
postgres:16-alpinecd backend
# 创建虚拟环境
python -m venv venv
.\venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/Mac
# 安装依赖
pip install -r requirements.txt
# 初始化数据库
python -m app.database.init_db
# 启动服务
python main.py后端将在 http://localhost:8000 启动
cd web
# 安装依赖
npm install
# 启动开发服务器
npm run dev前端将在 http://localhost:3000 启动
- 打开浏览器访问
http://localhost:3000 - 点击左侧 "+" 创建新会话,体验模拟面试
- 点击 "简历工具" 标签,体验简历优化与生成功能
ai-interview/
├── backend/ # Python FastAPI 后端
│ ├── main.py # 应用入口
│ ├── app/
│ │ ├── api/ # 接口路由层
│ │ │ ├── chat.py # 面试对话 WebSocket/SSE 接口
│ │ │ ├── voice_chat.py # 语音面试实时流接口 ⭐
│ │ │ ├── resume.py # 简历优化与生成相关接口
│ │ │ ├── sessions.py # 会话管理接口
│ │ │ ├── upload.py # 文件上传接口
│ │ │ └── config.py # API 配置管理
│ │ │
│ │ ├── core/ # 核心业务逻辑 (Agent Graphs)
│ │ │ ├── graph.py # 面试流程状态机 (LangGraph)
│ │ │ ├── voice_interview.py # 语音面试核心引擎 ⭐
│ │ │ ├── resume_optimizer_graph.py # 简历优化多专家协同 Agent
│ │ │ ├── resume_generation_graph.py # 简历生成工作流 Agent
│ │ │ ├── resume_analyzer_graph.py # 简历初步分析 Agent
│ │ │ ├── llms.py # LLM 工厂与配置
│ │ │ └── memory.py # 对话记忆管理
│ │ │
│ │ ├── database/ # 数据持久层
│ │ │ ├── base.py # SQLAlchemy 模型定义
│ │ │ ├── init_db.py # 数据库初始化脚本
│ │ │ ├── session_service.py # 会话数据服务
│ │ │ └── session_services/ # 细分数据管理模块 (会话、消息、画像)
│ │ │
│ │ └── services/ # 通用业务服务
│ │ ├── ability_service.py # 能力画像计算服务
│ │ ├── analysis_service.py # 报告生成服务
│ │ └── file_service.py # 文件处理服务
│ └── requirements.txt
│
├── web/ # Next.js 前端应用
│ ├── app/
│ │ ├── page.tsx # 主工作台页面
│ │ └── layout.tsx # 全局布局
│ │
│ ├── components/ # React 组件
│ │ ├── VoiceInterview.tsx # 实时语音面试界面 ⭐
│ │ ├── DialogueReview.tsx # 对话回顾与音频播放
│ │ ├── ResumeTools.tsx # 简历工场主容器
│ │ ├── ResumeGenerationDialog.tsx # 简历生成对话框
│ │ ├── ResumePreviewDialog.tsx # 简历预览与导出
│ │ ├── ResumeHistoryList.tsx # 历史记录列表
│ │ ├── ChatMessage.tsx # 消息气泡组件
│ │ ├── SessionSidebar.tsx # 左侧会话导航
│ │ ├── SessionList.tsx # 会话列表管理
│ │ ├── AbilityProfileView.tsx # 能力雷达图视图
│ │ └── SettingsDialog.tsx # 全局设置
│ │
│ ├── store/ # Zustand 状态管理
│ │ ├── useInterviewStore.ts # Store 入口
│ │ └── slices/
│ │ ├── interviewSlice.ts # 面试流程状态
│ │ ├── resumeSlice.ts # 简历工具状态
│ │ ├── sessionSlice.ts # 会话列表状态
│ │ └── apiConfigSlice.ts # 模型配置状态
│ │
│ ├── hooks/ # 自定义 Hook
│ │ ├── useVoiceChat.ts # 语音交互逻辑核心 ⭐
│ │ └── useSpeechToText.ts # 浏览器 STT 封装
│ │
│ ├── lib/ # 工具函数
│ │ └── api/ # 前端 API 客户端
│ │ ├── resume.ts # 简历相关 API
│ │ └── sessions.ts # 会话相关 API
│ └── public/ # 静态资源
│
├── docker-compose.yml # 容器编排配置
└── README.md # 项目说明文档
docker-compose --env-file .env.production up -d --build-
LangGraph 面试状态机
- 多轮面试逻辑
- 智能追问与引导
-
智能简历工场
- 多专家简历诊断(圆桌会议模式)
- 简历定向优化建议
- 基于面试数据的简历生成
-
基础设施
- 流式响应 (SSE)
- 会话持久化 (PostgreSQL)
- Docker 一键部署
-
语音交互 (Real-time Omnichannel)
- Qwen3-Omni 高性能流式响应
- VAD 与多端音频同步
- 语音会话克隆与历史继承
- 面试题库扩充 (RAG)
- 更多类型的专家 Agent (如薪资谈判专家)
本项目采用 非商业使用许可证 (Non-Commercial Use License)
- 允许:个人学习、研究、教育用途
- 允许:非商业性质的内部使用
- 禁止:未经授权的任何商业使用
如需商业授权,请联系作者:1624899229@qq.com
详见 LICENSE 文件
- LangGraph - 强大的 AI Agent 工作流引擎
- FastAPI - 现代高性能 Python Web 框架
- Next.js - React 全栈框架
- shadcn/ui - 精美的 UI 组件库
Made with ❤️ by zzt






