摘要:本期对话访谈,我们邀请到「AI面试王牌应用」的头号开发者「蒙同学」,他们用“源”大模型开发了一个极具创新的面试助手应用——Offercat,并在161支队伍中脱颖而出,成功斩获“2024 源AI夏令营”冠军。这个应用不仅为他们自己的求职之路带来了便利,也为成千
"与「源」共创,零距离触碰创意孵化的奇点时刻,共见Brilliant idea的落地成真"。系列对话访谈《源创空间:对话"源"粉》第一期,正式上线了!
本期对话访谈,我们邀请到「AI面试王牌应用」的头号开发者「蒙同学」,他们用“源”大模型开发了一个极具创新的面试助手应用——Offercat,并在161支队伍中脱颖而出,成功斩获“2024 源AI夏令营”冠军。这个应用不仅为他们自己的求职之路带来了便利,也为成千上万的求职者提供了强大的支持。本期内容,我们将深入访谈「蒙同学」团队是如何将一个奇思妙想转化为现实,以及应用背后的技术故事。
他们将独家揭秘从应用开发的灵感闪现到技术攻关的冒险历程,再到未来的迭代规划,让我们一睹当代青年开发者如何以应用创新实现大模型技术的价值普惠!
话题要点:
AI面试王牌应用的开发灵感何来?
源大模型来助力,如何技术攻坚优化面试助手?
怎样打磨产品的多元功能性以更好发挥作用?
未来迭代规划走向何方?
灵感溯源:从自身需求出发的探索之旅
Q: 访谈伊始,我们不禁好奇,是什么契机促使「蒙同学」团队萌生出用源大模型打造面试助手的想法呢?
蒙同学: 我们为何选择用源大模型开发面试助手?因为我们团队成员——包括即将求职的研三、大三学生,已工作的同学以及在读的博士生均亲历了求职或找实习的过程,对面试场景有深刻理解。我们既是开发者也是目标用户,深知自身需求。因此,对于面试这个场景而言,存在很多难以迈过的“坎”:初入面试时,我们常不清楚面试官的问题及流程,只能参考他人的不完整“面经”,难以构建清晰回答框架,导致面试前焦虑。面试时的紧张情绪也常见,可能源于准备不足或遇不熟悉概念,我们期望有“魔法”般的工具提示逻辑回答和遗忘概念。此外,计算机专业学生求职或实习时必背“八股文”、刷算法题,过程耗时费力且痛苦。
以及,关于我们做这个产品的愿景在于:我们希望能用主动式Agent技术催生出大模型时代的iPhone。现在的被动式Agent是被动接受用户的下达的命令,而主动式Agent是观察环境,主动预测用户需求,而用户只需要去批准Agent的计划。
我的最终理想是AR+AI眼镜成为下一代计算终端。我认为其中很关键的一个要素是交互,就像多点触控技术催生了iPhone,AR+AI眼镜也需要新的交互技术。脑机接口是最理想的方案,但是这还很遥远,而用Agent能做到类似效果,因为大模型是一个出色的Coser,如果给到足够多的信息,那大模型可能可以模仿用户的意图,甚至预测用户的意图。
我设想的交互技术是第一人称视角主动式Agent交互,通过不断记录第一人称视角和音频等信息构建用户画像和行为库,并能够通过周围环境来向用户推荐交互,如果用户确认后则执行。并且未来很有可能APP变成了Agent,系统级Agent可以用自然语言和APP级Agent进行交互。
比如当系统Agent看到用户坐到车后座时,首先推荐用户使用抖音Agent看视频,但是用户感觉晕车后拒绝了这个交互,于是系统Agent就向用户推荐听歌,当用户接受这个交互后,系统Agent便会使用音乐Agent播放音乐。
OfferCat是我们团队基于源大模型构建主动式Agent的第一步,是音频感知的主动式Agent,能主动识别音频中的面试题并自动回答,未来我们希望将其从音频扩展到音频+视频,从电脑桌面扩展到现实环境,从自动回答面试问题扩展到自动操作app。
Q: 你们为何会选择“源”大模型作为开发面试助手的基础?这个应用主要是解决了面试环节的哪些问题呢 ?简单和我们聊一聊这背后经历的选择考量吧。
蒙同学: 借助源大模型(Yuan2-2B-Mars-hf),我们开发的AI面试助手可为用户提供全流程的面试服务,显著提升准备效率,精准模拟面试场景。面试前,通过内置的源大模型即可实现面试题目的预测及面试题词的展示,帮助面试候选者构建清晰、有逻辑的回答框架。面试中,实时提示一些遗忘的概念。面试后,记录并整理面试过程,提供改进建议。依托源大模型强大的代码生成能力与快速响应能力,为计算机类面试场景生成高质量的算法题,为求职者提供全面且智能化的面试辅助服务,从面试前的准备,到面试中的实时辅助,再至面试后的总结分析,陪伴用户走过面试的全流程。
技术攻坚:构建智能面试助手的逐梦征程
Q: 您刚才提到了AI面试助手能够提供全流程的面试服务,这听起来非常有意思。我想深入了解看,在技术侧比如优化面试助手的性能方面,你们具体是做了哪些工作?
源大模型基于大规模的通用语料库进行预训练,但是针对面试场景还是有许多没覆盖到的知识,所以我们使用 LoRA(Low - Rank Adaptation)技术对源大模型进行了微调。首先构建 1000 条 JAVA 面经数据作为微调数据集,将这些数据整理问题与对应的优质回答对的问答对。在微调过程中,固定大模型的大部分原始参数,仅对新增的低秩矩阵进行训练,通过计算模型预测回答与数据集中标准回答之间的差异,并采用优化Adam算法迭代更新低秩矩阵参数,使模型能够更好地适应面试场景下的问答任务。
■ 设计源大模型面试官
在为源大模型补充了面试领域的知识后,下一步便是精心设计Prompt。Prompt的设计要求结构清晰,因此我们采用了Markdown格式来撰写Prompt内容。同时,Prompt的目标也需明确无歧义,力求简单直观,即便是三岁小孩也能一目了然。如果Prompt本身难以理解,那么大模型的输出效果也将大打折扣。因此,在设计针对面试场景的Prompt之前,必须深入了解面试的各个环节和目标。
面试通常包括自我介绍、技术能力考核、行为问题回答、解决问题能力展示等方面。例如,对于技术岗位的面试,源大模型需要能够理解和回答有关编程语言、开发工具、算法等专业技术问题;而对于非技术岗位,则可能更侧重于沟通能力、团队协作、应变能力等软技能的Prompt设计。值得注意的是,大模型往往会特别关注Prompt的开头和结尾部分,因为这些通常是全文的总结。因此,我们将最关键的信息置于Prompt的开头和结尾。在Prompt的开头,我们为源大模型设计了角色定位,例如:“你是一位特定岗位的专业面试官,请根据岗位信息和简历向面试者提问,以了解其个人背景、项目经历和专业知识,判断其是否适合该岗位。”这样的引导语明确了大模型的角色,为后续的具体Prompt提供了一个清晰的语境框架。
Q: 在完成微调和Prompt设计后,你们是如何通过迭代优化来提升模型能力的?在这个过程中,你们是如何定义“好的回答”的呢?
蒙同学: Prompt工程的核心在于通过不断测试优化大模型的输出效果。首先,我们需要定义何为“好的回答”。它首当其冲是要确保模型回答的准确性,即针对面试问题提供专业答案。鉴于我们构建了JAVA面试数据集,包含面试问题及其答案,模型的回答应尽可能与数据集中的答案相似。我们通过对比模型输出与数据集中“关键词”的重叠程度来评估Prompt的效果。此外,Prompt应能引导大模型聚焦于特定领域的知识,并根据不同岗位设计针对性的初始Prompt。例如,针对软件工程师岗位,Prompt可以是:“我正在面试软件工程师职位,请提供常见的Java编程面试问题及回答思路。”这样有助于模型快速定位相关知识,提高回答的准确性和相关性。
同时,我们还期望模型的回答在保证正确性的前提下尽量精简,避免冗长的输出,以便面试者快速获取关键信息。通过采用“few-shot”技巧,在Prompt中提供示例或模板,可以帮助模型按照特定格式或思路回答问题。例如:“请按以下模板回答如何提高团队协作效率:先列举三个主要因素,再分别阐述每个因素的具体做法。示例:因素1:沟通渠道畅通。做法:建立定期团队会议……”这样的Prompt有助于生成结构清晰、内容有序的回答,便于面试者理解和应用。
在实际应用中,我们发现将用户整个简历直接放入Prompt会导致模型输出异常,如无法停止、输出乱码或重复回答。经与专家讨论,问题在于输入token长度过长。因此,我们先让大模型精简提炼出与岗位相关的内容,再输入到Prompt中,有效缩短了Prompt长度。在实际使用时,通过RAG检索用户简历和提问相关的内容,最终解决了这一问题。同时,精简Prompt长度也提升了模型的输出速度。
Q : 我记得你们的技术说明里还提到了 「引入FunASR实时语音转文字框架」, 这是如何与“源”大模型结合的?它为面试助手带来了哪些优势?
蒙同学:这一步我们称为「让源大模型能够听到声」。是的,我们希望在模拟面试时,用户既能用文字也能用语音回答问题,并且在使用面试提词器时能自动识别面试问题,无需手动输入文字。为此,我们引入了FunASR实时语音转文字框架,将语音转换成文字后输入给源大模型。FunASR基于阿里巴巴达摩院的Paraformer非自回归端到端语音识别模型,具备高精度、高效率和便捷部署的特点,能够灵活组合语音活动检测、标点符号模型、语言模型等构建不同的识别管道。我们将音频文件输入这些管道,获取识别出的文本,再将其传递给源大模型进行处理,如理解语义、生成回答等,从而实现两者的结合。
此外,我们还采用了Cam++说话人识别技术,这是一种高效的声纹识别技术,能在面试场景中精准区分不同说话人。在面试过程中,当音频数据实时传入时,Cam++会将当前音频段的声纹特征与已建立的模型进行比对和匹配计算,依据设定的阈值准确判断说话人身份。只有确定为面试者的声音时,才会将对应的音频数据进行后续处理并转换为文字提供给源大模型;对于判定为其他人(如面试官或周围无关人员)的声音,则直接忽略,不进行文字转换操作。这样确保源大模型仅接收来自面试者的语音信息,有效避免无关语音数据的干扰,保障面试辅助功能的精准性和有效性。
同时,我们也接入了支付功能,为应用后一步的变现进行内测准备。我们使用Go语言实现后端服务,包括登录注册、鉴权及兑换码管理。用户需购买兑换码以增加使用时长。为此,我们在后端创建了兑换码验证接口,用于接收前端传来的兑换码,并在数据库中检查其是否存在且未被使用。若兑换码有效,则更新用户的使用时长记录,并将其标记为已使用状态。同时,前端会展示兑换结果及更新后的使用时长信息。通过登录注册与兑换码机制的结合,我们实现了支付接入与应用的变现能力拓展。
迭代计划:让Offercat 走向Next level !
Q: 最后,我想请问,你们对未来有什么计划?比如,在技术更新和商业化普惠方面都是如何规划的呢,谈一谈你们的想法吧。
蒙同学: 是的,如您所说,后续我们的重心是会放在技术迭代和营销推广两方面。在技术优化方面,我们将不断完善多模态大模型OCR识别算法,优化前端与后端,并构建更多面试数据集进行微调,支持简历优化,同时接入AR眼镜以支持线下面试,还会利用多模态大模型扩展到公务员面试、考研面试、设计师面试等场景。在营销计划方面,我们正在与本校进行联合宣传,在抖音、小红书、B站录制短视频宣传并建立社群,通过直播宣传和短视频插入广告进行推广,还将推出组队拼团活动,例如学生4人或6人寝室买3送1或买5送1。
Q: 再次感谢Offercat团队今天与我们分享他们的旅程和见解。我们也非常期待看到Offercat的下一步发展,以及它将如何帮助更多的人在职场上迈出成功的第一步。
来源:小向科技每日一讲