尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

500-AI-Agents-Projects 简历解析 Agent 实战:基于 LangChain 与 GPT-4o-mini 实现简历结构化抽取与候选人匹配评分

500-AI-Agents-Projects 简历解析 Agent 实战:基于 LangChain 与 GPT-4o-mini 实现简历结构化抽取与候选人匹配评分 示例工程人工智能【免费下载链接】500-AI-Agents-ProjectsThe 500 AI Agents Projects is a curated collection of AI agent use cases across various industries. It showcases practical applications and provides links to open-source projects for implementation, illustrating how AI agents are transforming sectors such as healthcare, finance, education, retail, and more.项目地址https://gitcode.com/GitHub_Trending/50/500-AI-Agents-Projects点击查看免费下载本文深入解析开源仓库 500-AI-Agents-Projects 中的人力资源场景示例 Resume Parser Agent一个基于 LangChain GPT-4o-mini 的 AI Agent可将 TXT/PDF 简历解析为结构化 JSON并可选地与职位描述进行匹配度评分。读完本文你将掌握该 Agent 的完整安装、三种运行方式、输出 JSON 的每个字段含义以及其背后 prompt 工程与鲁棒 JSON 解析的源码实现原理。一、项目概览这个简历解析 Agent 能做什么Resume Parser Agent 位于仓库agents/目录下第 09 号位置属于 500-AI-Agents-Projects 中「可以直接运行的工作实现Working Implementations」之一。它解决的是招聘场景中的两个核心问题结构化抽取把非结构化的简历文本TXT 或 PDF解析成字段完整的 JSON——包含姓名、邮箱、技能、经历、教育背景等匹配度评估将解析出的候选人画像与一份职位描述Job Description对比输出 0-100 的匹配分数Fit Score以及 Hire / Consider / Pass 录用建议。按照 metadata.yaml 的定义该 Agent 的关键定位信息如下元数据字段值框架 frameworklangchain语言 languagepythonLLMgpt-4o-mini所属行业 industryhuman-resources人力资源标签 tagshr, recruitment, resume, nlp, parsing难度 difficultybeginner适合入门入口文件 entrypointagent.py整个agents/目录的设计理念是每个目录都是独立可运行的 Agent无需 monorepo 环境这一点在 agents/README.md 中有明确说明。本项目所有关键逻辑都集中在一个入口文件 agent.py 中非常适合作为学习 LangChain 结构化抽取Structured Extraction的入门范本。二、环境搭建依赖安装与密钥配置该 Agent 依赖清单集中在 requirements.txt 中共 5 个包版本均已锁定依赖包版本作用langchain0.3.0LangChain 核心框架langchain-core0.3.0消息类型SystemMessage / HumanMessage等核心组件langchain-openai0.2.0OpenAI 模型接入ChatOpenAIpython-dotenv1.0.1从 .env 文件加载环境变量pypdf4.3.1PDF 文本抽取仅在解析 .pdf 简历时使用搭建步骤如下与 README.md 中 Setup 部分一致pip install -r requirements.txt cp .env.example .env复制后需要在.env中填入你的 OpenAI API Key。环境变量模板 .env.example 内容如下OPENAI_API_KEYyour_openai_api_key_here在 agent.py 中通过from dotenv import load_dotenv和load_dotenv()在程序启动时加载.env配置随后ChatOpenAI会从环境中自动读取OPENAI_API_KEY。因此运行前必须配置有效的 OpenAI API Key且账号需具备访问gpt-4o-mini模型的权限——这是本项目能够运行的前提条件。三、三种运行方式与命令行参数根据 README.md 的 Run 部分该 Agent 支持三种典型的运行场景全部通过agent.py的命令行参数切换# 1. 仅解析使用内置示例简历 python agent.py # 2. 解析你自己的简历 python agent.py --resume path/to/resume.pdf # 3. 解析 匹配评分 python agent.py --resume resume.pdf --job-desc Senior Python Engineer with K8s experience...命令行参数的解析逻辑位于 agent.py 的main()函数中使用标准库argparseparser argparse.ArgumentParser(descriptionResume Parser Agent) parser.add_argument(--resume, helpPath to resume file (.txt or .pdf)) parser.add_argument(--job-desc, helpJob description to match against)参数是否必填说明--resume可选简历文件路径支持.txt与.pdf两种格式不传时自动使用内置示例简历--job-desc可选职位描述文本不传时只做解析不做匹配评分三种模式的行为差异可以总结为不传任何参数使用内置示例简历SAMPLE_RESUME完成一次解析演示输出解析结果只传--resume解析指定简历文件并输出结构化结果同时传--resume与--job-desc在解析基础上追加候选人匹配度分析Fit Score、优劣势、录用建议。四、解析输出结构化 JSON 的完整字段README 声明其输出包括结构化 JSON姓名、邮箱、技能、经历、教育、候选人摘要、匹配度分数0-100、Hire/Consider/Pass 录用建议。其中结构化 JSON 包含哪些字段的权威定义就在源码的PARSE_PROMPT中agent.py。这是一段完整的 JSON Schema 风格提示词要求 LLM 返回如下结构{ name: full name, email: email or null, phone: phone or null, location: city, country or null, linkedin: URL or null, github: URL or null, summary: 2-3 sentence professional summary, years_experience: number, current_title: current/most recent job title, skills: { languages: [Python, JavaScript, ...], frameworks: [Django, React, ...], tools: [Docker, Git, ...], soft_skills: [leadership, ...] }, experience: [{title: ..., company: ..., duration: ..., highlights: [...]}], education: [{degree: ..., institution: ..., year: ...}], certifications: [...], languages_spoken: [English, ...] }各字段的实战含义如下联系方式类name、email、phone、location、linkedin、github。注意 prompt 明确要求不存在则为 null避免 LLM 编造缺失信息候选人概览类summary2-3 句职业摘要、years_experience数字由 LLM 从经历推断、current_title当前/最近职位头衔技能体系类skills内部细分为languages编程语言、frameworks框架、tools工具、soft_skills软技能四个子数组颗粒度比单一技能列表更便于后续检索筛选履历类experience为数组每项含title职位、company公司、duration时间段、highlights亮点成就列表education为数组每项含degree学位、institution院校、year年份附加信息类certifications证书列表、languages_spoken掌握的语种。提示词最后以Return only valid JSON.收尾强制 LLM 输出纯 JSON配合后文将要分析的鲁棒解析函数保证结果可直接被json.loads消费。五、候选人匹配评分fit_score 与录用建议当传入--job-desc时Agent 会把解析出的候选人画像与职位描述一并交给 LLM 进行匹配分析。这一步的字段定义位于FIT_PROMPTagent.py{ fit_score: 0-100, fit_label: Excellent|Good|Fair|Poor, strengths: [matching point 1, matching point 2, ...], gaps: [missing skill 1, ...], recommendation: Hire|Consider|Pass, recommendation_reason: 2-3 sentence explanation }这一输出的设计逻辑非常贴近真实 HR 决策流程fit_score0-100 的数值化匹配度便于排序与阈值筛选fit_label把分数映射为 Excellent / Good / Fair / Poor 四档语义标签strengths/gaps分别列出候选人与岗位匹配的点和缺失的点为招聘方提供可解释的依据recommendation最终录用建议三选一Hire 录用 / Consider 考虑 / Pass 淘汰recommendation_reason2-3 句文字说明解释推荐理由。在终端展示时main() 函数 会按 fit_label 给分数配上颜色表情符号Excellent 为 Good 为 Fair 为 Poor 为 并输出前 3 条 Strengths、前 3 条 Gaps 与 Recommendation形成一份紧凑的候选人-岗位匹配报告。六、源码实现深度解析理解了输出结构后我们再从 agent.py 的源码角度看这个 Agent 是如何一步步把简历变成结构化数据的。整个执行链路分为四个关键环节。6.1 简历文本读取TXT 直读 PDF 走 pypdfread_resume_text()agent.py根据文件扩展名分流def read_resume_text(path: str) - str: if path.endswith(.pdf): try: import pypdf with open(path, rb) as f: reader pypdf.PdfReader(f) return \n.join(page.extract_text() for page in reader.pages) except ImportError: print(⚠️ pypdf not installed. Install with: pip install pypdf) raise with open(path) as f: return f.read()关键点PDF 场景使用pypdf.PdfReader逐页抽取extract_text()并拼接若环境未安装 pypdf即未执行pip install -r requirements.txt会给出明确提示并抛出异常——依赖缺失是 PDF 解析失败的最常见原因按 requirements.txt 安装即可规避。6.2 LLM 调用SystemMessage 承载提示词temperature 归零parse_resume()与score_fit()agent.py的调用模式完全一致是 LangChain 结构化抽取的标准写法def parse_resume(text: str) - dict: llm ChatOpenAI(modelgpt-4o-mini, temperature0) messages [SystemMessage(contentPARSE_PROMPT), HumanMessage(contenttext)] response llm.invoke(messages) return parse_json_response(response.content)值得注意的实现细节模型固定为gpt-4o-mini兼顾抽取质量与成本适合批量简历处理的场景temperature0将采样温度设为 0最大程度保证同一份简历多次解析结果稳定这对需要可复现、可审计的招聘流程至关重要角色分工SystemMessage 承载字段规范即 PARSE_PROMPT / FIT_PROMPTHumanMessage 承载待处理的具体简历文本或画像职位描述职责清晰。score_fit()则在 HumanMessage 中把候选人画像与职位描述拼接在一起HumanMessage(contentfCandidate profile:\n{json.dumps(profile, indent2)}\n\nJob description:\n{job_desc})即先由parse_resume()得到结构化画像再序列化为 JSON 交给score_fit()两个 LLM 调用形成先抽取、后评估的两阶段流水线。6.3 鲁棒 JSON 解析兼容 markdown 代码块LLM 输出并不总是纯净 JSON为此parse_json_response()agent.py做了两层防御def parse_json_response(text: str) - dict: cleaned text.strip() if cleaned.startswith(): cleaned re.sub(r^(?:json)?\s*, , cleaned) cleaned re.sub(r\s*$, , cleaned) match re.search(r\{.*\}, cleaned, re.DOTALL) if match: cleaned match.group(0) return json.loads(cleaned)它首先剥离json或代码围栏标记再用正则\{.*\}配合re.DOTALL让.匹配换行截取第一个完整 JSON 对象最后才交给json.loads。这套清洗 截取 反序列化的容错模式是生产环境处理 LLM 结构化输出时非常实用的技巧。6.4 主流程编排main()agent.py把上述环节串起来解析命令行参数若传入--resume则读取文件否则回退到内置SAMPLE_RESUME调用parse_resume()得到画像并在终端打印姓名、当前职位头衔、经验年限、技能语言列表与职业摘要等精选字段若传入--job-desc调用score_fit()并打印匹配报告。也就是说终端展示的是精选字段而完整结构化 JSON含 skills 四个子数组、experience、education、certifications 等全部字段由PARSE_PROMPT定义并由 LLM 返回——实际集成时可直接复用parse_resume()的返回值profile字典接入下游 HR 系统。七、内置示例简历零配置体验不传--resume运行时Agent 使用源码中内置的SAMPLE_RESUMEagent.py演示完整流程。示例候选人画像包括7 年经验的资深 Python 工程师Jane Doe覆盖 FastAPI/Kubernetes 微服务架构、Spark/Airflow 数据管道、Django REST 后端、AWS 云服务等技能点以及 UC Berkeley 计算机科学学位和 AWS 架构师认证。这份示例覆盖了语言、框架、工具、云、教育、认证等多维信息足以演示全部字段的抽取效果也方便新手在不准备简历文件的情况下快速跑通流程。八、扩展建议与后续方向该 Agent 的定位是beginner 难度、人力资源行业的独立示例。若想继续深入可以从以下几个方向入手对比同类 Agent仓库中还有 18-job-application-agent基于 CrewAI 的求职申请 Agent等人力资源场景示例可对比不同框架下同一业务问题的建模差异理解 LangChain 基础本 Agent 用到的ChatOpenAI、SystemMessage、HumanMessage、load_dotenv是最小可用的 LangChain 组合理解它们即可快速扩展到其他抽取类任务如发票解析、合同字段抽取了解仓库运行范式所有agents/目录下的 Agent 都遵循独立目录 requirements.txt .env.example agent.py的自包含模式参考 agents/README.md 可快速上手任意一个。九、总结Resume Parser Agent 是一个小而完整的 LangChain 结构化抽取范例它用两段精心的 promptPARSE_PROMPT定义输出 Schema、FIT_PROMPT定义匹配评估 Schema、一个鲁棒 JSON 解析函数、一条读取 → 解析 → 评分的线性流水线实现了简历到结构化 JSON、再到候选人-岗位匹配评分的完整链路。对希望入门 AI Agent 开发或落地招聘自动化的开发者而言README.md 提供了清晰的运行指南而 agent.py 则提供了可直接复用的实现细节——两者结合即可在几分钟内搭建一个可用的简历解析与匹配评估工具。赞分享示例工程人工智能【免费下载链接】500-AI-Agents-ProjectsThe 500 AI Agents Projects is a curated collection of AI agent use cases across various industries. It showcases practical applications and provides links to open-source projects for implementation, illustrating how AI agents are transforming sectors such as healthcare, finance, education, retail, and more.项目地址https://gitcode.com/GitHub_Trending/50/500-AI-Agents-Projects点击查看免费下载相关推荐构建 News Summarizer Agent基于 LangChain 与 GPT-4o-mini 的新闻简报自动生成实战构建 News Summarizer Agent基于 LangChain 与 GPT 4o mini 的新闻简报自动生成实战 导读 本文围绕 500 AI A示例工程人工智能ScreenshotFramer错误排查常见问题及解决方案完全手册ScreenshotFramer错误排查常见问题及解决方案完全手册 ScreenshotFramer是一款强大的本地化App Store截图创建工具帮助开发GeoFire for Java与其他语言版本对比为什么Java后端选择它GeoFire for Java与其他语言版本对比为什么Java后端选择它 GeoFire for Java是一款基于Firebase Realtime D后端上一篇GitHub Calendar 开源项目教程下一篇开源项目 quote 使用教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表