AI招聘提示词配置:零基础搭建可用的筛选规则
AI招聘提示词配置的核心,是把招聘需求写成大模型能稳定执行的指令。
如果你手头有大量简历需要初筛,又不想逐份阅读,可以通过配置提示词让模型自动提取关键信息并打分。
本文以通用大模型API为例,演示从零搭建一个可用的简历筛选脚本,适用于Linux或macOS环境,需要你具备基础的命令行操作能力。
先明确筛选标准与模型能力边界
动手配置前,先想清楚你要筛什么。
比如岗位要求“3年以上Java经验、熟悉Spring Cloud、本科以上学历”,就把这些条件拆成可判断的字段。
建议用表格列出硬性条件和加分项,后续提示词直接引用。
同时确认模型能力:选择支持长文本输入的模型,简历通常1-2页,上下文长度8K以上足够。
不要用太小的模型做复杂判断,否则输出不稳定。
准备API环境与测试脚本
以OpenAI兼容接口为例,在Linux服务器上操作。
先安装Python和requests库:
python3 -m pip install requests
创建配置文件 config.py,存放API密钥和接口地址:
API_KEY = "你的API密钥"
API_URL = "https://api.openai.com/v1/chat/completions"
MODEL = "gpt-3.5-turbo" # 根据实际可用模型调整
注意:不要将密钥硬编码在公开代码中,建议用环境变量读取。
接着写一个测试脚本 test_api.py,发送简单请求确认连通性:
import requests, config
headers = {"Authorization": f"Bearer {config.API_KEY}"}
data = {"model": config.MODEL, "messages": [{"role": "user", "content": "回复OK"}]}
resp = requests.post(config.API_URL, headers=headers, json=data, timeout=30)
print(resp.status_code, resp.json())
运行 python3 test_api.py,如果返回200和正常内容,说明环境可用。
如果超时,检查网络或代理设置。
编写结构化提示词模板
提示词的质量直接决定筛选效果。
不要写“帮我看看这个人合适吗”,而是给出明确的角色、任务、输出格式。
以下是一个可用的模板,保存为 prompt_template.txt:
你是一名资深HR,负责筛选Java开发工程师简历。请根据以下标准评估简历:
硬性条件:
1. 本科及以上学历
2. 3年以上Java开发经验
3. 熟悉Spring Cloud
加分项:
- 有微服务项目经验
- 有云平台使用经验
请输出JSON格式,包含字段:name(姓名)、match_score(0-100整数)、reason(简短理由)、missing(缺失的硬性条件列表)。
简历内容:{resume_text}
关键点:用占位符 {resume_text} 插入简历文本,输出要求JSON,方便后续程序解析。
温度参数设为0或0.2,降低随机性。
调用API并解析结果
编写主脚本 screen_resume.py,读取简历文本,替换占位符,调用API:
import requests, json, config
from prompt_template import PROMPT # 假设已将模板存为变量
def screen(resume_text):
prompt = PROMPT.replace("{resume_text}", resume_text)
headers = {"Authorization": f"Bearer {config.API_KEY}", "Content-Type": "application/json"}
data = {
"model": config.MODEL,
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.2,
"response_format": {"type": "json_object"} # 若模型支持
}
resp = requests.post(config.API_URL, headers=headers, json=data, timeout=60)
resp.raise_for_status()
content = resp.json()["choices"][0]["message"]["content"]
return json.loads(content)
if __name__ == "__main__":
with open("resume.txt", "r", encoding="utf-8") as f:
text = f.read()
result = screen(text)
print(json.dumps(result, ensure_ascii=False, indent=2))
运行前确保 resume.txt 存在,且内容为纯文本。
如果模型不支持 response_format,去掉该参数,但要在提示词中强调“只输出JSON,不要其他文字”。
常见报错与避坑
报错401:API密钥错误或未生效,检查密钥是否复制完整,环境变量是否加载。
报错429:请求频率超限,降低并发或增加重试等待。
输出不是JSON:模型可能添加了说明文字,在提示词中严格限定输出格式,或在代码中用正则提取第一个{到最后一个}之间的内容。
简历文本过长:超出模型上下文限制,可先截断或分段处理,优先保留工作经历和技能部分。
评分波动大:温度设为0,并在提示词中给出评分细则,例如“完全满足硬性条件给80分以上,缺失一项扣20分”。
另外,不要将真实简历和个人信息上传到不可信的第三方接口,注意数据合规。
验证筛选效果
准备3-5份已知结果的简历(比如一份完全匹配、一份缺少经验、一份学历不符),分别运行脚本,检查输出JSON中的 match_score 和 missing 是否符合预期。
如果评分与人工判断偏差较大,调整提示词中的评分规则,重复测试。
最后,可以将脚本包装成批量处理工具,遍历简历文件夹,输出CSV汇总。
这样一套AI招聘提示词配置就完成了,后续只需根据岗位变化微调提示词模板即可。
常见疑问
提示词用中文还是英文? 模型对中文理解通常足够,但如果简历是英文,建议提示词也用英文,避免语义偏差。
需要微调模型吗? 一般不需要,通过提示词和输出格式约束就能达到可用效果。
除非筛选标准非常复杂,再考虑微调。
如何保证评分一致性? 固定温度参数为0,并在提示词中明确评分规则,每次调用使用相同的模板和参数。