基于 LangGraph 构建的多智能体面试系统,包含 HR、技术面试官、技术总监三个智能体,协同完成候选人面试评估。
- 多智能体协作:HR → 技术面试官 → 技术总监 三轮面试
- 结构化评估:每位面试官输出包含分数和评语的 JSON 评价
- 智能路由:Supervisor 节点自动判断面试进度并路由
- 综合评估:Summary 节点汇总所有评价,判断是否录用
- 现代化 UI:响应式设计,深色主题,流畅动画
┌─────────────────────────────────────────────────────────────┐
│ InterviewState │
│ - messages: 消息列表 │
│ - currentInterviewer: 当前面试官 │
│ - evaluations: 评价记录 │
│ - finalResult: 最终结果 │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Graph Flow │
│ │
│ START → Router ─┬→ HR Node ────┐ │
│ ├→ Tech Node ──┼→ Supervisor → Router │
│ └→ Director ───┘ │ │
│ ▼ │
│ Summary Node → END │
└─────────────────────────────────────────────────────────────┘
# 安装依赖
npm install
# 设置环境变量 (二选一)
# 方式一:使用 DeepSeek(默认)
export DEEPSEEK_API_KEY="YOUR_DEEPSEEK_API_KEY"
# 方式二:使用 OpenAI
export OPENAI_API_KEY="your-openai-api-key"
export OPENAI_BASE_URL="https://api.openai.com/v1"
export MODEL_NAME="deepseek-chat"# 启动服务
npm start
# 或开发模式(自动重载)
npm run dev访问 http://localhost:3000 开始面试
├── src/
│ ├── interview-graph.js # LangGraph 图定义和节点实现
│ └── server.js # Express 服务器
├── public/
│ └── index.html # 前端界面
├── package.json
└── README.md
{
messages: [], // 对话消息列表
currentInterviewer: "", // 当前面试官 (hr/tech/director)
evaluations: {}, // 各面试官评价
interviewerFinished: false,
finalResult: null // 最终评估结果
}| 节点 | 功能 |
|---|---|
hr_node |
HR 面试,评估软技能和文化匹配度 |
tech_node |
技术面试,评估技术能力 |
director_node |
总监面试,评估领导力和战略思维 |
supervisor_node |
解析面试官是否完成,决定路由 |
summary_node |
汇总评价,判断是否录用 |
{
"interviewer": "hr",
"finished": true,
"evaluation": {
"score": 85,
"comment": "候选人表现优秀...",
"strengths": ["沟通能力", "团队协作"],
"weaknesses": ["某方面待提升"]
}
}- 平均分 ≥ 70
- 所有单项分数 ≥ 60
- 深色科技风格主题
- 实时显示当前面试阶段
- 支持 Markdown 格式消息
- 流畅的加载动画
POST /api/interview/start
Body: { "candidateName": "张三" }
Response: { "success": true, "sessionId": "...", "message": "..." }
POST /api/interview/respond
Body: { "sessionId": "...", "message": "我的回答是..." }
Response: { "success": true, "message": "...", "isComplete": false }
GET /api/interview/status/:sessionId
Response: { "success": true, "state": {...} }
| 变量 | 说明 | 默认值 |
|---|---|---|
DEEPSEEK_API_KEY |
DeepSeek API 密钥 | - |
OPENAI_API_KEY |
OpenAI API 密钥(备选) | - |
OPENAI_BASE_URL |
API 基础 URL | https://api.deepseek.com |
MODEL_NAME |
模型名称 | deepseek-chat |
PORT |
服务端口 | 3000 |
💡 提示:默认使用 DeepSeek,只需设置
DEEPSEEK_API_KEY即可。如需使用 OpenAI,请同时设置OPENAI_BASE_URL和MODEL_NAME。
MIT