跳到正文
土土金API

招聘與 HR 助手

招聘和 HR 場景用三類模型配合:小模型把簡歷解析成結構化欄位,主力模型按招聘經理寫好的崗位標準逐條評估、起草面試問題,另一個主力模型根據員工手冊回答員工提問。模型只做整理和初篩,是否邀約面試、是否錄用都由人決定。按每月 3,000 份簡歷、2,000 次手冊提問估算,用各模型最低價分組的即時價格計算,模型費用每月約 ¥61.19。

價格更新於 2026年11月13日 下午6:08

月成本估算

假設:每月收到 3,000 份簡歷,每份解析輸入約 2,500 tokens(簡歷約 2,000、欄位說明約 500),輸出約 800 tokens;每份按崗位標準評估輸入約 2,500 tokens、輸出約 500 tokens;300 位候選人進入面試,每位起草面試問題輸入約 2,500 tokens、輸出約 1,200 tokens;員工每月提問 2,000 次,每次帶約 3,000 tokens 的制度原文,回答約 300 tokens。

¥61.19/ 月

  • 簡歷解析¥6.51
  • 按崗位標準評估¥37.8
  • 起草面試問題¥6.13
  • 員工手冊問答¥10.75
看用量假設

業務問題

一個崗位常常收到幾百份簡歷,格式五花八門:PDF、Word、招聘網站匯出的頁面。HR 要一份份開啟,把學歷、工作經歷、技能抄進表格,再和崗位要求對比,真正和候選人溝通的時間反而不多。

讓大模型直接「挑出最合適的人」並不可取:標準不透明,同一份簡歷問兩次可能得到不同結論;簡歷裡的姓名、性別、年齡、照片這些與崗位無關的資訊,也可能影響模型的判斷。

更穩妥的做法是:標準由人來定,並且寫成明確的條目;模型逐條判斷並引用簡歷原文,分數和排序由程式按固定規則計算;評估前去掉與崗位無關的個人資訊;所有候選人都由招聘人員過目,決定由人作出。

推薦模型組合

推薦模型按即時目錄自動選取,價格取各模型最低價分組,更新於 2026年11月13日 下午6:08。點模型名可檢視全部分組價格。

參考架構

  1. 1

    寫清崗位標準

    招聘經理把崗位要求寫成幾條能判斷的標準,分出必須項和加分項,比如「3 年以上 B2B 銷售經驗」。同一崗位的候選人都用同一份標準,標準改動時記下版本。

  2. 2

    解析簡歷

    PDF 和 Word 簡歷先用程式提取文字,小模型按固定欄位輸出 JSON;程式檢查日期格式和必填欄位,解析失敗的轉人工錄入。

  3. 3

    去掉無關資訊再評估

    評估前由程式去掉姓名、聯絡方式、照片、性別、年齡、籍貫等與崗位無關的欄位,主力模型只看經歷和技能,逐條給出判斷和簡歷原文依據。

  4. 4

    程式分類,人工複核

    程式按必須項是否全部滿足,把候選人分成「優先檢視」和「有缺口待確認」兩類,不讓模型直接打總分,也不自動淘汰任何人;每位候選人都由招聘人員檢視。

  5. 5

    準備面試

    對進入面試的候選人,模型按崗位標準和簡歷裡的具體經歷起草追問問題,面試官刪改後使用。

  6. 6

    員工手冊問答

    員工手冊、考勤和報銷制度按知識庫方案切塊入庫;員工提問時檢索相關段落,模型只依據制度原文回答並註明出處;涉及個人薪資、績效和勞動爭議的問題轉給 HR。

成本估算

假設:每月收到 3,000 份簡歷,每份解析輸入約 2,500 tokens(簡歷約 2,000、欄位說明約 500),輸出約 800 tokens;每份按崗位標準評估輸入約 2,500 tokens、輸出約 500 tokens;300 位候選人進入面試,每位起草面試問題輸入約 2,500 tokens、輸出約 1,200 tokens;員工每月提問 2,000 次,每次帶約 3,000 tokens 的制度原文,回答約 300 tokens。

專案模型用量假設費用
簡歷解析qwen-flash3,000 次 × 輸入 2,500 + 輸出 800 tokens¥6.51
按崗位標準評估deepseek-v4.1-flash3,000 次 × 輸入 2,500 + 輸出 500 tokens¥37.8
起草面試問題deepseek-v4.1-flash300 次 × 輸入 2,500 + 輸出 1,200 tokens¥6.13
員工手冊問答qwen3.5-plus2,000 次 × 輸入 3,000 + 輸出 300 tokens¥10.75
合計(每月)¥61.19

按各模型最低價分組的即時價格計算,價格更新於 2026年11月13日 下午6:08。

只含模型呼叫費用,不含招聘系統、儲存和人工複核成本。員工手冊問答的檢索(向量化)費用很低,表中沒有計入,怎麼估算見企業知識庫方案。簡歷份數翻倍,前兩項費用大致翻倍。

