AiCV Engine API

AiCV Engine 提供强大的简历智能化处理能力,通过简单的API集成,您可以快速为应用添加简历解析、匹配分析、诊断和优化等功能。

我们支持两种接口方式:HTTP API 适用于单次请求处理,WebSocket API 适用于需要实时交互和长连接的场景。

智能解析

精准提取简历中的关键信息,转化为结构化数据

匹配分析

对比简历与职位要求,生成详细匹配度分析报告

简历诊断

识别简历问题,提供针对性改进建议和示例

自动优化

基于AI算法优化简历内容,提升竞争力

当前API版本:v1.0.0,所有接口路径均以 /api/v1 为前缀。

快速开始

1. 注册账号

首先,您需要在 AiCV控制台 注册账号并创建应用,获取API密钥。

2. 选择接口方式

根据您的需求选择合适的接口方式:

  • HTTP API:适合单次简历处理请求
  • WebSocket API:适合需要实时反馈和长连接的场景

3. 发送请求

使用您的API密钥发送请求到相应的接口端点:

curl -X POST https://api.aicv.chat/api/v1/parse \
                                    -H "Content-Type: application/json" \
                                    -H "Authorization: Bearer YOUR_API_KEY" \
                                    -d '{
                                        "text": "张三\n电话:13800138000\n邮箱:zhangsan@example.com\n...",
                                        "format": "json"
                                    }'

4. 处理响应

处理API返回的结构化数据,根据您的业务需求进行展示或进一步处理。

认证方式

AiCV Engine API 使用 API Key 进行认证。您需要在所有请求中包含有效的 API Key,否则请求将被拒绝。

HTTP 请求认证

在HTTP请求中,通过 Authorization 头传递API Key:

Authorization: Bearer YOUR_API_KEY

WebSocket 连接认证

在WebSocket连接中,通过查询参数传递API Key:

wss://api.aicv.chat/ws/v1?api_key=YOUR_API_KEY

请妥善保管您的API Key,不要在客户端代码中暴露。如果怀疑API Key泄露,请立即在控制台中重置。

HTTP API

HTTP API 适用于单次简历处理请求,支持同步和异步两种处理方式。所有接口均使用HTTPS协议,确保数据传输安全。

基础信息

  • 基础URL: https://api.aicv.chat/api/v1
  • 请求方法: POST
  • 内容类型: application/json
  • 响应格式: JSON

1. 简历解析

解析简历文本,提取结构化信息,包括个人信息、教育背景、工作经历、技能等关键内容。

端点: /parse

请求参数

参数名 类型 是否必填 描述
text string 简历文本内容
language string 语言类型,支持"zh"和"en",默认"zh"
async boolean 是否异步处理,默认false

请求示例

{
  "text": "张三\n电话:13800138000\n邮箱:zhangsan@example.com\n\n教育背景:\n2015-2019 北京大学 计算机科学与技术 本科\n\n工作经历:\n2019-至今 某科技公司 软件工程师\n- 负责公司核心产品的后端开发\n- 使用Python和FastAPI构建RESTful API\n\n技能:Python, FastAPI, PostgreSQL",
  "language": "zh",
  "async": false
}

成功响应 (200 OK)

{
  "code": 0,
  "message": "success",
  "data": {
    "id": "res_672a1b3c8d9e0f1a2b3c4d5e",
    "name": "张三",
    "phone": "13800138000",
    "email": "zhangsan@example.com",
    "education": [
      {
        "period": "2015-2019",
        "school": "北京大学",
        "major": "计算机科学与技术",
        "degree": "本科"
      }
    ],
    "experience": [
      {
        "period": "2019-至今",
        "company": "某科技公司",
        "position": "软件工程师",
        "description": [
          "负责公司核心产品的后端开发",
          "使用Python和FastAPI构建RESTful API"
        ]
      }
    ],
    "skills": [
      "Python", "FastAPI", "PostgreSQL"
    ],
    "created_at": "2023-07-15T10:30:00Z"
  }
}

2. 匹配分析

分析简历与职位描述的匹配度,返回详细的匹配评分、概述、优势和差距分析。

端点: /match

请求参数

参数名 类型 是否必填 描述
resume_text string 简历文本内容
jd_text string 职位描述文本
weights object 自定义权重,如{"skills": 0.4, "experience": 0.3}

成功响应 (200 OK)

