← 返回信息流
GitHub 热榜GitHub Trending · 日·2 小时前

Hiring Agent: 基于 AI 的简历评估与评分智能体

原标题:interviewstreet/hiring-agent
Python1,881 stars+152 今日

速览

该项目是一个基于 Python 开发的 AI 智能体,专门用于对求职简历进行自动化评估和打分。它通过智能分析简历内容,帮助招聘人员快速筛选候选人,适用于需要高效处理大量简历的招聘场景。

AI 深度解读

这是什么

interviewstreet/hiring-agent 是一个基于 Python 开发的开源招聘自动化管道(Pipeline),旨在通过大语言模型(LLM)和外部数据源信号,实现简历的自动化解析、增强与客观评估。该项目由 HackerRank 团队维护,在 GitHub 上已获得 1881+ Star。

其核心逻辑是将非结构化的简历 PDF 转化为结构化数据,结合候选人的 GitHub 活动信号,最终生成一份包含分类评分、证据支撑及加减分项的可解释性评估报告。系统支持完全本地化运行(通过 Ollama)或使用云端 API(如 Google Gemini),兼顾了数据隐私与灵活性。

解决的问题

传统简历筛选面临三大痛点:

  1. 非结构化数据解析困难:PDF 简历格式千差万别,传统正则或简单 NLP 难以准确提取关键信息(如项目经历、技能栈)。
  2. 评估主观性强:人工筛选容易受“光环效应”或隐性偏见影响,缺乏统一、可量化的评分标准。
  3. 技术能力验证滞后:仅凭简历文字难以验证候选人的实际编码能力和开源贡献,往往需要后续多轮面试才能确认。

该工具通过自动化流程解决上述问题,将简历解析、背景增强和评分标准化,为招聘团队提供一份“公平、可解释”的初筛参考。

核心功能

  1. PDF 到 Markdown 的结构化提取 利用 PyMuPDF 读取 PDF,并通过自定义逻辑将页面内容转换为 Markdown 格式文本。该过程处理了标题、链接、表格及基础排版,为后续 LLM 解析提供高质量输入。

  2. 基于模板的分区 JSON 解析 系统不使用单一的 Prompt 处理整份简历,而是通过 prompts/templates/*.jinja 定义严格的指令模板,分别针对基础信息(Basics)、工作经历(Work)、教育(Education)、技能(Skills)、项目(Projects)和奖项(Awards)进行分段解析。LLM 将每部分输出为结构化的 JSON,最终组装成 JSONResume 对象。

  3. GitHub 信号增强(Enrichment) 这是该项目的核心差异化功能。系统从简历中提取 GitHub 用户名,自动抓取其个人资料和仓库数据。

    • 项目筛选:调用 LLM 从候选人的仓库中精选出 7 个最具代表性的项目。
    • 贡献度验证:设定最低作者提交阈值,优先选择有实质性贡献的项目,而非仅作为 Fork 或无关项目。
  4. 公平且可解释的评估引擎 evaluator.py 模块依据预设的公平性规则和评分标准生成最终报告。

    • 评分维度:包括开源贡献(open_source)、个人项目(self_projects)、生产环境部署经验(production)和技术技能(technical_skills)。
    • 证据链:每个分数都附带具体的证据说明(Evidence),并明确列出加分项(Bonus points)和扣分项(Deductions),确保评估结果透明可追溯。
  5. 多后端支持与开发模式

    • LLM 后端:支持本地部署的 Ollama(如 gemma3:4bgemma3:12b)或云端 Google Gemini。
    • 开发模式(Development Mode):在 config.py 中启用后,系统会自动缓存 PDF 解析结果和 GitHub 数据至 cache/ 目录,并将每次评估结果追加导出到 resume_evaluations.csv,便于批量处理和迭代调试。

亮点 / 与同类相比

  • 引入 GitHub 信号作为硬指标:大多数简历解析工具仅关注文本匹配,而 hiring-agent 通过接入 GitHub API,将“简历上写的”与“实际代码贡献”进行交叉验证,显著提高了对技术人员评估的准确性。
  • 细粒度的分段解析策略:不同于端到端的黑盒解析,该项目采用分模块(Sectioned)的 Prompt 工程,每个部分使用独立的 Jinja 模板,提高了对简历特定区域(如技能列表 vs 项目描述)的理解精度。
  • 完全可解释的评分体系:输出不仅是一个分数,还包含详细的证据引用和加减分理由。这种“白盒”特性对于 HR 和技术面试官建立信任至关重要。
  • 隐私优先的本地化选项:通过支持 Ollama,企业可以在本地运行整个管道,无需将敏感的简历数据和候选人 GitHub 信息发送至第三方 LLM API,满足严格的数据合规要求。

适合谁用 / 上手

适合人群:

  • 技术招聘团队(Recruiters):需要快速初筛大量技术简历,希望借助自动化工具减少重复劳动,并获得更客观的候选人画像。
  • CTO/技术负责人:希望快速验证候选人的开源贡献和技术实战能力,作为面试前的参考依据。
  • 开发者/极客:对自动化工作流感兴趣,希望利用 LLM 和 Python 构建个人化的简历分析工具。

上手指南:

  1. 环境准备

    • Python 3.11+(项目锁定 .python-version 为 3.11.13)。
    • 安装依赖:pip install -r requirements.txt
  2. 选择 LLM 后端

    • 本地模式(推荐用于隐私敏感场景):安装 Ollama 并运行 ollama serve,拉取模型(如 ollama pull gemma3:4b)。
    • 云端模式:获取 Google Gemini API Key。
  3. 配置环境变量

    • 复制 .env.example.env
    • 设置 LLM_PROVIDERollamagemini)。
    • 设置 DEFAULT_MODEL(如 gemma3:4bgemini-2.0-flash)。
    • 若使用 Gemini,需设置 GEMINI_API_KEY
  4. 运行评估

    python score.py /path/to/resume.pdf
    

    系统将在终端输出详细的评估报告。若开启 DEVELOPMENT_MODE=True,结果还会保存至 CSV 文件以便后续分析。

查看原文 →github.com