TechCoach:AI 面试教练技术全景报告
基于真实代码库的深度技术剖析
项目概述
TechCoach 是一个面向求职者的、以大语言模型(LLM)为核心的个人技术面试教练平台。它通过分析用户上传的简历、项目经历和目标岗位描述,利用先进的 AI 技术生成高度定制化的模拟面试问题,帮助用户高效准备技术面试。
核心目标: 将用户的个人背景材料转化为高质量的模拟面试体验,赋能个人求职者。
项目采用现代化的前后端分离架构,通过 Docker 容器化技术进行封装和部署,体现了微服务的设计思想。其核心创新在于将复杂的 AI 任务(如 RAG 检索和面试问题生成)分解为多个协同工作的智能体(Agent),从而提供精准、个性化的服务。
系统架构
整体架构
TechCoach 项目采用前后端分离的现代化 Web 应用架构,并通过 Docker 容器化技术进行封装和部署。整个系统由多个协同工作的服务组成,通过 docker-compose.yml 进行编排。
graph TD
subgraph "User"
U[Browser]
end
subgraph "Docker Compose Stack"
F[Frontend
Vue.js SPA] A[Backend API
FastAPI] C[Vector DB
ChromaDB] end subgraph "External Services" LLM[LLM Provider
OpenAI/Gemini/etc.] end U -->|HTTPS| F F -->|REST API| A A -->|Vector Search| C A -->|LLM Calls| LLM style U fill:#f9f,stroke:#333,stroke-width:2px style F fill:#bbf,stroke:#333,stroke-width:2px style A fill:#9f9,stroke:#333,stroke-width:2px style C fill:#ff9,stroke:#333,stroke-width:2px style LLM fill:#f96,stroke:#333,stroke-width:2px
Vue.js SPA] A[Backend API
FastAPI] C[Vector DB
ChromaDB] end subgraph "External Services" LLM[LLM Provider
OpenAI/Gemini/etc.] end U -->|HTTPS| F F -->|REST API| A A -->|Vector Search| C A -->|LLM Calls| LLM style U fill:#f9f,stroke:#333,stroke-width:2px style F fill:#bbf,stroke:#333,stroke-width:2px style A fill:#9f9,stroke:#333,stroke-width:2px style C fill:#ff9,stroke:#333,stroke-width:2px style LLM fill:#f96,stroke:#333,stroke-width:2px
核心模块
后端核心模块 (app/)
- gateway: API 网关,基于 FastAPI,负责请求分发和中间件处理。
- agentic_core: AI 能力核心,实现 RAG、CrewAI 工作流和 LLM 路由。
- question_service: 封装面试问题生成与管理的业务逻辑。
- shared_kernel: 共享组件,如数据库模型、异常定义等。
前端核心模块 (frontend/)
- views: 主要页面,如 Dashboard、Interview、Documents。
- router: Vue Router 管理前端路由。
- services: 封装与后端 API 的通信逻辑。
- stores: Pinia 进行全局状态管理。
技术栈
| 层级 | 技术 | 说明 |
|---|---|---|
| 后端 | Python, FastAPI, Uvicorn | 高性能异步 API 服务 |
| AI 框架 | CrewAI, LangChain | 智能体编排与 LLM 交互 |
| 数据库 | PostgreSQL, ChromaDB | 关系型数据与向量存储 |
| 前端 | Vue.js 3, Vite, Pinia | 现代化单页应用 |
| 部署 | Docker, Docker Compose | 容器化微服务部署 |
AI 核心模块详解
Agentic Core
Agentic Core 是 TechCoach 项目最关键的智能中枢,它采用了智能体 (Agent) 和工作流 (Crew) 的模式,将复杂的 AI 任务分解为多个步骤,由不同的 Agent 协同完成。
设计哲学: 通过模块化和分工,将复杂的 LLM 交互(如面试问题生成)转化为可管理、可扩展的智能体工作流。
核心组件
- LLM Router (llm_router/): 负责与底层的大语言模型服务进行通信,可能支持多种不同的 LLM。
- Agent Manager (agent_manager.py): 定义和管理多个 AI 智能体 (Agent),每个 Agent 有特定的角色和工具。
- Tools (tools/): 为 AI 智能体提供可以使用的工具,例如文件读写、向量数据库搜索等。
RAG 系统
检索增强生成 (RAG) 是 TechCoach 实现个性化面试问题的核心技术。它允许系统从用户上传的文档中检索相关信息,并将其作为上下文提供给 LLM,从而生成更精准的问题。
sequenceDiagram
participant U as User
participant B as Backend API
participant DP as Document Processor
participant DS as Document Store (ChromaDB)
participant AG as Agent Crew
participant LLM as LLM Provider
U->>B: Upload Resume & JD
B->>DP: Process Documents
DP->>DS: Store as Vectors
U->>B: Request Interview Questions
B->>AG: Trigger Crew
AG->>DS: Vector Search (Query)
DS-->>AG: Relevant Context
AG->>LLM: Generate Questions with Context
LLM-->>AG: Generated Questions
AG-->>B: Final Question List
B-->>U: Display Questions
CrewAI 工作流
CrewAI 框架用于定义和管理 AI 智能体工作流。一个典型的面试问题生成任务可能涉及以下 Agent:
- 简历分析师 (Resume Analyst): 分析用户简历,提取关键技能和经验。
- 岗位匹配师 (Job Matcher): 将简历与目标岗位描述进行匹配,识别差距。
- 问题生成器 (Question Generator): 基于分析结果和匹配差距,生成具体的技术面试问题。
# 伪代码示例:定义一个 Crew
from crewai import Crew, Agent, Task
resume_analyst = Agent(
role='Resume Analyst',
goal='Extract key skills and experiences from the provided resume',
tools=[VectorSearchTool()]
)
job_matcher = Agent(
role='Job Matcher',
goal='Identify gaps between resume and job description',
tools=[VectorSearchTool()]
)
question_generator = Agent(
role='Question Generator',
goal='Create tailored technical interview questions