{
  "code": 0,
  "message": "success",
  "data": {
    "id": "match_789a1b2c3d4e5f6a7b8c9d0e",
    "score": 85,  // 匹配度评分(0-100)
    "overview": "该候选人与软件工程师职位匹配度较高,具备扎实的Python后端开发经验和相关技能栈,符合职位核心要求。",
    "strengths": [  // 优势分析
      "具备FastAPI框架使用经验,与职位要求高度匹配",
      "拥有计算机科学专业背景,基础知识扎实",
      "具备RESTful API设计与开发经验"
    ],
    "gaps": [  // 差距分析
      "职位要求中提到的Docker容器化经验在简历中未体现",
      "缺乏团队管理经验,而职位要求具备带领小团队的能力"
    ],
    "breakdown": {  // 各维度得分明细
      "skills": 90,
      "experience": 85,
      "education": 95,
      "culture_fit": 75
    },
    "created_at": "2023-07-15T11:45:00Z"
  }
}

3. 简历诊断

分析简历内容,识别存在的问题,提供针对性的改进建议和优化示例。

端点: /diagnose

请求参数

参数名 类型 是否必填 描述
text string 简历文本内容
position string 目标职位,用于针对性诊断

成功响应 (200 OK)

{
  "code": 0,
  "message": "success",
  "data": {
    "id": "diag_890a1b2c3d4e5f6a7b8c9d0e",
    "overall_score": 72,  // 简历整体评分
    "issues": [  // 问题及优化建议
      {
        "section": "工作经历",
        "original_text": "负责公司核心产品的后端开发",
        "problem": "描述过于笼统,缺乏具体成果和量化指标",
        "optimization_example": "负责公司核心产品的后端开发,重构API架构,将系统响应时间提升40%,支持日均10万+用户访问"
      },
      {
        "section": "技能描述",
        "original_text": "Python, FastAPI, PostgreSQL",
        "problem": "仅列出技能名称,未体现熟练度和应用经验",
        "optimization_example": "Python (熟练):3年后端开发经验,使用FastAPI构建高并发RESTful API;PostgreSQL (精通):设计并优化数据库 schema,提升查询效率"
      },
      {
        "section": "个人信息",
        "original_text": "",
        "problem": "缺少职业 summary 或个人简介,无法快速了解核心优势",
        "optimization_example": "3年Python后端开发经验,专注于高可用分布式系统设计与实现,擅长使用FastAPI和PostgreSQL构建高性能服务"
      }
    ],
    "created_at": "2023-07-15T14:20:00Z"
  }
}

4. 简历优化

基于AI算法对简历内容进行全面优化,生成优化后的简历文本并提供优化解析说明。

端点: /optimize

请求参数

参数名 类型 是否必填 描述
text string 原始简历文本内容
position string 目标职位,用于针对性优化
style string 优化风格,可选"concise"(简洁)、"detailed"(详细),默认"balanced"

成功响应 (200 OK)

{
  "code": 0,
  "message": "success",
  "data": {
    "id": "opt_901a1b2c3d4e5f6a7b8c9d0e",
    "original_resume": "张三\n电话:13800138000\n邮箱:zhangsan@example.com\n\n教育背景:\n2015-2019 北京大学 计算机科学与技术 本科\n\n工作经历:\n2019-至今 某科技公司 软件工程师\n- 负责公司核心产品的后端开发\n- 使用Python和FastAPI构建RESTful API\n\n技能:Python, FastAPI, PostgreSQL",
    "optimized_resume": "张三\n电话:13800138000 | 邮箱:zhangsan@example.com\n\n职业概述:3年Python后端开发经验,专注于高可用分布式系统设计与实现,擅长使用FastAPI和PostgreSQL构建高性能服务,成功支持百万级用户产品稳定运行。\n\n教育背景:\n2015-2019 北京大学 计算机科学与技术 本科\n- 主修课程:数据结构、算法分析、数据库系统、分布式计算\n- GPA:3.8/4.0(专业前10%)\n\n工作经历:\n2019-至今 某科技公司 软件工程师\n- 负责公司核心产品的后端架构设计与开发,重构 legacy 系统,提升系统稳定性至99.99%\n- 使用Python和FastAPI构建高并发RESTful API,支持日均10万+用户访问,API响应时间减少40%\n- 设计并优化PostgreSQL数据库 schema 及查询,提升数据处理效率60%\n- 主导开发3个核心功能模块,推动产品用户留存率提升25%\n\n专业技能:\n- 编程语言:Python (熟练)、JavaScript (熟悉)、Go (了解)\n- Web框架:FastAPI (精通)、Django (熟悉)\n- 数据库:PostgreSQL (精通)、Redis (熟练)\n- 开发工具:Git, Docker, Jenkins, Jira",
    "optimization_analysis": [  // 优化解析说明
      "新增职业概述,突出核心优势和经验亮点",
      "工作经历量化成果,使用具体数据展示业绩",
      "技能部分补充熟练度和应用场景,更具说服力",
      "教育背景增加相关课程和成绩,强化专业基础",
      "整体结构优化,信息层次更清晰,重点更突出"
    ],
    "improvement_score": 35,  // 优化提升度(相对原始版本)
    "created_at": "2023-07-15T16:10:00Z"
  }
}

