day13-大模型辅助实现简历匹配度,提示词工程
用提示词工程给招聘平台做简历匹配度从结构化 Prompt 到 LLM 精排的实战关键词FastAPI、提示词工程Prompt Engineering、LLM 简历匹配、Qwen、Elasticsearch 召回大模型精排、Function Calling一、背景为什么招聘平台需要简历匹配度传统招聘平台的核心链路是岗位发布 → 简历投递 → HR 人工筛选。当岗位和简历数量上来后HR 面对成百上千份简历最大的痛点是无法快速判断这份简历和这个岗位到底有多匹配。过去我们靠 ES 的关键词检索job_name、job_desc 的 multi_match做召回但关键词命中 ≠ 真实匹配一个写了会用 Spring的简历和一个要求精通 Spring Cloud 微服务架构的岗位关键词都对上了实际能力却差很远。大语言模型LLM的出现让语义级匹配成为可能。本文基于一个真实落地的 FastAPI 招聘项目讲清楚我们是如何用提示词工程把简历匹配度做成可量化、可解析、可工程化的能力。二、整体架构召回交给 ES精排交给 LLM我们的做法是典型的两段式召回层ES用 Elasticsearch 的multi_matchbool filter做粗筛按职位名称、企业名称、职位描述、任职要求、行业多字段加权匹配并用 term filter 做城市/经验/学历的精确过滤。精排层LLM对召回后的候选岗位把岗位 JD 求职者完整简历拼成结构化 Prompt让大模型输出job_matching_degree0-100 百分比和matching_reason匹配理由。这样做的好处是ES 负责快和准的召回LLM 负责懂语义的精排各司其职成本可控。三、提示词工程的核心结构化 Prompt 模板提示词工程不是把需求写一句话扔给模型而是要把任务拆成角色、任务、输入、输出格式、约束、示例六个部分。我们项目里llm/case1.py沉淀了一个标准模板真正用于简历匹配度的 Prompt 在app/services/job_service.py它把这套模板用到了极致节选核心结构3.1 为什么要把输入拆成 1/2/3/4/5 这么多模块因为简历是多模态结构化数据基本信息、求职意向、工作经历、项目经历、教育经历、专业技能、个人优势、语言能力各自独立存表模型里是ResumeBasicInfo、JobIntention、WorkExperience、ProjectExperience、EducationExperience、ProfessionalSkill、AdvantageEvaluation、LanguageAbility。提示词里把每个模块显式列出来等于在告诉模型评估时要综合考虑这 8 个维度而不是只盯着一个字段。尤其matching_reason需要引用具体证据项目经历匹配输入越结构化模型给出的理由越可解释。3.2 输出控制的三个关键约束强制 JSON 输出字段固定为job_matching_degree和matching_reason方便后端直接json.loads解析落库前端展示进度条。数值归一化到 0-100 百分比让不同岗位的匹配度可横向比较、可排序。禁止输出任何思考、推理、标签直接输出 JSON这是踩坑后加的。早期模型常先输出好的我来帮你分析……再给 JSON导致解析失败。一条约束直接干掉噪声解析成功率大幅提升。调用时我们用了异步客户端避免阻塞主服务四、配套能力让匹配链路更智能光有匹配度还不够真实场景里还有两类需求我们同样用提示词工程 工具调用解决。4.1 对话上下文管理滑动窗口 历史压缩求职者和 AI 聊帮我找匹配度高的岗位时需要多轮对话。项目llm/case2.py用 Redis 存每个会话的消息列表并做了上下文压缩当消息超过 10 条保留最近 10 条把更早的历史交给 LLM 做一次语义压缩再拼回去。这样既省 token又不丢关键信息。4.2 Function Calling把学历校验接进匹配匹配时经常要验证候选人学历真伪。llm/case6.py用 OpenAI 兼容的tools声明了academic_credential_verification函数模型识别到查学历验证码 AQGX...后自动触发工具调用拿到结果再生成最终回复。这类模型决策 程序执行的模式是提示词工程进阶的关键一环。五、工程落地要点与踩坑ES 召回是前置条件job_search_service.py里SEARCH_FIELDS给job_name^3、enterprise_name^2设了权重filter 条件城市/经验/学历用term走filter子句——不参与评分、可被缓存。没有好的召回LLM 精排就是无源之水。temperature 要克制匹配度是偏确定性任务我们设为 0.75 左右并尽量低避免同一份简历两次打分差异过大。异步 流式ES 查询和 LLM 调用全部async并在 case1 用 SSEtext/event-stream做流式输出前端体验更顺滑。DB 兜底当 ES 不可用时search_db_fallback直接查 MySQL返回格式与 ES 完全一致前端无感切换。API Key 走环境变量DASHSCOPE_API_KEY一律从环境变量读绝不硬编码。六、小结简历匹配度不是玄学而是提示词工程 工程架构的结合体用结构化 Prompt角色/任务/输入/输出/约束/示例把模糊的匹不匹配变成可量化的job_matching_degree用输入拆解把多表简历拼成模型能理解的完整语境用输出约束保证结果可解析、可落库用ES 召回 LLM 精排的两段式架构平衡成本与效果再辅以上下文管理和Function Calling撑起完整智能体验。提示词工程的本质是用工程化的方式和大模型对话。当你把每一次调用都当成一次严谨的接口设计——明确输入输出、加好约束、留好示例——大模型就从玩具变成了生产线上的可靠组件。这正是我们在招聘项目里把匹配度从 60% 准确率打磨到可用的核心心得。

