# WRP HR Scorer：基于本地LLM的招聘评分系统

> WRP HR Scorer是一个完全本地运行的AI招聘评分服务，使用Ollama和Mistral 7B模型对简历进行多维度评分，无需调用云端AI API即可实现可解释的候选人评估。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-06-04T18:07:35.000Z
- 最近活动: 2026-06-04T18:19:59.530Z
- 热度: 154.8
- 关键词: LLM, Ollama, Mistral, HR, 招聘, 简历评分, 本地AI, 隐私保护, 开源, Python
- 页面链接: https://www.zingnex.cn/forum/thread/wrp-hr-scorer-llm
- Canonical: https://www.zingnex.cn/forum/thread/wrp-hr-scorer-llm
- Markdown 来源: ingested_event

---

## 原作者与来源

- 原作者/维护者：FahadBaig10
- 来源平台：github
- 原始标题：WRP_Hr_Scorer
- 原始链接：https://github.com/FahadBaig10/WRP_Hr_Scorer
- 来源发布时间/更新时间：2026-06-04T18:07:35Z

## 原作者与来源\n\n- 原作者/维护者：FahadBaig10\n- 来源平台：GitHub\n- 原始标题：WRP_Hr_Scorer\n- 原始链接：https://github.com/FahadBaig10/WRP_Hr_Scorer\n- 来源发布时间/更新时间：2026-06-04T18:07:35Z\n\n## 引言：本地AI在HR场景的新实践\n\n随着大语言模型（LLM）技术的成熟，越来越多的企业开始探索将AI应用于人力资源流程。然而，一个普遍的顾虑是数据隐私——将敏感的简历信息发送到云端API可能带来合规风险。WRP HR Scorer项目正是在这一背景下提出的解决方案：一个完全本地运行的AI招聘评分服务，使用Ollama在本地机器上运行Mistral 7B模型，无需任何云端AI API调用。\n\n这个项目的独特之处不仅在于其本地化部署的特性，更在于其清晰的设计哲学：将LLM作为系统中唯一的非确定性组件，而将业务逻辑保留在确定性的Python代码中。这种架构既保证了AI能力的利用，又维护了系统的可测试性和可解释性。\n\n## 系统架构：清晰的分层设计\n\nWRP HR Scorer采用模块化的管道架构，每个组件职责明确：\n\n```\nCLI (main.py)\n  -> PDF提取 (extract.py, pdfplumber)\n  -> 资格审核 (eligibility.py)        # 6个月内重复申请检查\n  -> LLM评分 (scoring.py + parsing.py) # Ollama + Mistral 7B\n  -> 分数调整 (推荐奖励、等级划分)   # 确定性代码\n  -> 持久化与JSON输出 (db.py, models.py)\n```\n\n这种设计的核心原则是：**LLM只负责返回四个维度的原始分数，而推荐奖励、分数上限和等级映射都在确定性的Python代码中完成**。这种分离带来了几个重要优势：\n\n**可测试性**：业务规则（如6个月重新申请规则、等级阈值）可以用传统的单元测试覆盖，无需依赖模型输出。\n\n**可控性**：模型只接触其工作所需的信息（简历内容），不接触敏感的业务逻辑（如推荐标志）。\n\n**可解释性**：最终的等级和分数调整都有明确的规则支撑，而非黑盒模型的神秘决策。\n\n## 核心功能：多维度评分与资格审核\n\n系统的核心功能是对候选人简历进行多维度评估。LLM被提示从四个维度打分：\n\n- **Qualifications（资质）**：教育背景与职位要求的匹配度\n- **Experience（经验）**：相关工作经验的丰富程度\n- **Achievements（成就）**：过往工作中的显著成果\n- **Culture Fit（文化契合度）**：与公司文化的匹配程度\n\n每个维度的分数范围是0-100，LLM返回原始分数后，系统会根据是否内部推荐进行加分（推荐奖励），然后将总分映射到A/B/C/Reject四个等级：\n\n- A级：总分≥85\n- B级：70≤总分<85\n- C级：55≤总分<70\n- Reject：总分<55\n\n除了评分功能，系统还实现了重要的资格审核机制：如果候选人在过去6个月内被拒绝过，系统将阻止其重新申请，并返回最早可重新申请的日期。这一功能使用`dateutil.relativedelta`进行精确的月份计算，确保跨不同月份长度的正确性。\n\n## 错误处理与鲁棒性设计\n\n项目展示了对模型输出进行防御性处理的良好实践。模型输出经过以下处理流程：\n\n1. **解析（Parse）**：提取JSON结构\n2. **验证（Validate）**：使用Pydantic进行模式验证\n3. **重试（Retry-once-stricter）**：首次失败时使用更严格的提示重试\n4. **安全回退（Safe-fallback）**：持续失败时返回零分Reject等级，附带诚实的原因说明\n\n这种分层防御策略确保了即使模型输出异常，系统也不会崩溃，而是返回一个有意义的降级结果。对于生产系统而言，这种鲁棒性设计至关重要。\n\n此外，系统还处理了PDF提取的各种边界情况，如空文件、扫描件（无文本层）等，通过明确的错误消息引导用户解决问题。\n\n## 批量处理与候选人定义模块\n\n项目包含一个有趣的"候选人定义模块"——`batch.py`，它实现了对整个文件夹的简历进行批量评分，并生成排名榜单。这个模块的设计体现了良好的架构可复用性：它直接复用核心管道的功能，没有引入新的依赖。\n\n批量模式还解决了单个候选人处理无法有效利用的`urgent`（紧急）标志。在批量处理场景下，urgent标志可以触发更严格的处理逻辑（如优先队列、更快的响应时间等），尽管当前实现中这一功能的具体行为留给使用者定义。\n\n候选人ID从文件名派生（如`cand-101.pdf`→`cand-101`），这种简单的约定减少了从CV文本解析ID的复杂性，同时保持了数据的一致性。\n\n## 本地部署的技术选型\n\n项目选择Ollama作为本地LLM运行环境是一个明智的决定。Ollama提供了几个关键优势：\n\n**模型管理简化**：通过`ollama pull mistral`即可下载模型，后续运行完全离线。\n\n**API兼容**：Ollama提供了与OpenAI兼容的API接口，使得代码可以轻松迁移到其他兼容服务。\n\n**资源效率**：Mistral 7B是一个经过指令微调的中等规模模型，在消费级硬件上即可运行，平衡了性能和成本。\n\n配合pdfplumber进行PDF文本提取、SQLAlchemy进行数据持久化、Pydantic进行数据验证，整个技术栈简洁而成熟，没有不必要的复杂性。\n\n## 测试策略与质量保证\n\n项目的测试覆盖聚焦于业务逻辑的核心边界情况，特别是资格审核逻辑：\n\n- 5个月前的拒绝：应被阻止\n- 恰好6个月前的拒绝：应被阻止（边界测试）\n- 7个月前的拒绝：应允许申请\n- 无历史记录的候选人：应允许申请\n- 最早重新申请日期的计算\n\n这种针对性的测试策略是务实的——它覆盖了最容易出错且业务影响最大的逻辑，而没有追求不切实际的100%覆盖率。对于LLM相关的代码，项目采用了"沙盒"策略：将非确定性部分隔离在狭窄的接口内，确保其失败不会波及系统其他部分。\n\n## 局限性与改进空间\n\n项目文档诚实地指出了当前的简化之处：\n\n**候选人ID来源**：当前通过CLI参数或文件名提供，而非从CV文本解析。这在处理大量简历时可能需要额外的数据准备工作。\n\n**代码组织**：`batch.py`从`main.py`导入了三个辅助函数，文档建议将这些函数提取到`utils.py`中会更清晰。这是代码演进过程中的常见技术债务。\n\n**模型依赖性**：系统依赖于Mistral 7B的指令遵循能力。如果模型输出格式不稳定，可能需要调整提示工程或考虑更强大的模型。\n\n**评分标准的可定制性**：当前的四个评分维度是硬编码的，对于不同行业或职位可能需要不同的评估框架。\n\n## 对HR Tech领域的启示\n\nWRP HR Scorer展示了AI在HR领域应用的一种务实路径：\n\n**隐私优先的设计**：通过本地部署消除数据泄露风险，这对于处理敏感个人信息的HR系统至关重要。\n\n**人机协作而非替代**：系统提供结构化的评分和理由，但最终决策仍由人类HR专业人员做出。AI是辅助工具，而非决策者。\n\n**可审计性**：每个申请尝试都被持久化为独立记录，形成完整的审计轨迹。这种设计满足了企业合规的要求。\n\n**渐进式自动化**：从单个CV处理到批量处理，系统展示了如何逐步扩展AI能力的覆盖范围，而非一次性重构整个流程。\n\n## 结语\n\nWRP HR Scorer是一个设计精良的本地AI应用示例。它展示了如何在资源受限、隐私敏感的场景中有效利用LLM能力，同时保持系统的可维护性和可解释性。\n\n对于希望将AI引入HR流程但又担心云端API风险的团队，这个项目提供了一个可行的参考实现。其清晰的分层架构、防御性的错误处理、以及务实的功能范围，都是值得借鉴的工程实践。\n\n随着本地LLM运行环境的成熟（如Ollama、llama.cpp、vLLM等），我们可以期待看到更多类似的本地化AI应用出现。WRP HR Scorer证明了，即使在消费级硬件上，也能构建出有价值的企业级AI解决方案。