WebSocket API

WebSocket API 适用于需要实时交互和长连接的场景,如大文件处理、批量处理等,可以实时获取处理进度和结果。

基础信息

  • 连接URL: wss://api.aicv.chat/ws/v1?api_key=YOUR_API_KEY
  • 数据格式: JSON
  • 心跳间隔: 30秒

连接流程

  1. 客户端发起WebSocket连接,包含API Key参数
  2. 服务器验证API Key,返回连接成功消息
  3. 客户端发送处理请求(支持parse, match, diagnose, optimize等操作)
  4. 服务器实时返回处理进度和结果
  5. 处理完成后,客户端可继续发送新请求或关闭连接

消息交互示例(优化操作)

1. 客户端发送优化请求

// 客户端 → 服务器
{
  "type": "request",
  "id": "req_1234567890",
  "action": "optimize",
  "params": {
    "text": "张三\n电话:13800138000\n邮箱:zhangsan@example.com\n...",
    "position": "高级Python工程师",
    "style": "detailed"
  }
}

2. 服务器返回进度

// 服务器 → 客户端
{
  "type": "progress",
  "request_id": "req_1234567890",
  "data": {
    "progress": 30,
    "stage": "分析中",
    "message": "正在识别简历问题和优化点"
  }
}

3. 服务器返回结果

// 服务器 → 客户端
{
  "type": "response",
  "request_id": "req_1234567890",
  "data": {
    "code": 0,
    "message": "success",
    "result": {
      "id": "opt_901a1b2c3d4e5f6a7b8c9d0e",
      "original_resume": "...",
      "optimized_resume": "...",
      "optimization_analysis": [...],
      // 其他优化结果字段
    }
  }
}

响应格式

HTTP API 响应格式

所有HTTP API响应均遵循统一格式:

// 成功响应
{
  "code": 0,                // 状态码,0表示成功
  "message": "success",     // 状态描述
  "data": { ... }           // 业务数据
}

// 错误响应
{
  "code": 400,              // 错误码
  "message": "无效的请求参数", // 错误描述
  "details": { ... }        // 详细错误信息(可选)
}

WebSocket API 响应格式

WebSocket消息包含类型字段,不同类型消息结构略有差异:

// 通用格式
{
  "type": "response",       // 消息类型
  "request_id": "req_123",  // 关联的请求ID
  "data": { ... }           // 消息数据
}

错误码

以下是常见的错误码及其含义,帮助您快速排查问题:

错误码 描述 解决方法
0 成功 -
400 无效的请求参数 检查请求参数是否符合要求
401 未授权或API Key无效 检查API Key是否正确
403 权限不足 升级套餐或联系客服开通权限
429 请求频率超限 降低请求频率或升级套餐
500 服务器内部错误 稍后重试,或联系技术支持
503 服务暂时不可用 稍后重试
1001 简历内容为空 检查并提供有效的简历内容
1002 解析失败 检查简历格式是否正确

示例代码

以下是不同编程语言的API调用示例,帮助您快速集成AiCV Engine的各项功能。

Python (简历优化示例)

import requests
import json

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.aicv.chat/api/v1"

# 简历优化示例
def optimize_resume(resume_text, position=""):
    url = f"{BASE_URL}/optimize"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {API_KEY}"
    }
    data = {
        "text": resume_text,
        "position": position,
        "style": "balanced"
    }
    
    try:
        response = requests.post(url, headers=headers, json=data)
        response.raise_for_status()  # 抛出HTTP错误
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"请求错误: {e}")
        return None

# 使用示例
if __name__ == "__main__":
    resume_text = """张三
电话:13800138000
邮箱:zhangsan@example.com

教育背景:
2015-2019 北京大学 计算机科学与技术 本科

工作经历:
2019-至今 某科技公司 软件工程师
- 负责公司核心产品的后端开发
- 使用Python和FastAPI构建RESTful API
"""
    result = optimize_resume(resume_text, "高级Python工程师")
    if result and result["code"] == 0:
        print("优化成功:")
        print("\n优化后的简历:")
        print(result["data"]["optimized_resume"])
        print("\n优化解析:")
        for item in result["data"]["optimization_analysis"]:
            print(f"- {item}")
    else:
        print("优化失败")

JavaScript (匹配分析示例)

