🎙️ 构建一个 智能面试问题生成器

83 阅读2分钟

在求职者准备面试时,最需要的就是:模拟真实、个性化的面试问题
于是我设计并开发了一个小型系统,用户只需输入职位信息,系统就能自动生成面试问题,并通过语音助手播放,模拟真实场景。

这个项目融合了:

  • 📄 Prompt 工程
  • 🤖 OpenAI API 调用
  • 🔊 VAPI 语音助手集成
  • ⚙️ 全栈接口设计(前端 + API + 后端逻辑)

🧱 技术架构

采用了前后端分离的架构,并使用语音平台 Vapi 提供语音播报功能。

用户输入 → 收集字段 → 调用生成API → 构造Prompt → 返回问题 → 播报语音

技术栈:

层级技术
前端React + TypeScript + TailwindCSS
表单交互字段收集:role、type、level、techstack、amount
后端Node.js + Next.js API 路由
AIOpenAI GPT-4 调用生成问题
语音播报VAPI 平台 API
数据可视化(预留)Recharts 可拓展支持评分图表

🔄 用户输入与 Prompt 构建逻辑

以下是 Prompt 模板的一部分:

The job role is ${role}.  
The job experience level is ${level}.  
The tech stack used in the job is: ${techstack}.  
The focus between behavioural and technical questions should lean towards: ${type}.  
The amount of questions required is: ${amount}.

Please return only the questions, without any additional text.
Return the questions formatted like this: ["Question 1", "Question 2", "Question 3"]

👉 我特别注意了 prompt 的“干净性”,避免生成无关内容,让语音播报更清晰。


🔗 API 请求结构(/api/vapi/generate)

POST /api/vapi/generate
{
  role: "Full Stack Engineer",
  type: "technical",
  level: "mid-level",
  techstack: "React, Node.js, MongoDB",
  amount: 5
}

服务端收到请求后:

  1. 动态构造 prompt
  2. 调用 OpenAI API(gpt-4
  3. 返回格式化好的问题数组
  4. 给 VAPI 平台返回语音文本

🔊 集成 VAPI:播报语音结果

我通过 VAPI 的 API Request 模块实现自动播报逻辑。

在 VAPI 的 workflow 中我设置了:

  • 用户参数收集
  • 调用生成问题的 endpoint(POST 请求)
  • 播报返回的内容
  • 通话结束逻辑

示例流程图:

(你之前那张图可以放这里)


遇到的问题 & 解决方式

问题解决方案
TS2367 类型不兼容改用枚举类型(CallStatus.ACTIVE)避免字符串比较
OpenAI 输出结构不稳定通过增加 prompt 中的格式限制控制输出形态
VAPI 语音重复或中断优化语音 payload,避免多步嵌套或语义不清

🚀 后续扩展计划

  • 增加用户登录和历史记录功能
  • 支持用户评分与面试反馈生成
  • 加入 Recharts 图表呈现面试表现