中文语音面试模拟器
适用范围
此 Skill 用于完成一场可运行的中文求职模拟面试。
能力边界:
- - 仅依赖
ASR、LLM、 INLINECODE2 - 用户通过语音回答,系统作为单一面试官连续提问
- 支持追问、换题、结束决策和最终总结报告
不做:
- - 简历解析
- 岗位知识库检索
- 英文面试
- 情绪识别、说话人分离、视频处理
- 实时打断式流式语音对话
默认配置
若调用方未给完整配置,优先补齐以下默认值:
- -
target_role: INLINECODE4 - INLINECODE5 : INLINECODE6
- INLINECODE7 : INLINECODE8
- INLINECODE9 : INLINECODE10
- INLINECODE11 : INLINECODE12
约束:
- -
max_round_limit 必须大于等于 INLINECODE14 - 未达到
min_rounds 前,除非用户明确要求结束,否则不要提前结束 - 任意时候都不能超过 INLINECODE16
工作流
按以下顺序执行:
- 1. 初始化会话
- 读取
target_role、
interviewer_style、轮数限制和语言
- 创建 INLINECODE19
- 2. 生成开场与第一问
- 使用 LLM 生成
opening_text、
first_question、
question_type
- 第一问优先从
self_intro 或
motivation 开始
- 同一轮只问一个问题
- 3. 播报问题
- 将当前问题文本交给 TTS
- 返回当前轮次、问题文本和问题语音
- 4. 接收用户回答
- 使用 ASR 将用户语音转成文本
- 若 ASR 结果为空、过短或明显无效,礼貌要求用户补充,不进入正式评估
- 5. 评估本轮回答
- 从
relevance、
clarity、
specificity、
persuasiveness 四个维度打分
- 生成一条简短评语
- 提炼回答缺口,例如“缺少个人贡献”“缺少结果数据”
- 6. 决定下一步
- 输出
action 为
follow_up、
new_question 或
end
- 达到
min_rounds 前,默认只允许
follow_up 或
new_question
- 达到
max_round_limit 时必须结束
- 若用户明确说“结束”“先到这里”,可直接结束
- 7. 生成下一问或结束话术
-
follow_up:围绕上一轮回答中的缺口深挖
-
new_question:切换到未充分覆盖的问题类型
-
end:输出简短收束话术,并进入最终报告生成
- 8. 生成最终报告
- 汇总整场轮次记录和各轮评分
- 输出结构化
FinalReport
- 可选生成一段适合 TTS 播报的摘要
问题类型
优先在以下范围内控制问题分布,避免结构失衡:
- - INLINECODE41
- INLINECODE42
- INLINECODE43
- INLINECODE44
- INLINECODE45
- INLINECODE46
- INLINECODE47
- INLINECODE48
使用规则:
- - 开场优先
self_intro 或 INLINECODE50 - 中段重点覆盖
project_experience、challenge、 INLINECODE53 - 若回答空泛,优先追问,不急于切换
- 收束时可使用 INLINECODE54
风格约束
- -
friendly:鼓励式、包容、引导型 - INLINECODE56 :标准、客观、自然
- INLINECODE57 :更尖锐、要求更具体,但不得冒犯或羞辱用户
所有风格都要遵守:
- - 像真实中文面试官
- 避免长篇说教
- 每次只问一个问题
- 问题长度适中,不要连续堆叠多个子问
追问与切换规则
优先追问的情况:
- - 提到项目但未说明个人职责
- 提到结果但没有数据或事实支撑
- 只有态度表述,没有实例
- 声称掌握某项技能,但无法证明熟练度
- 逻辑不完整,需要澄清
优先切换新话题的情况:
- - 当前问题已经回答完整
- 连续追问后信息增量很低
- 当前主题覆盖已足够
- 面试接近结束,需要补足其他维度
输出要求
每轮输出至少包含:
- - INLINECODE58
- INLINECODE59
- INLINECODE60
- INLINECODE61 或可用于生成语音的文本
- INLINECODE62
- INLINECODE63
- INLINECODE64
结束时输出:
- - INLINECODE65
- INLINECODE66
- 可选 INLINECODE67
字段结构见 references/stateschema_cn.md。
Prompt 使用方式
不要用一个超长 Prompt 覆盖所有行为。拆成以下模块:
- - 开场与首问生成
- 单轮评估
- 继续/结束决策
- 下一问生成
- 最终报告生成
推荐模板见 references/prompts_cn.md。
直接运行
运行脚本:
安装依赖:
环境变量参考:
最小运行方式:
CODEBLOCK0
运行时行为:
- - 脚本先调用 LLM 生成开场和首问
- 每轮可输入音频文件路径,调用 SenseAudio ASR 转写
- 若临时没有音频,也可直接输入文本继续
- 问题和总结默认调用 SenseAudio TTS,并把音频写到 INLINECODE70
- 最终完整结果写到 INLINECODE71
接口约定:
- - LLM 默认读取
INTERVIEW_LLM_API_KEY,未提供时回退到 INLINECODE73 - ASR/TTS 默认读取
INTERVIEW_ASR_API_KEY / INTERVIEW_TTS_API_KEY,未提供时回退到 INLINECODE76
注意事项
- - 评分用于练习反馈,不用于真实招聘排名
- 评语要具体、可执行,避免空泛夸奖
- 结论必须基于用户实际回答,不要凭空补充经历
- 当用户连续多轮无法给出有效回答时,可以礼貌收束
- 最终报告里必须给出优势、问题、改进建议和一段更优示例回答
中文语音面试模拟器
适用范围
此 Skill 用于完成一场可运行的中文求职模拟面试。
能力边界:
- - 仅依赖 ASR、LLM、TTS
- 用户通过语音回答,系统作为单一面试官连续提问
- 支持追问、换题、结束决策和最终总结报告
不做:
- - 简历解析
- 岗位知识库检索
- 英文面试
- 情绪识别、说话人分离、视频处理
- 实时打断式流式语音对话
默认配置
若调用方未给完整配置,优先补齐以下默认值:
- - targetrole: 通用求职者
- interviewerstyle: professional
- language: zh-CN
- minrounds: 4
- maxround_limit: 8
约束:
- - maxroundlimit 必须大于等于 minrounds
- 未达到 minrounds 前,除非用户明确要求结束,否则不要提前结束
- 任意时候都不能超过 maxroundlimit
工作流
按以下顺序执行:
- 1. 初始化会话
- 读取 target
role、interviewerstyle、轮数限制和语言
- 创建 SessionState
- 2. 生成开场与第一问
- 使用 LLM 生成 opening
text、firstquestion、question_type
- 第一问优先从 self_intro 或 motivation 开始
- 同一轮只问一个问题
- 3. 播报问题
- 将当前问题文本交给 TTS
- 返回当前轮次、问题文本和问题语音
- 4. 接收用户回答
- 使用 ASR 将用户语音转成文本
- 若 ASR 结果为空、过短或明显无效,礼貌要求用户补充,不进入正式评估
- 5. 评估本轮回答
- 从 relevance、clarity、specificity、persuasiveness 四个维度打分
- 生成一条简短评语
- 提炼回答缺口,例如“缺少个人贡献”“缺少结果数据”
- 6. 决定下一步
- 输出 action 为 follow
up、newquestion 或 end
- 达到 min
rounds 前,默认只允许 followup 或 new_question
- 达到 max
roundlimit 时必须结束
- 若用户明确说“结束”“先到这里”,可直接结束
- 7. 生成下一问或结束话术
- follow_up:围绕上一轮回答中的缺口深挖
- new_question:切换到未充分覆盖的问题类型
- end:输出简短收束话术,并进入最终报告生成
- 8. 生成最终报告
- 汇总整场轮次记录和各轮评分
- 输出结构化 FinalReport
- 可选生成一段适合 TTS 播报的摘要
问题类型
优先在以下范围内控制问题分布,避免结构失衡:
- - selfintro
- motivation
- projectexperience
- challenge
- teamwork
- strengthsweaknesses
- careerplan
- closing
使用规则:
- - 开场优先 selfintro 或 motivation
- 中段重点覆盖 projectexperience、challenge、teamwork
- 若回答空泛,优先追问,不急于切换
- 收束时可使用 closing
风格约束
- - friendly:鼓励式、包容、引导型
- professional:标准、客观、自然
- stress:更尖锐、要求更具体,但不得冒犯或羞辱用户
所有风格都要遵守:
- - 像真实中文面试官
- 避免长篇说教
- 每次只问一个问题
- 问题长度适中,不要连续堆叠多个子问
追问与切换规则
优先追问的情况:
- - 提到项目但未说明个人职责
- 提到结果但没有数据或事实支撑
- 只有态度表述,没有实例
- 声称掌握某项技能,但无法证明熟练度
- 逻辑不完整,需要澄清
优先切换新话题的情况:
- - 当前问题已经回答完整
- 连续追问后信息增量很低
- 当前主题覆盖已足够
- 面试接近结束,需要补足其他维度
输出要求
每轮输出至少包含:
- - roundid
- questiontype
- interviewerquestion
- intervieweraudio 或可用于生成语音的文本
- asr_text
- evaluation
- decision
结束时输出:
- - closingtext
- finalreport
- 可选 reportsummarytts_text
字段结构见 references/stateschema_cn.md。
Prompt 使用方式
不要用一个超长 Prompt 覆盖所有行为。拆成以下模块:
- - 开场与首问生成
- 单轮评估
- 继续/结束决策
- 下一问生成
- 最终报告生成
推荐模板见 references/prompts_cn.md。
直接运行
运行脚本:
- - scripts/run_interview.py
安装依赖:
- - pip install -r requirements.txt
环境变量参考:
最小运行方式:
bash
python scripts/run_interview.py --target-role 算法工程师实习生 --style professional
运行时行为:
- - 脚本先调用 LLM 生成开场和首问
- 每轮可输入音频文件路径,调用 SenseAudio ASR 转写
- 若临时没有音频,也可直接输入文本继续
- 问题和总结默认调用 SenseAudio TTS,并把音频写到 outputs/
- 最终完整结果写到 outputs/final_report.json
接口约定:
- - LLM 默认读取 INTERVIEWLLMAPIKEY,未提供时回退到 IMEMODELAPIKEY
- ASR/TTS 默认读取 INTERVIEWASRAPIKEY / INTERVIEWTTSAPIKEY,未提供时回退到 SENSEAUDIOAPIKEY
注意事项
- - 评分用于练习反馈,不用于真实招聘排名
- 评语要具体、可执行,避免空泛夸奖
- 结论必须基于用户实际回答,不要凭空补充经历
- 当用户连续多轮无法给出有效回答时,可以礼貌收束
- 最终报告里必须给出优势、问题、改进建议和一段更优示例回答