AI职业教练

一个由NVIDIA Nemotron (NIM)驱动的AI职业助手,分析简历、识别技能差距、检索实时职位空缺并提供可操作建议。

  • by SCU-2025-Oct
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 SCU-2025-Oct/coach

使用说明

AI职业导师

一个由(某种技术或平台)驱动的、具有自主行为能力的AI职业助手 **NVIDIA Nemotron(NIM)**它分析简历,识别技能差距,检索实时职位空缺,并实时返回可操作的建议。该系统是在圣克拉拉大学举办的NVIDIA开发者黑客松活动中开发的,重点在于推理工作流程和NIM(神经模块化推理引擎)的集成,而非单纯追求用户界面的简洁性。

目录

概述

AI职业导师 将一份静态的简历转化为可执行的职业规划。它采用了一个由……支持的代理(或主动)流程 通过NIM的NVIDIA Nemotron 并且使用 MCP(最小化认知处方) 获取实时工作数据。

核心工作流程

| 步骤 | 描述 | | :-- | :-- | | 上传简历 | 提供PDF或DOCX格式的简历 | | Nemotron 分析 | NIM 执行结构化解析和上下文推理 | | 代理洞察 | 优势、不足、岗位匹配度及更佳表述建议 | | 个性化输出 | 清晰的编辑建议和可立即采取的职位推荐 |

特点/特性

特性 描述
简历理解 从PDF或DOCX中提取结构化内容
Nemotron 代理 对优势和不足进行上下文感知分析
主体代理工作流 将解析、检索和生成集成在一个流程中
对话式用户界面 简约的HTML + JS聊天界面
实时职位 使用MCP从Remotive等公共API获取职位信息

技术栈

层 技术
大语言模型 (LLM) 通过NVIDIA NIM端点使用NVIDIA Nemotron /v1/chat/completions
后端 基于Python 3.10+的FastAPI
前端 HTML, CSS, 原生JavaScript
外部API 通过MCP的Remotive Jobs API

项目结构

AI Career Coach/
├── LICENSE                       # MIT license
├── README.md                     # Project docs (this file)
├── dev.py                        # Cross‑platform one‑command runner
├── backend/
│   ├── app/
│   │   ├── main.py               # FastAPI entry point
│   │   ├── services/
│   │   │   ├── nim_client.py     # NVIDIA NIM client
│   │   │   ├── mcp_client.py     # MCP connector
│   │   │   └── resume_parser.py  # Resume extraction and structuring
│   │   └── prompts/
│   │       └── system.txt        # Base prompt for agent reasoning
│   └── requirements.txt          # Python dependencies
├── frontend/
│   └── index.html                # Minimal chat UI
├── mcp-servers/
│   └── jobs_server.py            # Job retrieval using Remotive API
├── imagesReadMe/                 # Images used in README
│   ├── image1.png                # Primary image
│   ├── image2.png
│   ├── image3.png
│   └── image4.png                
└── tmp/                          # Uploaded resumes (git-ignored)

注: tmp/ 存储本地上传的文件。保持忽略状态;使用 tmp/.gitkeep 如果你希望追踪文件夹而不追踪其内容。

入门指南

运行两个服务器(一条命令)

使用跨平台的Python运行器。

# macOS/Linux
python3 dev.py

# Windows
py -3 dev.py

这将会:

  • 创建/更新 backend/.venv
  • 安装依赖项
  • 启动 FastAPI 于 http://localhost:8000 翻译为中文是:“本地主机的8000端口”。不过,通常我们不会直接这样翻译网址,而是根据上下文可能将其意译为“本地服务器上的8000端口服务”或“运行在本地计算机上的8000端口应用”,具体取决于该网址所代表的实际服务或应用。在这里,为了简洁明了,直接翻译为“本地主机的8000端口”也是可以接受的
  • 在(指定地址/端口)上提供前端服务 http://localhost:5500 翻译为中文是:“本地主机的5500端口”。不过,通常我们不会直接这样翻译URL地址,而是根据上下文或使用场景来解释其含义。在这个例子中,它指的是在本地计算机上运行的一个Web服务器,可以通过localhost(即本机)和5500端口来访问
  • 两者都停止使用 Ctrl+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 "Remove backend/.env from repo"
    
  • 为合作者提供模板:
    cp backend/.env backend/.env.example  # then replace values with placeholders
    
  • 如果密钥泄露, 旋转 在NVIDIA门户网站中找到它并进行更新 .env。

使用 FastAPI 提供前端服务(单进程)

如果你更喜欢使用单个服务器,请提供 frontend/ 来自 FastAPI:

# 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

演示

一个快速直观的应用程序使用故事。

  1. 发射 - 打开网页应用。聊天面板和简历上传卡片已就绪。

  2. 上传 - 选择一个PDF/DOCX文件。文件名会显示出来,然后你可以点击 分析简历.

  3. 解析 - 后端提取简历文本,Nemotron开始进行结构化分析。

  4. 聊天 - 提出诸如“我如何改进我的简历以申请软件开发工程师(SDE)职位?”之类的问题。代理会返回你的优势、不足以及修改建议。

路线图

  • 来自NIM的流式响应,以实现更低延迟的感知
  • 更精准的评分和职位匹配推理
  • 会话历史和认证
  • 除了Remotive之外,还有更多MCP资源
  • 使用Docker Compose实现一键启动

致谢

  • NVIDIA Nemotron和NIM访问开发团队
  • SCU AI Club(四川大学人工智能俱乐部)的主办支持
  • 在黑客马拉松期间构建此项目的团队成员

许可证

这个项目在MIT许可下是开源的。

请看 **许可证**请随意调整和扩展!

作者/致谢

三人小组

加尔什马·纳加拉帕蒂 GitHub LinkedIn(领英)
Wineel Wilson Dasari(这个名字在中文中没有直接对应的翻译,通常保持原名,但如果需要意译或音译结合,可以大致为“维尼尔·威尔逊·达萨里”,不过具体翻译可能因个人习惯或语境而异) GitHub 领英(LinkedIn)
沙姆库哈·伽内什(Shanmukha Ganesha,此处为音译加意译的结合,实际翻译可能因文化和语境而异,伽内什是印度教中的象头神,此处“Shanmukha”可能指其具有六面或六只眼睛的特殊形态,但具体含义需结合上下文) GitHub 领英(LinkedIn)

链接

LinkedIn公告