基于 Rust + Axum 的智能简历分析 API 服务
- 🚀 高性能异步架构(Axum + Tokio)
- 📄 多格式文档解析(PDF、Word、图片等)
- 🤖 OpenAI 兼容接口(支持主流国内大模型)
- 🎯 岗位定制化分析,XML 结构化输出
- 🔧 提示词和岗位配置动态调整
# 1. 配置环境变量
cp .env.example .env
# 编辑 .env 填入 API 密钥
# 2. 运行服务
cargo run --release服务启动于 http://0.0.0.0:3000
curl http://localhost:3000/healthcurl -X POST http://localhost:3000/api/v1/analyze \
-F "file=@resume.pdf" \
-F "job=your-job-key"
job参数必填,对应prompts/jobs/目录下的岗位配置文件名(不含.md后缀)
响应示例:
{
"filename": "resume.pdf",
"page_count": 2,
"job_key": "your-job-key",
"analysis": {
"score": 85,
"summary": "候选人具有5年软件开发经验,技术栈扎实。在分布式系统和高并发场景有丰富实践...",
"skills": {
"level": "优秀",
"details": "精通 Rust 语言,熟悉 Tokio 异步编程。对分布式系统、微服务架构有深入理解..."
},
"experience": {
"level": "良好",
"details": "5年后端开发经验,参与过3个大型项目。有从0到1搭建系统的经验..."
},
"strengths": [
"Rust 技术深度突出,有3年以上实战经验和开源项目贡献",
"分布式系统设计能力强,主导过千万级用户量的核心服务",
"代码质量意识好,注重测试和文档"
],
"concerns": [
"团队协作经验描述较少,需面试中重点了解沟通协作能力",
"云原生技术栈(K8s)经验不足,需确认学习意愿和能力"
],
"focus": [
"深入考察分布式系统设计能力:询问具体架构决策、技术选型依据",
"验证 Rust 实战能力:了解异步编程最佳实践、性能调优案例",
"评估问题解决能力:询问遇到的最大技术难题及解决方案"
]
}
}resume-insight/
├── src/
│ ├── main.rs # 服务入口
│ ├── config.rs # 配置管理
│ ├── error.rs # 错误处理
│ ├── handlers.rs # API 处理器
│ ├── prompts.rs # 提示词管理
│ ├── models/ # 数据模型
│ │ ├── mod.rs
│ │ ├── analysis.rs # 分析结果模型
│ │ ├── response.rs # API 响应模型
│ │ ├── resume.rs # 简历模型
│ │ ├── llm.rs # LLM API 模型
│ │ └── textin.rs # Textin API 模型
│ └── services/
│ ├── mod.rs
│ ├── extractor.rs # 文档提取服务(Textin)
│ └── analyzer.rs # LLM 分析服务
├── prompts/
│ ├── README.md # 提示词使用指南
│ ├── resume_analysis.md # 分析提示词模板
│ └── jobs/ # 岗位配置目录
│ ├── default.md # 默认通用评估
│ ├── frontend-engineer.md
│ ├── fullstack-engineer.md
│ ├── devops-engineer.md
│ └── rust-backend-engineer.md
├── tests/
│ ├── README.md # 测试指南
│ └── integration_test.rs # 集成测试
├── Cargo.toml
├── .env.example
├── .gitignore
├── Dockerfile
├── README.md
├── LICENSE
├── CHANGELOG.md
└── CONTRIBUTING.md
在 prompts/jobs/ 目录下创建新的 .md 文件:
# 岗位名称
## 岗位职责
- 职责1
- 职责2
## 任职要求
- 要求1
- 要求2
## 加分项
- 加分项1
- 加分项2文件名即为岗位 key,如 backend-engineer.md 对应 job=backend-engineer。
编辑 prompts/resume_analysis.md,支持变量:{{job_requirements}}、{{candidate_resume}}
| 变量名 | 必填 | 说明 |
|---|---|---|
LLM_BASE_URL |
✅ | LLM API 地址(OpenAI 兼容格式) |
LLM_MODEL |
✅ | 模型名称 |
LLM_API_KEY |
✅ | LLM API 密钥 |
TEXTIN_APP_ID |
✅ | Textin API 应用 ID |
TEXTIN_SECRET_CODE |
✅ | Textin API 密钥 |
RUST_LOG |
❌ | 日志级别(默认:info) |
# 1. 配置环境变量
cp .env.example .env # 编辑 .env 填入 LLM_API_KEY
# 2. 构建镜像
docker build -t resume-insight:latest .
# 3. 启动服务
docker-compose up -d
# 4. 查看日志
docker-compose logs -fMIT License