由**NVIDIA Nemotron (NIM)**驱动的代理AI职业助手。它分析简历,识别技能差距,检索实时职位空缺,并实时返回可操作建议。在圣克拉拉大学举办的NVIDIA开发者黑客松期间构建,重点在于推理工作流程和NIM集成,而非UI简洁性。
AI职业教练将静态简历转化为可操作的职业计划。它使用由NVIDIA Nemotron通过NIM支持的代理管道,并使用MCP获取实时职位数据。
| 步骤 | 描述 |
|---|---|
| 简历上传 | 提供PDF或DOCX简历 |
| Nemotron分析 | NIM执行结构化解析和上下文推理 |
| 代理见解 | 强项、差距、职位匹配及更好的措辞建议 |
| 个性化输出 | 清晰编辑和可采取行动的职位推荐 |
| 功能 | 描述 |
|---|---|
| 简历理解 | 从PDF或DOCX中提取结构化内容 |
| Nemotron代理 | 上下文感知的强项和差距分析 |
| 代理工作流 | 结合解析、检索和生成于一体的工作流 |
| 对话界面 | 最小HTML + JS聊天界面 |
| 实时职位 | 使用MCP从Remotive等公共API获取职位 |
| 层次 | 技术 |
|---|---|
| 大型语言模型 | 通过NIM端点/v1/chat/completions的NVIDIA Nemotron |
| 后端 | Python 3.10+上的FastAPI |
| 前端 | HTML、CSS、纯JavaScript |
| 外部API | 通过MCP的Remotive职位API |
AI职业教练/
├── LICENSE # MIT许可证
├── README.md # 项目文档(此文件)
├── dev.py # 跨平台一键运行器
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI入口点
│ │ ├── services/
│ │ │ ├── nim_client.py # NVIDIA NIM客户端
│ │ │ ├── mcp_client.py # MCP连接器
│ │ │ └── resume_parser.py # 简历提取和结构化
│ │ └── prompts/
│ │ └── system.txt # 代理推理的基础提示
│ └── requirements.txt # Python依赖项
├── frontend/
│ └── index.html # 最小聊天界面
├── mcp-servers/
│ └── jobs_server.py # 使用Remotive API检索职位
├── imagesReadMe/ # README中使用的图片
│ ├── image1.png # 主要图片
│ ├── image2.png
│ ├── image3.png
│ └── image4.png
└── tmp/ # 上传的简历(git忽略)
注意:
tmp/存储本地上传。保持其被忽略;如果需要跟踪文件夹而不包含内容,请使用tmp/.gitkeep。
使用跨平台Python运行器。
# macOS/Linux
python3 dev.py
# Windows
py -3 dev.py
这将:
backend/.venvCtrl+C**停止两者终端A(后端):
cd backend
python3 -m venv .venv
source .venv/bin/activate # macOS/Linux
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
终端B(前端):
cd frontend
python3 -m http.server 5500
在浏览器中打开http://localhost:5500。使用**Ctrl+C**停止每个进程。
创建backend/.env(不要提交)或复制自backend/.env.example。
NVIDIA_API_BASE=https://integrate.api.nvidia.com/v1
NVIDIA_API_KEY="NVIDIA API KEY"
NVIDIA_MODEL=nvidia/llama-3.3-nemotron-super-49b-v1
ALLOW_ORIGINS=*
保持秘密不进入Git
.env被忽略。如果它曾经进入历史记录,请移除并重新提交:
git rm --cached backend/.env 2>/dev/null || true
git commit -m "从仓库移除backend/.env"
cp backend/.env backend/.env.example # 然后用占位符替换值
.env。如果你更喜欢单个服务器,可以从FastAPI服务frontend/:
# backend/app/main.py
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from pathlib import Path
app = FastAPI()
FRONTEND_DIR = Path(__file__).resolve().parents[2] / "frontend"
app.mount("/assets", StaticFiles(directory=FRONTEND_DIR, html=False), name="assets")
@app.get("/")
def index():
return FileResponse(FRONTEND_DIR / "index.html")
运行:
backend/.venv/bin/python -m uvicorn --app-dir backend app.main:app --reload --port 8000
应用程序运行的快速视觉故事。
启动 - 打开Web应用。聊天面板和简历上传卡片已准备好。 <img src="imagesReadMe/image1.png" alt="1 - 应用程序打开:干净的聊天UI已准备好" style="max-width:100%; height:auto; border-radius:12px; box-shadow: 4px 4px 12px rgba(0,0,0,0.25);" />
上传 - 选择PDF/DOCX。文件名出现,你可以点击分析简历。 <img src="imagesReadMe/image2.png" alt="2 - 上传器中选择了简历" style="max-width:100%; height:auto; border-radius:12px; box-shadow: 4px 4px 12px rgba(0,0,0,0.25);" />
解析 - 后端提取简历文本,Nemotron开始结构化分析。 <img src="imagesReadMe/image3.png" alt="3 - 分析请求发送,JSON/摘要区域显示解析文本" style="max-width:100%; height:auto; border-radius:12px; box-shadow: 4px 4px 12px rgba(0,0,0,0.25);" />
聊天 - 提问如“如何改进我的简历以适应SDE角色?”代理返回强项、差距和编辑建议。 <img src="imagesReadMe/image4.png" alt="4 - 聊天询问如何改进简历以适应SDE角色,助手反馈呈现" style="max-width:100%; height:auto; border-radius:12px; box-shadow: 4px 4px 12px rgba(0,0,0,0.25);" />
本项目在MIT许可证下开源。
参见**LICENSE**。欢迎改编和扩展!
三人团队
| Gareshma Nagalapatti | GitHub | |
| Wineel Wilson Dasari | GitHub | |
| Shanmukha Ganesna | GitHub |