使用说明
HR代理(模型上下文协议)
一个生产就绪的人力资源助理,使用基于模型上下文协议(MCP)的检索增强(RAG)架构回答人力资源政策问题。它提供有根据、有引文支持的回复;支持多个LLM提供商;并应用适合企业部署的性能和缓存策略。
现场演示
通过来源和结构化引用回答政策问题。
接口以低延迟配置运行,以加速响应。
简历筛选小组根据提供的职位描述对候选人进行排名。
主要特点
快速链接: 快速开始 · 建筑 · 运作原理 · 人力资源政策RAG功能 · 项目计划
核心能力
- 有根据的检索-带有源引用的增强答案
- 多提供商LLM支持(OpenAI、Gemini、自动回退)
- 企业性能层:预热、低延迟模式、Redis缓存
- 通过仅检索的基本模式实现离线弹性
- 模块化MCP工具架构,实现快速扩展
高级功能
- 简历筛选和排名(干净、专业的评分输出)
- 机载任务跟踪(基于JSON的MCP工具)
- 会话摘要缓存(具有内存回退功能的Redis)
- 流式响应渲染可改善感知延迟
- 通过聊天命令切换运行时提供程序
- 延迟和缓存效率的性能指标
为什么此解决方案提供价值
演出
- 初始化后的亚秒级热响应
- 缓存减少了重复的嵌入和检索工作
- 流式传输最大限度地缩短了到达第一个令牌的时间
- 提供程序自动回退在瞬态故障下保持连续性
可靠性
- 严格的引文格式限制了幻觉风险
- 在没有API密钥的情况下优雅地降级为基本检索
- 完整的请求和检索日志以实现可审计性
- 可重复性确定性快速构造
用户体验
- 用于政策和筛选的单一整合界面
- 实时令牌流,布局稳定
- 针对不同显示器尺寸的响应式设计
- 可访问性考虑因素(焦点顺序、清晰对比)
建筑
- 通过MCP工具实现与提供商无关的编排
- 明确分离的UI、工具、检索和持久层
- 横向扩展就绪:外部缓存、容器化模式
- UI中显示健康和状态指示器
架构概述
具有明确职责分离的分层MCP架构:
- UI(Streamlit):聊天界面、状态显示、流媒体、用户设置
- MCP服务器和路由器:工具注册、编排、健康/状态检查
- 工具–策略RAG:摄取、分块、相似性检索、提示汇编、引文格式
- 工具-简历筛选:基于嵌入的候选人评分(相关性+技能覆盖率)和排名输出
- 对话管理器:历史管理、摘要生成、上下文大小缩减
- 缓存层:Redis或内存摘要和轻量级指标
- 数据存储:色度矢量数据库和当地人力资源政策语料库;恢复存储以进行筛查
- LLM提供者:具有回退逻辑的OpenAI/Gemini选择
%% Monochrome (Black & White) Architecture Diagram
flowchart LR
subgraph UI
ST["Streamlit Chat UI"]
end
subgraph MCP["MCP Server & Router"]
Router["Router / Health"]
end
subgraph TOOLS["Tools"]
subgraph RAG_GROUP["Policy RAG"]
PS["PolicySearchTool"]
RAG["RAGEngine"]
CONV["ConversationManager"]
CACHE[("Redis / In-Memory Cache")]
end
RS["ResumeScreeningTool"]
ONB["OnboardingTool"]
end
subgraph DATA["Data Stores"]
CHROMA[("Chroma Vector DB")]
DOCS[("HR Documents")]
RESUMES[("Resumes Store")]
ONBDATA[("Onboarding JSON")]
end
subgraph LLM["Providers"]
OPENAI["OpenAI"]
GEMINI["Gemini"]
end
ST --> Router
Router --> PS
Router --> RAG
Router --> RS
Router --> ONB
PS --> CHROMA
PS --> DOCS
RS --> RESUMES
ONB --> ONBDATA
RAG --> OPENAI
RAG --> GEMINI
CONV --> CACHE
%% Grayscale styles
classDef ui fill:#ffffff,stroke:#000000,stroke-width:1px
classDef mcp fill:#f5f5f5,stroke:#000000,stroke-width:1px
classDef tool fill:#ffffff,stroke:#000000,stroke-dasharray: 3 2
classDef data fill:#f5f5f5,stroke:#000000,stroke-width:1px
classDef prov fill:#ffffff,stroke:#000000,stroke-width:1px
class ST ui
class Router mcp
class PS,RAG,CONV,CACHE,RS,ONB tool
class CHROMA,DOCS,RESUMES,ONBDATA data
class OPENAI,GEMINI prov
先决条件
- Python 3.8+ 使用pip
- Git 用于版本控制
- 可选的:OpenAI或Gemini API密钥(用于AI响应)
- 可选的:Redis服务器(用于分布式缓存)
快速入门(Windows PowerShell)
选项1:自动设置
# Clone and run the quick start script
git clone https://github.com/sanjanb/mcp-agent.git
cd mcp-agent
.\quick_start.bat
选项2:手动设置
# 1) Create and activate virtual environment
python -m venv .venv
.\.venv\Scripts\activate
# 2) Install dependencies
pip install -r requirements.txt
# 3) Configure API keys (optional for AI mode)
$env:OPENAI_API_KEY = "your-openai-key"
# OR
$env:GEMINI_API_KEY = "your-gemini-key"
# 4) Setup database and ingest sample documents
python setup.py
# 5) Warm up the system (reduces first response latency)
python scripts/warmup.py
# 6) Launch the application
streamlit run ui/streamlit_app.py
5分钟演示
-
启动应用程序:
streamlit run ui/streamlit_app.py -
测试策略查询:
- “我有多少假期?”
- “远程工作政策是什么?”
- “告诉我健康保险福利”
-
探索功能:
- 切换 低延迟模式 在侧边栏中提供更快的响应
- 交换机提供商:类型
/provider auto或/provider openai - 清晰对话:类型
/clear
-
测试弹性:
- 取消设置API密钥并刷新→ 基本模式继续工作
- 注意回复下方的引用和源文件
配置指南
环境变量
LLM提供者(可选-启用AI响应)
# OpenAI Configuration
OPENAI_API_KEY=sk-... # Your OpenAI API key
OPENAI_MODEL=gpt-4 # Default model (gpt-3.5-turbo, gpt-4)
# Google Gemini Configuration
GEMINI_API_KEY=... # Your Gemini API key
GEMINI_MODEL=gemini-1.5-pro # Default model
# Provider Selection
LLM_PROVIDER=auto # auto, openai, gemini
矢量数据库和文档
VECTOR_DB_PATH=./data/vector_db # Chroma database location
VECTOR_DB_COLLECTION_NAME=hr_policies # Collection name
HR_DOCUMENTS_PATH=./data/hr_documents # Source documents folder
EMBEDDING_MODEL=all-MiniLM-L6-v2 # Sentence transformer model
性能优化
# Redis Cache (optional - falls back to in-memory)
REDIS_URL=redis://localhost:6379/0
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_DB=0
# Low-Latency Mode Settings
FAST_OPENAI_MODEL=gpt-3.5-turbo # Fast model for low-latency
FAST_GEMINI_MODEL=gemini-1.5-flash # Fast Gemini model
LOW_LATENCY_MAX_TOKENS=350 # Token limit for fast responses
LOW_LATENCY_TEMPERATURE=0.0 # Lower temperature for consistency
LOW_LATENCY_BASIC_ONLY=false # Force Basic mode in low-latency
简历筛选(可选)
RESUME_EMBEDDING_MODEL=all-MiniLM-L6-v2 # Model for resume embeddings
RESUME_STORAGE_PATH=./data/resumes # Resume files location
性能注意事项
该系统包括几个性能优化:
- 预热脚本:预初始化向量搜索和LLM连接
- 对话缓存:Redis支持的摘要减少了提示大小
- 低延迟模式:更快的模型,减少了令牌限制
- 流媒体响应:渐进式UI更新,提升用户体验
- 提供商自动回退:LLM提供商之间无缝切换
使用指南
聊天界面
提问:关于人力资源政策的自然语言查询:
- “我有多少假期?”
- “远程工作政策是什么?”
- “告诉我健康保险的覆盖范围”
- “绩效评估指南是什么?”
命令(键入聊天)
/clear--重置对话历史记录/help--显示可用命令/provider openai|gemini|auto--在运行时切换LLM提供程序/status--显示系统运行状况和统计数据
侧边栏设置
- 搜索结果(Top-K):要检索的文档块数(3-10)
- 低延迟模式:通过优化模型实现更快的响应
- 快速响应:更小的检索上下文以提高速度
- 显示源:切换文档引用显示
状态指示灯
- 文件:摄入的政策文件数量
- 提供者:目前活跃的法学硕士提供者(OpenAI/Gemini/Basic)
- 模式:AI模式(有引文)或基本模式(仅检索)
- 缓存:Redis连接状态和命中率
简历筛选功能
上传职位描述和候选人简历以获取:
- 排名候选人名单 具有相关性得分
- 最匹配的片段 每份简历
- 技能匹配细分 关键字分析
- 自动筛查报告 有建议
性能指标
该项目旨在通过可衡量的优化实现企业级绩效:
响应时间
- 冷启动:约2-3秒(预热前)
- 热启动:~500ms(预热脚本后)
- 低延迟模式:约200-400ms(快速型号)
- 基本模式:~100-200ms(仅用于检索)
优化功能
- 预热脚本:预初始化向量搜索和LLM连接
- 对话缓存:Redis摘要将提示上下文减少了约60%
- 流媒体响应:渐进式渲染,以获得更好的感知性能
- 智能分块:优化文档分割以提高相关性
- 提供商自动回退:LLM提供商之间的零停机切换
可扩展性指标
- 文件容量:经过500多份政策文件的测试
- 并发用户:通过Redis缓存支持多个会话
- 内存效率:约200MB基础+每1000个文档块约50MB
- 缓存命中率在同一环节中,重复问题的回答率超过80%
安全和隐私
数据保护
- 当地第一建筑:文档保留在您的基础架构上
- 最小API暴露:仅处理发送给LLM提供商的查询
- 无PII存储:对话摘要是短暂的(30分钟TTL)
- 审计日志:完成合规性请求/响应跟踪
秘密管理
- 基于环境:仅通过环境变量的API键
- 运行时切换:更改提供者而不更改代码
- 故障弱化:在没有API密钥的情况下继续运行
- 零知识:代码库或日志中未存储凭据
网络安全
- 本地矢量数据库:不需要外部数据库依赖关系
- 可选Redis:建议对敏感数据进行本地部署
- HTTPS就绪:生产部署支持SSL/TLS终止
- 防火墙友好:最少的出站连接(仅限LLM API)
其他文件
深潜指南
- 🏗️ 运作原理:完整的架构和数据流说明
- 🔧 人力资源政策RAG功能:详细的功能指南和API文档
- 📋 发展规划:完整的路线图、功能规格和交付策略
快速导航
| 主题 | 描述 | 链接 |
|---|---|---|
| 建筑 | 系统设计和组件交互 | 查看指南 |
| MCP工具 | 模型上下文协议集成详细信息 | 查看规格 |
| 演出 | 优化策略和基准 | 查看指标 |
| 安全 | 隐私、数据保护和部署 | 查看指南 |
| api参考 | 工具接口和数据模式 | 查看文档 |
部署资源
- 生产设置:企业部署的环境配置
- Docker支持:集装箱化准则和最佳做法
- 缩放指南:Redis的横向扩展和负载平衡
- 监控:健康检查、指标收集和警报设置
致谢
内置于❤️ 通过 Sanjan B M 使用行业领先的开源技术:
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
贡献
欢迎投稿、问题和功能请求!请随时查看 问题页面 加入我们的发展社区。
⭐ 标记此存储库 如果你觉得它有用 分享它 与您的团队一起加速组织中的人力资源自动化!
项目结构
mcp-agent/
├── 📱 ui/
│ └── streamlit_app.py # Chat interface with streaming responses
├── 🖥️ mcp_server/
│ └── server.py # MCP server orchestration and routing
├── 🔧 tools/
│ ├── policy_rag/
│ │ ├── document_processor.py # PDF/text ingestion and chunking
│ │ ├── vector_database.py # Chroma vector DB operations
│ │ ├── mcp_tool.py # Policy search MCP tool
│ │ └── rag_engine.py # RAG logic and conversation management
│ ├── resume_screening/
│ │ └── mcp_tool.py # Resume ranking and screening
│ └── cache/
│ └── redis_cache.py # Redis/in-memory caching layer
├── 🚀 scripts/
│ └── warmup.py # System warm-up for reduced latency
├── 📊 data/
│ ├── hr_documents/ # Source policy documents (PDFs/text)
│ ├── vector_db/ # Chroma embeddings database
│ └── resumes/ # Candidate resume files
├── 📖 docs/
│ ├── HOW_IT_WORKS.md # Detailed architecture guide
│ ├── FEATURE_HR_POLICY_RAG.md # HR RAG feature documentation
│ └── plan.md # Complete development roadmap
├── 🖼️ assets/
│ ├── Screenshot_29-11-2025_9451_localhost.jpeg # Main UI demo
│ ├── Screenshot_30-11-2025_94541_localhost.jpeg # Low-latency mode
│ └── Screenshot_30-11-2025_9461_localhost.jpeg # Resume screening
├── ⚙️ setup.py # Database setup and document ingestion
├── 📝 requirements.txt # Python dependencies
├── 🚀 quick_start.bat # Windows automation script
├── 🚀 quick_start.sh # Linux/Mac automation script
└── 📋 README.md # This comprehensive guide
核心组件
| 组件 | 用途 | 主要功能 |
|---|---|---|
| 流线型UI | 聊天界面 | 流媒体、移动响应、可访问性 |
| MCP服务器 | 工具编排 | 健康检查、请求路由、审计日志 |
| 政策RAG工具 | 文档问答 | 矢量搜索、引文生成、多提供者 |
| RAG发动机 | 响应生成 | 提示工程、提供商回退、缓存 |
| 向量数据库 | 相似性搜索 | 色度嵌入、元数据过滤、统计 |
| 缓存层 | 性能优化 | Redis后端、会话摘要、TTL管理 |
| 简历筛选 | 候选人排名 | 技能匹配、摘录、评分算法 |
可扩展性和路线图
扩展点
- 添加LLM提供者:以最小的更改实现新的提供程序适配器
- 新MCP工具:无需修改UI即可添加工具
- 存储后端:用企业替代品交换Chroma/Redis
- 认证:为企业部署添加SSO/LDAP集成
计划阶段
第一阶段-核心增强功能(未来两周)
- [ ] 内联引用:[1][2]带有点击源的标记
- [ ] 对话导出:JSON/Markdown下载功能
- [ ] 主题支持:带辅助功能的亮/暗模式切换
- [ ] 移动优化:增强的响应式设计
第2阶段-企业功能(第2个月)
- [ ] SSO集成:LDAP/Active Directory身份验证
- [ ] 多租户技术:组织级文档隔离
- [ ] 高级分析:使用指标和查询性能
- [ ] 文档版本控制:跟踪政策更新和更改
第3阶段-人工智能增强(第3个月)
- [ ] 多模式支持:处理图像、表格和图表
- [ ] 语义路由:基于查询意图的智能工具选择
- [ ] 高级总结:会议说明和政策更新
- [ ] 集成API:企业系统的REST/GraphQL端点
整合目标
- HRIS系统:工作日、BambooHR、ADP集成
- 协作工具:Slack、团队、Discord机器人
- 文档管理:SharePoint、Google Drive连接器
- 票务系统:ServiceNow,Jira工作流自动化
故障排除和支持
常见问题及解决方法
无AI响应
问题:系统仅返回基本检索结果
# ✅ Solution: Set API keys
$env:OPENAI_API_KEY = "your-openai-key"
# OR
$env:GEMINI_API_KEY = "your-gemini-key"
未找到文档
问题:“未找到相关文件”错误
# ✅ Solution: Add documents and re-run setup
# 1. Add PDF/text files to data/hr_documents/
# 2. Re-run ingestion
python setup.py
初始响应缓慢
问题:初始查询需要>5秒
# ✅ Solution: Run warm-up script
python scripts/warmup.py
# Then enable low-latency mode in sidebar
缓存警告
问题:日志中的Redis连接错误
# ✅ Solution: Install and start Redis, or ignore for in-memory fallback
# Option 1: Use in-memory cache (automatic fallback)
# Option 2: Install Redis
# Windows: Download from https://redis.io/download
# Linux: sudo apt-get install redis-server
导入错误
问题:模块导入失败
# ✅ Solution: Reinstall dependencies
pip install --upgrade -r requirements.txt
获取帮助
- 📖 文档:检查
docs/HOW_IT_WORKS.md详细技术信息 - 🐛 错误报告:GitHub上的未解决问题,包括错误日志和环境详细信息
- 💡 功能请求:使用项目的GitHub讨论或问题
- 📧 直接支持:联系方式 sanjanacharaya1234@gmail.com
调试模式
简历筛选:干净的专业输出
车载工具
入职MCP工具管理存储在单个JSON文件中的基于角色的任务清单(data/onboarding_tasks.json).它揭示了三个动作:
onboarding_get_tasks(role)--返回所有带有id、描述和完成标志的任务。onboarding_mark_completed(role, task_id)--标记任务完成(幂等;如果已经完成,则返回注释)。onboarding_get_status(role)--提供总计、已完成计数、完成百分比和剩余任务。
JSON模式示例:
{
"engineering": [
{ "id": 1, "task": "Set up email", "completed": false },
{ "id": 2, "task": "Read engineering handbook", "completed": false }
],
"hr": [{ "id": 1, "task": "Access HRIS portal", "completed": true }]
}
设计原则:
- 基于文件的存储,简单易用;使用临时文件进行原子写入,以降低损坏风险。
- 所有操作的可预测JSON输出(成功标志,显式错误)。
- 通过锁进行线程安全完成更新。
- 无隐藏状态:UI在每次交互中直接反映文件内容。
环境覆盖:设置 ONBOARDING_TASKS_PATH 指向另一个清单文件。
简历筛选部分提供了一个结构化的、可辩护的评估:
- 规范化:每份简历都被解析并转换为纯文本;删除多余的格式。
- 嵌入生成:使用句子转换模型嵌入候选人简历和提供的职位描述。
- 相似性评分:余弦相似性为每个候选者产生一个基本相关性评分。
- 技能匹配:提取的技能关键字(可配置)是交叉引用的;部分匹配贡献加权增量。
- 排名输出:最终报告呈现了一个有序的候选人列表,其中包含数字分数、匹配的技能计数和代表性文本片段。
- 透明度:所有评分要素(相似性、技能覆盖率)都可以浮出水面进行审核或导出。
此功能的设计原则:
- 确定性评分管道(无隐藏随机加权)
- 可维护性的检索、转换和评分分离
- 可配置的嵌入模型和技能分类
- 清晰的输出格式,适合内部审查或ATS集成
正在考虑的未来增强功能包括基于角色简介的自适应加权、小组评审意见整合和自动差异突出显示(例如,声称的技能与文本证据)。
专业笔记
此存储库有意省略表情符号和非正式标记,以符合中立的公司文档标准。现在,所有部分都侧重于行为的清晰度、可追溯性和可重复性。
对于任何其他调整(例如,添加基准脚本、集成身份验证或导出筛选报告),请打开问题或提交拉取请求。
启用详细日志以进行故障排除:
$env:LOG_LEVEL = "DEBUG"
streamlit run ui/streamlit_app.py
