招聘信息是反映公司需求最诚实的公开信号:发布它们要花钱,而且上面列的正是团队缺什么。读几百条很慢;模型几分钟就能读完。我们从 LinkedIn 和 Indeed 抓取了美国的 "AI engineer" 招聘信息,让模型把每一条都整理成同样的几项事实。下面的一切都来自 2026 年 10 月 26 日的那次运行,花费 $0.43,也包括模型添加了招聘信息里根本没提到的技能的那一部分。
我们的问题
美国雇主眼下对 AI 工程师有什么要求:哪些技能、什么职级、多少薪资? 同样的运行可以用于任何职位,从招聘人员的市场地图到求职者的学习计划都适用。
我们收集的数据
| 来源 | 工具 | 我们要的内容 | 结果 | 费用 |
|---|---|---|---|---|
| LinkedIn jobs | "AI engineer",美国,过去一个月内发布 | 150 条招聘信息 | $0.137 | |
| Indeed | Indeed jobs | "AI engineer",远程,美国 | 50 条招聘信息 | $0.250 |
有 36 条招聘信息出现了两次(同一公司、同一职位名称),去重后剩下 164 条;模型判断其中 162 条是构建 AI 或 ML 系统的职位。雇主提供了薪资范围时,Indeed 会以结构化数据返回;LinkedIn 只有职位描述里写到的内容。
模型怎么用
gpt-5.6-luna 这个快速又便宜的模型分四批读取招聘信息,每批 50 条,每条取前 3,000 个字符。对每条招聘信息,它返回职级、远程政策、最低工作年限、所要求的技能(使用标准名称,所以 "PyTorch" 和 "pytorch" 算作同一项),以及在有写明时的薪资范围和它所出自的原句。然后由代码去重,把每一句薪资原句和招聘信息核对,并完成所有计数。四次调用总共花了约 $0.04。
我们的发现
现在这是一份大模型的工作。 在 162 个职位中,104 个要求有 LLM 经验,90 个要求智能体经验,84 个要求评测经验,58 个要求检索增强生成(RAG)经验。经典的 ML 框架落在后面:PyTorch 出现在 36 个职位中,TensorFlow 在 27 个中。这些是保守的计数:只有当模型标出了某项技能,并且招聘信息的文字中写出了它的名称时才算数。
| 技能 | 招聘信息数(共 162 条) |
|---|---|
| LLMs | 104 |
| 智能体 | 90 |
| 评测 | 84 |
| Python | 67 |
| RAG | 58 |
| 提示词工程 | 40 |
| PyTorch | 36 |
| AWS | 30 |
| 微调 | 29 |
| LangChain | 16 |
| 向量数据库 | 12 |
以高级职位为主。 52 个职位是高级(senior),18 个是 staff 或更高级别,相比之下中级 37 个、初级 22 个、实习 3 个;30 个没有说明。在写明最低要求的 81 条招聘信息中,工作年限的中位数是 3 年。
薪资:中间值 $155k。 50 条 Indeed 招聘信息中有 33 条给出了年薪范围。区间中点的中位数是 $155,000,中间一半落在约 $129,000 到 $196,000 之间;最低的区间从 $60,000 起,最高的达到 $322,000。在我们发送的文字范围内,117 条 LinkedIn 招聘信息中只有 9 条写了薪资,数量太少,说明不了什么(它们的区间中点中位数是 $209,000)。
远程政策大多没有写明。 在 162 个职位中,有 106 个在我们发送的文字里没有说明是远程、混合还是到岗办公,所以我们没有下结论。发送完整的职位描述,或使用招聘平台自带的工作方式字段,就能回答这个问题。
模型越界的地方
这个便宜的模型擅长阅读,却不擅长克制:它会添加一名典型 AI 工程师"应该"需要的技能,即使招聘信息并没有要求。我们通过在每条招聘信息的文字中搜索技能名称发现了这一点:
| 技能 | 模型标出的 | 招聘信息中写明的 |
|---|---|---|
| Python | 98 | 67 |
| MLOps | 41 | 17 |
| RAG | 75 | 58 |
| 向量数据库 | 25 | 12 |
如果照单全收,这些标签会让 Python 出现在 60% 的招聘信息中,MLOps 出现在四分之一中;而文字能支撑的只有 41% 和大约十分之一。修正的成本很低:只保留有文字支撑的标签,就像我们对上面每个数字所做的那样;或者请一个更强的模型引用它判断每项技能所依据的原文。
自己跑一遍
API 密钥放在 LOVELY_API_KEY 中,使用市场调研案例里的 run_tool 和 ask 辅助函数:
li = run_tool("linkedin-jobs", {"keywords": "AI engineer", "location": "United States", "datePosted": "r2592000", "limit": 150}, 150)
indeed = run_tool("indeed-jobs", {"title": "AI engineer", "location": "remote", "country": "us", "limit": 50}, 50)
posts = [{"id": i, "title": p["title"], "text": (p.get("description") or "")[:3000]} for i, p in enumerate(li)]
facts = []
for i in range(0, len(posts), 50):
facts += json.loads(ask("For each posting return {id, seniority, remote, min_years, skills, pay_quote, pay_min, pay_max}. JSON array.",
posts[i:i + 50], model="gpt-5.6-luna"))
# Keep a skill only if its name appears in the posting text; keep pay only if pay_quote is in the text.把关键词换成任何职位,或把地点换成任何市场。背后用到的工具见招聘与职位数据。
常见问题
用 AI 分析招聘信息要花多少钱?+
这次运行花了 $0.43:两个招聘平台的 200 条招聘信息 $0.39,模型阅读它们约 $0.04。招聘工具按返回的招聘信息条数计费;每个工具的价格见其页面。
该用哪个模型来读招聘信息?+
做大批量提取时,快速又便宜的模型就够用,只要你拿原文核对它的输出。我们用的模型添加了原文中没有的技能;在代码里做一次核对就免费解决了。如果需要一次就对,请用更强的模型,并要求它给出每个答案背后的原文引用。
我能每周跟踪这个市场吗?+
可以。每周运行同样的搜索,把 datePosted 设为过去一周,保存招聘信息 id 以跳过看过的,再比较各项计数。智能体可以通过 MCP 服务器完成整个运行。
薪资数字可靠吗?+
它们就是雇主公布的数字,仅限公布了薪资的那些招聘信息:Indeed 上 50 条中的 33 条。薪资透明法让美国招聘信息普遍写明薪资范围,但范围很宽,样本也很小,所以把它们当作参考,而不是基准。