// 简历与职位匹配分析示例
async function analyzeMatch(resumeText, jdText) {
    const API_KEY = "YOUR_API_KEY";
    const url = "https://api.aicv.chat/api/v1/match";
    
    try {
        const response = await fetch(url, {
            method: "POST",
            headers: {
                "Content-Type": "application/json",
                "Authorization": `Bearer ${API_KEY}`
            },
            body: JSON.stringify({
                resume_text: resumeText,
                jd_text: jdText,
                weights: {
                    skills: 0.4,
                    experience: 0.3,
                    education: 0.2,
                    culture_fit: 0.1
                }
            })
        });
        
        if (!response.ok) {
            throw new Error(`HTTP错误: ${response.status}`);
        }
        
        const result = await response.json();
        return result;
    } catch (error) {
        console.error("匹配分析错误:", error);
        return null;
    }
}

// 使用示例
const resumeText = "张三\n电话:13800138000\n邮箱:zhangsan@example.com\n...";
const jdText = "高级Python工程师\n职责:\n- 负责后端系统设计与开发\n- 使用Python和FastAPI构建高性能API\n- 优化数据库性能\n要求:\n- 计算机相关专业本科以上学历\n- 3年以上Python开发经验\n- 熟悉FastAPI和PostgreSQL\n- 有Docker经验优先";

analyzeMatch(resumeText, jdText).then(result => {
    if (result && result.code === 0) {
        console.log(`匹配度: ${result.data.score}%`);
        console.log("概述:", result.data.overview);
        
        console.log("\n优势:");
        result.data.strengths.forEach(strength => {
            console.log(`- ${strength}`);
        });
        
        console.log("\n差距:");
        result.data.gaps.forEach(gap => {
            console.log(`- ${gap}`);
        });
    }
});

速率限制

为确保服务稳定和公平使用,AiCV Engine API 实施速率限制。不同套餐的限制如下:

套餐类型 每秒请求数 (QPS) 每日调用量
免费版 1 100次
开发者版 5 10,000次
企业版 20 50,000次
定制版 50+ (可定制) 无限

当请求频率超过限制时,API将返回429错误。您可以通过响应头中的以下字段了解速率限制情况:

X-RateLimit-Limit: 1000         # 每日总限额
X-RateLimit-Remaining: 980      # 剩余调用次数
X-RateLimit-Reset: 1626307200   # 限额重置时间(Unix时间戳)
X-QPS-Limit: 5                  # 每秒请求限制
X-QPS-Remaining: 4              # 当前秒内剩余请求数

支持与反馈

如果您在使用API过程中遇到任何问题,或有功能需求和改进建议,请通过以下方式联系我们:

技术支持

support@aicv.chat

开发者社区

community.aicv.chat

GitHub

github.com/aicv-engine

帮助中心

help.aicv.chat

更新日志

记录 AiCV Engine 功能迭代与优化历史,帮助开发者了解最新变化。

2025-05-07

AI 搜索工具新增多项实用参数

Web Search API 和 API Search in Chat 新增多项实用参数,提升搜索精准度与数据获取效率。

1. 请求参数扩展

  • count - 自定义返回搜索结果数量
  • search_domain_filter - 按指定域名筛选
  • search_recency_filter - 按时间范围过滤
  • content_size - 调整网页摘要字数

2. 响应参数扩展

  • publish_date - 新增网页发布时间字段
2025-04-28

模型微调新增 DPO 训练能力

微调训练平台支持 DPO 文本偏好对齐训练功能。

  • 支持范围:glm-4-air、glm-4-9b、glm-4-flash
  • 训练方式:全参训练
  • 支持版本:8k
  • 计费:DPO 训练单价同该模型在对应训练方式下 SFT 监督微调定价
使用指南

版本路线图

V0.1 - 基础平台 已发布
  • API Key 管理系统
  • 统一认证与鉴权中间件
  • 诊断接口 (/api/v1/resume/diagnose)
  • 基础限流与用量统计
  • 数据模型与数据库迁移
V0.2 - 优化能力扩展 进行中
  • 同步优化接口 (/api/v1/resume/optimize?mode=sync)
  • 外部示例注入支持 (accepted_examples 参数)
  • 优化结果沉淀至案例库
  • 增强的工作流记录与查询
V0.3 - 流式与内部能力 规划中
  • 内部流式优化端点 (/api/v1/resume/optimize/stream-internal)
  • 工作流进度查询接口
  • 增强的可观测性
V0.4 - 进阶功能 规划中
  • 幂等性支持 (Idempotency-Key)
  • 岗位/行业标签系统
  • 示例相似度检索
  • 离线评估系统接入
V1.0 - 正式版 规划中
  • 完整的 API 文档与 SDK
  • 多模型路由与降级策略
  • 自动化策略演化系统
  • 企业级功能 (SLA、自定义模型等)