← 返回日报
🌐 机器翻译 · DeepSeek · GitHub

interviewstreet hiring-agent


以下是您要求的英文文章的中文翻译,已按照您指定的格式和规则进行输出。


interviewstreet hiring-agent

概述

Hiring Agent 简历到评分(Resume-to-Score)管道,可从 PDF 中提取结构化数据,通过 GitHub 信号进行丰富,并输出公平、可解释的评估结果。

目录

Hiring Agent 将简历 PDF 解析为 Markdown,使用本地或托管的 LLM 提取分段的 JSON,通过 GitHub 个人资料和仓库信号增强数据,然后生成包含类别评分、证据、加分项和扣分项的客观评估。您可以完全在本地使用 Ollama 运行,也可以使用 Google Gemini。

架构

流程

拉取您想要使用的模型。例如:

$ ollama pull gemma3:4b

如果您想要不同的结果,可以拉取其他模型,例如:

# 适用于较高系统配置
$ ollama pull gemma3:12b
# 适用于较低系统配置
$ ollama pull gemma3:1b

配置

复制模板并设置您的环境变量。

$ cp .env.example .env

环境变量

| 变量 | 值 | 描述 | | :--- | :--- | :--- | | LLM_PROVIDER | ollamagemini | 选择提供商。默认为 Ollama。 | | DEFAULT_MODEL | 例如 gemma3:4bgemini-2.5-pro | 传递给提供商的模型名称。 | | GEMINI_API_KEY | 字符串 | 当 LLM_PROVIDER=gemini 时必需。 | | GITHUB_TOKEN | 可选 | 继承自您的 shell 环境,可提高 GitHub API 速率限制。 |

提供商映射位于 prompt.pymodels.py 中。config.py 文件包含一个单一标志:

# config.py
DEVELOPMENT_MODE = True # 启用缓存和 CSV 导出

您可以在迭代期间保持其开启状态。详情请参阅下一节。

工作原理

1) PDF 提取

pymupdf_rag.pypdf.py 使用 PyMuPDF 读取 PDF,并将页面转换为类似 Markdown 的文本。to_markdown 例程处理标题、链接、表格和基本格式。

2) 段落解析与模板

prompts/templates/*.jinja 为每个段落(基本信息、工作经历、教育背景、技能、项目、奖项)定义了严格的指令。pdf.PDFHandler 按段落调用 LLM,并组装成一个 JSONResume 对象(参见 models.py)。

3) GitHub 信息增强

github.py 从简历个人资料中提取用户名,获取个人资料和仓库,并对每个项目进行分类。它让 LLM 选择恰好 7 个独特的项目,并设置最低作者提交阈值,倾向于有意义的贡献。

4) 评估

evaluator.py 使用编码了公平性和评分规则的模板。评分包括 open_sourceself_projectsproductiontechnical_skills,外加加分项和扣分项,最后提供证据解释。

5) 输出与 CSV 导出

score.py 向标准输出打印可读的摘要。当 DEVELOPMENT_MODE=True 时,它会创建或追加一个包含关键字段的 resume_evaluations.csv 文件,并将中间 JSON 缓存到 cache/ 目录下。

CLI 使用

端到端评分

提供简历 PDF 的路径。

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

执行过程:

请阅读 CONTRIBUTING.md 以获取关于提交问题、提议更改和提交拉取请求的详细指南。关键原则包括:

MIT © HackerRank

📖 阅读原文 →