示例程式碼

小模型把簡歷解析成固定欄位;評估前去掉姓名和聯絡方式,主力模型逐條判斷崗位標準並引用簡歷原文;程式按必須項把候選人分成兩類,所有候選人都由招聘人員複核。

示例程式碼(Python,簡歷解析與按標準評估)
import json
import os
from openai import OpenAI

client = OpenAI(base_url="https://www.tutujin.com/v1", api_key=os.environ["TUTUJIN_API_KEY"])

FIELDS = {
    "name": "", "phone": "", "email": "",
    "education": [{"school": "", "degree": "", "major": "", "graduated": "YYYY-MM"}],
    "experience": [{"company": "", "title": "", "start": "YYYY-MM", "end": "YYYY-MM or now", "highlights": [""]}],
    "skills": [""],
    "certificates": [""],
}
# Written by the hiring manager; every candidate for this job is judged on the same list.
CRITERIA = [
    {"id": "C1", "must": True, "text": "At least 3 years of B2B sales experience"},
    {"id": "C2", "must": True, "text": "Has owned key accounts or a sales territory"},
    {"id": "C3", "must": False, "text": "Has sold software or SaaS"},
    {"id": "C4", "must": False, "text": "Has worked with overseas clients in English"},
]
NOT_FOR_SCREENING = ("name", "phone", "email")


def ask_json(model, system, user):
    resp = client.chat.completions.create(
        model=model,
        messages=[{"role": "system", "content": system}, {"role": "user", "content": user}],
        temperature=0,
    )
    raw = resp.choices[0].message.content
    return json.loads(raw[raw.find("{"): raw.rfind("}") + 1])


def parse_resume(text):
    return ask_json(
        "qwen-flash",
        "Copy the resume into JSON with exactly this shape: " + json.dumps(FIELDS)
        + ". Use empty values when something is not in the resume; never guess. Reply with JSON only.",
        text,
    )


def screen(profile):
    facts = {k: v for k, v in profile.items() if k not in NOT_FOR_SCREENING}
    result = ask_json(
        "deepseek-v4.1-flash",
        "You help a recruiter. For each criterion answer met, not_met or unclear, and quote the resume text "
        "that supports it. Judge only the listed criteria. "
        'Reply with JSON only: {"criteria": [{"id": "C1", "verdict": "met", "evidence": ""}]}',
        "Criteria:\n" + json.dumps(CRITERIA) + "\n\nCandidate:\n" + json.dumps(facts, ensure_ascii=False),
    )
    verdicts = {c["id"]: c["verdict"] for c in result["criteria"]}
    gaps = [c["id"] for c in CRITERIA if c["must"] and verdicts.get(c["id"]) != "met"]
    # The model never rejects anyone: it only sorts the queue, and a recruiter reviews every candidate.
    return {"queue": "review_gaps" if gaps else "review_first", "must_have_gaps": gaps, "criteria": result["criteria"]}


with open("resume.txt", encoding="utf-8") as f:
    profile = parse_resume(f.read())
print(json.dumps(screen(profile), ensure_ascii=False, indent=2))

用一把 Key 試試這個方案

註冊後在控制台建立 API Key,把上面程式碼裡的 base_url 和 Key 換成你的就能執行。企業採購、開發票可以加客服微信 JsnonoChat。

土土金客服微信二維碼
微信JsnonoChat

掃碼或搜尋微信號新增客服

常見問題

每月處理 3,000 份簡歷要多少錢?

按每份簡歷都解析和評估、300 位候選人起草面試問題、員工每月提問 2,000 次估算,用最低價分組計算約 ¥61.19。簡歷份數和崗位標準的長度對費用影響最大。

可以讓模型直接決定淘汰誰嗎?

不建議。模型的判斷會出錯,也會受到簡歷寫法的影響。示例裡的做法是模型只按標準逐條判斷並給出依據,程式據此把候選人分成兩類,所有候選人都由招聘人員檢視,是否邀約面試、是否錄用由人決定。

怎麼讓篩選標準對每個人都一致?

同一崗位用同一份書面標準和同一段提示詞,temperature 設為 0,排序由程式按固定規則計算,不讓模型自由打分;評估前去掉與崗位無關的個人資訊;定期抽查評估結果,標準調整後記下版本,方便事後複核。

簡歷裡的個人資訊怎麼處理?

簡歷含姓名、電話、郵箱等個人資訊,請求會經本站轉發給模型服務處理。建議只提交解析需要的內容,評估環節去掉身份和聯絡方式;告知候選人、取得同意、儲存期限等事項,請按你們適用的個人資訊保護規定和公司制度評估。

員工手冊問答答錯了怎麼辦?

讓模型只依據檢索到的制度原文回答並註明出處,資料裡沒有的直接說不知道並轉給 HR;涉及個人薪資、績效和勞動爭議的問題一律轉人工。制度更新後,重新入庫對應的段落。