📌 项目地址:interviewstreet/hiring-agent | ⭐ 2,026 颗星 | 🔧 Python | 📜 未标注
项目核心价值
传统的简历筛选依赖关键词匹配或人工初审,容易忽略候选人的实际技能和开源贡献。Hiring Agent 提供了一条完整的流水线:将 PDF 简历转成 Markdown,用本地或云端 LLM 按章节提取结构化数据,再从 GitHub 获取个人档案和仓库信息,最后给出带分类分数、证据、加分/扣分项的客观评估。整个过程可解释、可复现,并且可以完全在本地运行(通过 Ollama),避免简历数据外传。
对于需要批量处理简历的招聘团队或技术面试官,这个项目可以直接替换掉付费 ATS 系统的初筛环节,或者作为二次筛选的辅助工具。
安装与配置
项目依赖 Python 3.11+,并需要选择一个 LLM 后端(本地 Ollama 或云端 Google Gemini)。
克隆并创建虚拟环境
git clone https://github.com/interviewstreet/hiring-agent
cd hiring-agent
python -m venv .venv
# Linux/macOS
source .venv/bin/activate
# Windows
# .venvScriptsactivate
pip install -r requirements.txt
拉取本地模型(以 Ollama 为例)
# 低配置机器可用 1B 模型
ollama pull gemma3:1b
# 推荐 4B 模型
ollama pull gemma3:4b
# 高配置机器可用 12B 模型获得更好结果
ollama pull gemma3:12b
设置环境变量
cp .env.example .env
编辑 .env 文件,根据你使用的 LLM 后端配置 OLLAMA_MODEL 或 GEMINI_API_KEY 等变量。
如何使用
目前项目没有在 README 中给出完整的 CLI 调用示例,但根据架构描述,主要流程由 score.py 调度:
- 简历解析:
pymupdf_rag.py将 PDF 转为类似 Markdown 的文本。 - 结构化提取:
pdf.py按章节(教育、工作经历、技能等)调用 LLM,使用prompts/templates/下的 Jinja 模板。 - GitHub 增强:
github.py获取候选人的 GitHub 档案和仓库,分类项目,让 LLM 选出最佳 7 个。 - 评分:
evaluator.py执行带有公平性约束的严格评分。 - 输出:
score.py组织全流程,在开发模式下输出 CSV。
要运行整个流程,需要准备一份候选人的简历 PDF 和 GitHub 账户(可选)。具体调用命令建议参考项目的 scripts/ 目录或 score.py 的 __main__ 部分。如果你希望直接试用,可以在项目根目录执行 python score.py --help 或阅读源码中的 argparse 定义。
设计亮点与注意事项
亮点
- 完全本地可运行:使用 Ollama 加载模型后,所有数据不离开你的机器,适合处理敏感简历信息。
- GitHub 信号纳入评分:通过分析候选人的个人主页和实际代码仓库,能衡量其开源贡献、代码质量和项目活跃度,弥补传统简历的盲区。
- 可解释的评分:评分不是黑箱,而是给出分类分数(如技能、经验、项目)、证据摘要、加分和扣分理由。招聘者可以直接引用输出结果与候选人沟通。
- 模块化架构:解析、提取、增强、评分各模块独立,方便替换或扩展(例如支持其他简历来源、使用不同 LLM 提供商)。
注意事项
- LLM 质量直接影响结果:使用较小的本地模型(如 1B)可能提取不准确,建议至少使用 4B 模型。如果追求高准确度,可以考虑 Google Gemini(需要 API Key 和网络)。
- 处理 PDF 的局限性:
pymupdf_rag对复杂排版(多栏、图表、非标准字体)可能产生乱序或丢失信息,建议先对简历做简单转换测试。 - 公平性约束:
evaluator.py虽然内置公平性逻辑,但无法完全消除模型自身的偏见。建议在批量使用前对一小批样本进行人工校准。 - 当前缺少完整的 CLI 文档:项目尚在早期(Star 数 2000+),README 中 CLI 部分未展开。如果需要快速上手,需要阅读
score.py和cli.py等源码。
适合谁用
- 招聘团队:希望自动化简历初筛,减少人工偏见,特别是需要结合候选人 GitHub 贡献的岗位(如软件开发、数据科学)。
- 技术面试官:在面试前快速了解候选人的过往项目和代码特点。
- 个人求职者:用自己的简历运行此工具,提前获得客观评分,发现简历中可改进的地方(例如缺少开源项目、项目描述不清晰等)。
- AI/LLM 应用开发者:可以作为 PDF 解析 + LLM 结构化提取 + 多源信号融合的参考案例,学习如何用 Pydantic 定义 Schema、用 Jinja 模板管理 Prompt、用 Ollama 做本地推理。
这篇文章对你有帮助吗?