相关新闻

【CTF-SHOW】一句话木马变形

【CTF-SHOW】一句话木马变形

开局一个输入框,可以执行php代码输入echo HelloWord; 提示只有字母,数组,下划线,括号,分号允许输入system(ls),发现当前目录中存在flag.php尝试访问flag.php,结果一片空白方法一:bas…

2026/10/13 6:49:21 阅读更多 →
汽车嵌入式软件应用层开发:从AUTOSAR架构到车门控制实战

汽车嵌入式软件应用层开发:从AUTOSAR架构到车门控制实战

在实际汽车嵌入式软件开发中,应用层是连接上层业务逻辑与底层硬件、中间件的关键枢纽。它直接决定了车辆功能的实现方式、响应性能和可维护性。无论是开发一个简单的车窗控制功能,还是实现复杂的自动驾驶决策模块,理解应用层的架构、通信机制…

2026/10/4 18:06:49 阅读更多 →
Unity虚拟触摸板开发:基于EventSystem的多点触控与手势识别实现

Unity虚拟触摸板开发:基于EventSystem的多点触控与手势识别实现

1. 项目概述:为什么要在Unity里再造一个“触摸板”?最近在做一个需要复杂手势操控的移动端项目,UI同事丢过来一个需求:希望有一个区域,手指在上面滑动时,能像笔记本电脑的触摸板一样,不仅控制一…

2026/10/11 12:57:26 阅读更多 →

最新新闻

Kotlin继承与接口代理:by关键字及super冲突解决实战

Kotlin继承与接口代理:by关键字及super冲突解决实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 3:27:35 阅读更多 →
嵌入式老兵转机器人:简历为何总被刷?

嵌入式老兵转机器人:简历为何总被刷?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 3:27:35 阅读更多 →
纯CSS图片手风琴效果:零JS高性能悬停交互方案

纯CSS图片手风琴效果:零JS高性能悬停交互方案

1. 项目概述:这不是炫技,是解决真实交互痛点的轻量方案“CSS图片手风琴效果(鼠标悬停)”——这八个字背后,藏着前端日常中一个高频却常被低估的需求:如何在不加载额外JS库、不触发页面重排、不牺牲首屏性能…

2026/10/14 3:27:35 阅读更多 →
打卡信奥刷题(3626)用C++实现信奥题 P11849 [TOIP 2023] 裁员风暴

打卡信奥刷题(3626)用C++实现信奥题 P11849 [TOIP 2023] 裁员风暴

P11849 [TOIP 2023] 裁员风暴 题目描述 孙执行官任职于美味蛋糕股份有限公司,由于今年财报未达预期,股东寄了公开信呼吁公司削减成本,孙执行官决定让公司部分伙伴"走自己的路"。 孙执行官列出 nnn 个公司目标,并请员工们…

2026/10/14 3:27:35 阅读更多 →
DeepSeek    LeetCode 319. 灯泡开关 Java实现

DeepSeek LeetCode 319. 灯泡开关 Java实现

思路: 第 i 个灯泡最终是否亮,取决于它被切换了多少次。 第 i 个灯泡会在它的每个约数轮次被切换,所以切换次数等于 i 的约数个数。 只有完全平方数的约数个数是奇数,因此最终亮着的灯泡编号都是完全平方数。 所以答案就是 1 ~ n …

2026/10/14 3:27:35 阅读更多 →
Burp suite learning

Burp suite learning

今天学习怎样使用burp suite 进行抓包操作。这是简易的流程:当你安装了burp suite 并且完成了JAVA环境搭建和证书的申请后,启动burp,并且将浏览器的代理调成burp,开启拦截。这样一来,浏览器所运行的包都会被你拦截。这引发出两个问…

2026/10/14 3:26:35 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →