AI面试业务实践
1. 需求背景
单词学习教练的招聘分为两轮面试,一轮面试是对候选人的英语口语发音,单词词汇量的测试(使用语音评分服务以及自研的词汇量评测方案);二轮面试是对候选人的教师职业素养能力的测试,分为自我介绍和职业素养开放性问答两个环节。
进入二面,会先播放一个单词学习教练的工作内容介绍视频,播放完毕进入自我介绍环节:
- 页面展示题目“请做一个自我介绍吧。“,并语音播放题目;
- 候选人点击录音按钮,开始作答,系统开始录音,并展示2 分钟的倒计时;
- 用户点击作答完成,或者倒计时结束,进入下一个环节;
职业素养问答环节:
- 职业素养题目分为 4 道题,候选人每回答完成一道题,就进入下一道题;
- 4 道题目作答完成,展示面试结果;
- 如果面试未通过,可以重新面试,一共两次机会;
2. 技术方案
考虑到成本与用户体验之间的平衡;决定采用语音转文本 + 大语言模型评判的方式来完成二面面试的核心评判逻辑;考虑到代码的可扩展性和维护成本,采用策略模式+模版方法设计模式来组织代码逻辑;
1. 核心评判逻辑时序图
sequenceDiagram
actor User
participant Frontend
participant Backend
participant Database
participant AliyunASR
participant LLM
User->>Frontend: 点击录音按钮开始答题
Frontend->>User: 开始录音
User->>Frontend: 点击完成按钮
Frontend->>Frontend: 生成MP3音频文件
Frontend->>Backend: 提交答案(含MP3)
par
Backend->>Database: 创建/更新答案记录(状态:已回答)
Backend->>AliyunASR: 提交音频进行语音识别
AliyunASR-->>Backend: 返回识别文本结果
Backend->>Database: 更新答案记录(保存识别文本)
Backend->>LLM: 提交问题及答案文本请求评判
LLM-->>Backend: 返回评判结果
Backend->>Database: 更新答案记录(状态:评判完成,保存结果)
end
Backend-->>Frontend: 返回下一题
Frontend-->>User: 显示下一题
2. 代码具体实现
1. 面试题评判策略类
classDiagram
%% 问题评判策略接口
class IQuestionDetermineStrategy {
<<interface>>
determine(AnswerDto) AnswerFeedbackDto
}
%% 具体实现类
%% 职业技能题评判策略实现
class ProfessionalSkillsDetermineStrategy {
+determine(AnswerDto) AnswerFeedbackDto
}
%% 职业素养题评判策略实现
class ProfessionalQualityDetermineStrategy {
+determine(AnswerDto) AnswerFeedbackDto
}
%% 情景测试题评判策略实现
class SituationTestDetermineStrategy {
+determine(AnswerDto) AnswerFeedbackDto
}
%% 关系定义
IQuestionDetermineStrategy <|.. ProfessionalSkillsDetermineStrategy
IQuestionDetermineStrategy <|.. ProfessionalQualityDetermineStrategy
IQuestionDetermineStrategy <|.. SituationTestDetermineStrategy
2. 具体面试题类型评判处理的模板方法
classDiagram
%% 抽象类
class AbstractVoiceAnswerProcessor {
<<abstract>>
+audioToText(AnswerDto) void
+aiDetermine(AnswerDto) void
}
%% 自我介绍题目处理
class SelfIntroductionProcessor {
+audioToText(AnswerDto) void
+aiDetermine(AnswerDto) void
}
%% 职业素养题目处理
class ProfessionalQualityProcessor {
+audioToText(AnswerDto) void
+aiDetermine(AnswerDto) void
}
%% 情景测试题目处理
class SituationTestProcessor {
+audioToText(AnswerDto) void
+aiDetermine(AnswerDto) void
}
%% 运营话术测试题目处理
class OperationTestProcessor {
+audioToText(AnswerDto) void
+aiDetermine(AnswerDto) void
}
AbstractVoiceAnswerProcessor <|-- SelfIntroductionProcessor
AbstractVoiceAnswerProcessor <|-- ProfessionalQualityProcessor
AbstractVoiceAnswerProcessor <|-- SituationTestProcessor
AbstractVoiceAnswerProcessor <|-- OperationTestProcessor
4. ai评判核心方法
aiDetermine()方法实际上是将具体题目的回答的文本提交到dify部署的agent做评判,返回的结果更新到数据库表。
1.如果指定模型返回的格式为json,偶尔模型返回的格式会不正确,所以这里和模型交互要增加重试机制。
2.agent的提示词参考 AI招聘提示词示例
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Kiboroy's Stack!