当前位置: 首页 > news >正文

基于Dify实现简历自动筛选过滤

       最近帮助人力资源部门做了一个简洁的筛选简历agent,大家知道企业人力资源在面试之前需要从海量简历中筛选出符合要求的简历,这种筛选工作需要花费大量的精力和时间,如何借助大模型和agent技术实现呢。本文就是一个简单的示例实现,目前实现了一个简历解析,分析评估和最终结果输出等,大家可根据自己的需求进行提示词编写,并加入知识库等,简历读取可以采用dify提供的文档提取器,也可以通过自行编码实现简历读取,后续操作类似,详见下面的流程图介绍。有关多份简历的筛选主要采取迭代模式,如果需要后续我再分享。简历筛选的具体实现如下,供大家参考学习。

一、数据准备

准备一批简历,格式可以是pdf、docx、txt等,pdf最好是双层pdf。

二、工作流程设计

工作流程详见下图。

1.开始和条件分支节点
输入变量为岗位名称,岗位需求,岗位职责,简历文件和解析类型,解析类型有提取器和自定义两种方式。条件分支节点用于路由不同解析方式的路径。
2.文档提取器
输入变量为简历文件,插件节点输出为简历解析后的文本内容。
3.自定义代码
主要实现简历文件的读取,由多个适配器组成,比如pdfadAdapter,docAdapter等等,实现pdf/docx等文件的解析输出,输出变量为简历的文本内容。示例pdfAdapter代码如下。

# pdf格式的简历解析:pdfAdapter
import fitz
import urllib.request
import urllib.error
from io import BytesIO
import os
def main(inputs: dict) -> dict:# 1. 拼完整 URLbase = os.environ.get("API_BASE_URL", "http://x.x.x.x:5001")  # 默认官方云地址full_url = base.rstrip("/") + inputs[0]['url']        # f['url'] 以 /files 开头# 2. 下载x.x.x.xwith urllib.request.urlopen(full_url, timeout=60) as resp:       pdf_bytes = resp.read()# 3. PyMuPDF 提取文本pdf_document = fitz.open(stream=BytesIO(pdf_bytes), filetype='pdf')# 4. 调试用start_page_num = 0text_file_full=''# 遍历每一页for page_num in range(start_page_num, len(pdf_document)):page = pdf_document[page_num]# 1.提取每一页的文本:直接用PyMuPDF提取文件中的文本信息# text = page.get_text() # 直接获取文本信息# 根据页眉页脚宽度获取文本信息rect = page.rectclip_top = 70  # 假设页眉高度是80clip_bottom = 80  # 假设页脚的高度是90crop = fitz.Rect(0, clip_top, rect.width, rect.height - clip_bottom)text = page.get_text(clip=crop) # 直接获取文本信息# 逐页追加输出所有文本text_file_full=text_file_full+textreturn {"result": text_file_full}

4.LLM 简历评估节点,提示词设计见下图。使用时最好用一些大一点的模型,比如deepseek-r1::70b以上等。

4.结束节点,设置输入内容为LLM 简历评估节点的输出变量。

三、应用效果演示

运行后,输入岗位名称和简历文件等内容后,进行简历筛选对话,即可实现如下效果。
1.软件设计与开发工程师岗位

2.网络应用工程师岗位

http://www.dtcms.com/a/393767.html

相关文章:

  • PHP中常见数组操作函数
  • 避坑指南:鸿蒙(harmony next)APP获取公钥和证书指纹的方法
  • Java 大视界 -- Java 大数据在智能教育学习效果评估与教学质量改进中的深度应用(414)
  • 【场景题】如何解决大文件上传问题
  • 云原生复杂多变的环境中的安全防护方案
  • Python10-逻辑回归-决策树
  • 如何生成一个不会重复随机数?
  • 【精品资料鉴赏】155页WORD大型制造企业MES制造执行系统建设方案
  • 定时计划任务
  • 【脑电分析系列】第23篇:癫痫检测案例:从频谱特征到深度学习模型的CHB-MIT数据集实战
  • `CookieStore` API
  • 数据可视化的中间表方案
  • 编译运行duckdb rust插件模板extension-template-rs
  • 接口测试流程+jmeter并发+面试题(总结)
  • JMeter下载安装及入门教程
  • Oracle体系结构-Java Pool详解
  • ​​Service Worker 缓存 与 HTTP 缓存 是什么关系?
  • c++ 之三/五法则
  • 传输层协议 UDP
  • 关于类和对象(一)
  • 多人协作下的游戏程序架构 —— 分层方案
  • 机器学习中三个是基础的指标:​准确率 (Accuracy)​、精确率 (Precision)​​ 和 ​召回率 (Recall)​
  • 《Web端图像剪辑方案:Canvas API与JavaScript实现》
  • DeepSeek 登《自然》封面,OpenAI 推出 GPT-5-Codex,Notion Agent 首亮相!| AI Weekly 9.15-9.21
  • 多线程-初阶
  • 在 R 语言中,%>% 是 管道操作符 (Pipe Operator),它来自 magrittr 包(后被 dplyr 等 tidyverse 包广泛采用)
  • IMX6ULL学习笔记_Boot和裸机篇(1)--- SEGGER Embedded Studio 和 Uboot 环境搭建
  • 纯JS代码录制网页中的视频(可多线操作)
  • Javase 基础加强 —— 11 线程池
  • 分布式锁-Redis实现