返回项目列表
PythonFastAPIChromaDBDeepSeek API多智能体RAG

AI 面试教练系统

4 位 AI 面试官轮番上阵的多智能体模拟面试平台

Nov 2024
GitHub

背景——为什么做这个

求职准备阶段,真实面试机会有限,传统刷题平台无法模拟多角色对话的真实面试压力。大多数候选人只能靠背答案,而非真正练习在不同类型面试官面前的临场表现。我想构建一个系统,让人可以在"低风险"环境里体验"高压力"的真实面试场景。

问题拆解

  • 1不同面试官关注点截然不同(HR 问动机、技术面问实现、行业专家问视野)——如何让每个 AI 角色真正"像"那个职位的人?
  • 2如何让面试题与候选人的简历和目标 JD 真正匹配,而不是泛泛而问?
  • 3如何管理多轮对话的状态,确保后续面试官能看到之前的回答并追问?
  • 4如何生成真正有用的评估报告,而不是笼统的"表现良好"?

解决方案与系统架构

设计了 4 个专家智能体,每个拥有独立的系统提示和评估维度:HR 面试官关注职业规划与软技能,技术面试官考察编程能力与系统设计,行业专家聚焦领域知识与行业洞察,挑剔评审专门挖漏洞和追问含糊之处。4 位面试官按顺序各进行 3-4 轮提问,最终汇总输出综合评估报告。

系统架构

FastAPI 作为后端服务管理对话状态与会话记录,ChromaDB 向量数据库存储 55 道精选面试题,通过语义检索匹配最相关题目。简历和 JD 上传后先做技能差距分析,提取关键能力维度作为面试上下文,传入各智能体的提示词中。DeepSeek API(兼容 OpenAI SDK)驱动所有智能体,支持多次面试记录存储与历史报告查阅。

技术栈

Python 3.10+FastAPI(Web 服务)ChromaDB(向量检索)DeepSeek API(LLM 驱动)OpenAI SDK(兼容接口)uvicorn(ASGI 服务器)
Prompt 工程

Prompt 设计

每个面试官智能体拥有专属系统提示,明确定义其角色身份、提问风格和评估重点。HR 的提示词强调"评估文化契合度和职业动机";技术面试官被要求"追问实现细节,不接受模糊答案";行业专家关注"候选人对行业趋势的理解深度";挑剔评审则被设定为"找到简历与回答之间的矛盾点"。所有智能体共享同一份面试上下文(简历摘要 + JD 关键词),确保问题有的放矢。

系统工作流程

  1. 1
    上传简历(PDF/文本)和目标岗位 JD
  2. 2
    系统进行技能差距分析,提取核心能力维度
  3. 3
    第一轮:HR 面试官进行 3-4 题职业规划类提问
  4. 4
    第二轮:技术面试官深入考察编程与系统设计能力
  5. 5
    第三轮:行业专家评估领域知识与行业认知
  6. 6
    第四轮:挑剔评审针对薄弱点进行压力追问
  7. 7
    汇总四轮表现,生成维度化综合评估报告

遇到的问题 & 优化过程

问题

多轮面试中,后面的面试官无法感知前面的对话内容,导致重复提问,体验割裂。

解决方案

在每个智能体的提示词上下文中注入摘要化的前序对话记录,让每位"面试官"在进场前已了解候选人此前的表现。同时对历史对话做截断摘要以控制 Token 消耗。

问题

ChromaDB 向量检索偶尔返回与简历领域不相关的题目,降低面试针对性。

解决方案

在检索时增加元数据过滤,结合 JD 提取的技术标签对候选题目做二次筛选,确保检索到的题目与候选人背景高度匹配。

结果

  • 完整模拟 4 轮、16+ 道题的真实面试流程
  • 支持多次面试记录存储与历史报告随时查阅
  • 55 道向量化题库驱动精准、个性化提问
  • 输出多维度综合评估报告,涵盖各角色打分与改进建议

反思

这个项目让我深刻理解了"多智能体"不只是"多个 API 调用"——关键在于每个智能体的角色设定要足够清晰,边界要足够明确。提示词的质量直接决定了"面试官"是否像那么回事。另一个收获是:状态管理在多轮对话中至关重要,早期忽视这一点导致了很多体验问题。