最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Jev 简历筛选实战:接入 Vercel AI Gateway 返回概率判断
时间:2026-09-20 17:26:01 编辑:袖梨 来源:一聚教程网
在简历筛选这类业务中,系统真正需要的往往不是一段完整分析,而是候选人是否匹配、具备哪些经验,以及判断结果有多大把握。Jev 将这类任务处理成带概率的结构化决策,再通过 Vercel AI Gateway 接入业务代码,可以减少自然语言生成与二次解析环节。下面以测试工程师岗位为例,完整验证这一调用流程。
Jev 实战:用 Vercel AI Gateway 做简历匹配
最近试了一下 TypeSafe AI 的 Jev。
它和普通大模型的用法不太一样。
普通 LLM 更擅长生成文本:
输入
↓
模型分析
↓
输出一段文字
Jev 更像一个判断引擎:
输入 State
↓
提出多个问题
↓
直接返回选择和概率
比如简历筛选:
这份简历和岗位匹不匹配?
有没有测试经验?
有没有接口测试经验?
有没有自动化经验?
Jev 可以一次返回这些判断,不需要先生成长文本,再从文本里解析结果。
Vercel 对 Jev 的定位也是面向分类、路由、评分、验证等结构化决策。它支持 Choice、Score 和 Boolean,并能针对同一个 state 并行回答多个问题。
Jev 官网暂时不太方便直接测试
我一开始准备从 TypeSafe AI 官网直接使用 Jev。
但官方入口需要登录和申请使用资格。
只是想快速试一下模型,这一步就有些麻烦。
后来发现 Vercel AI Gateway 已经接入:
typesafe-ai/jev
于是直接改走 Vercel。
Vercel 在 2026 年 9 月 16 日宣布 Jev 上线 AI Gateway,并支持 AI SDK 7 的 experimental_evaluate() 接口。
这样只需要一个 Vercel AI Gateway Key。
安装
先建一个 Node.js 项目,然后安装:
npm install ai
代码里引入:
import { experimental_evaluate as evaluate } from "ai";
测试阶段可以直接设置 Key:
process.env.AI_GATEWAY_API_KEY = "你的_VERCEL_AI_GATEWAY_KEY";
正式项目建议放进环境变量,不要把 Key 提交到 GitHub。
实战:测试工程师简历匹配
先准备岗位:
const job = `
岗位:测试工程师
要求:
1. 2年以上软件测试经验
2. 熟悉功能测试、接口测试
3. 熟悉 Postman、JMeter
4. 有 Python 自动化测试经验优先
5. 有物联网平台项目经验优先
`;
再准备一份简历:
const resume = `
3年软件测试经验。
负责 Web、Android 和物联网平台测试,
熟悉功能测试、接口测试、回归测试。
使用 Postman 进行接口测试,
使用 JMeter 做性能测试。
会使用 Python 编写自动化测试脚本。
`;
把岗位和简历组成一个 state:
const state = `
【岗位要求】
${job}
【候选人简历】
${resume}
`;
接下来交给 Jev。
完整代码:
import { experimental_evaluate as evaluate } from "ai";
process.env.AI_GATEWAY_API_KEY = "你的_VERCEL_AI_GATEWAY_KEY";
const job = `
岗位:测试工程师
要求:
1. 2年以上软件测试经验
2. 熟悉功能测试、接口测试
3. 熟悉 Postman、JMeter
4. 有 Python 自动化测试经验优先
5. 有物联网平台项目经验优先
`;
const resume = `
3年软件测试经验。
负责 Web、Android 和物联网平台测试,
熟悉功能测试、接口测试、回归测试。
使用 Postman 进行接口测试,
使用 JMeter 做性能测试。
会使用 Python 编写自动化测试脚本。
`;
const state = `
【岗位要求】
${job}
【候选人简历】
${resume}
`;
const start = performance.now();
const result = await evaluate({
model: "typesafe-ai/jev",
state,
questions: {
match: {
type: "choice",
instructions: `
根据岗位要求和候选人简历判断匹配程度。
只能依据简历明确出现的信息判断。
`,
criteria: {
strong_match: "高度匹配,核心要求基本满足",
match: "匹配,大部分核心要求满足",
partial_match: "部分匹配,但存在明显能力缺口",
no_match: "不匹配,核心经验与岗位差距较大",
},
},
hasTestingExperience: {
type: "boolean",
instructions: "候选人是否拥有明确的软件测试工作经验?",
},
hasApiTesting: {
type: "boolean",
instructions: "候选人是否拥有明确的接口测试经验?",
},
hasAutomation: {
type: "boolean",
instructions: "候选人是否拥有自动化测试或 Python 测试脚本经验?",
},
},
});
console.log(`耗时:${(performance.now() - start).toFixed(0)} ms`);
const answers = result.answers;
console.log("匹配结果:", answers.match.choice);
console.log("匹配概率:", answers.match.probabilities[answers.match.choice]);
console.log("是否有测试经验:", answers.hasTestingExperience.probability);
console.log("是否有接口测试经验:", answers.hasApiTesting.probability);
console.log("是否有自动化经验:", answers.hasAutomation.probability);
实际运行
这次跑出来:
耗时:719 ms
匹配结果: strong_match
匹配概率: 0.99
是否有测试经验: 0.98
是否有接口测试经验: 0.97
是否有自动化经验: 0.98
换成人能直接看的结果:
简历匹配:高度匹配 99%
测试经验:98%
接口测试:97%
自动化经验:98%
整个请求用了 719 ms。
对于这种判断任务,速度不错。
当然,719 ms 只是这一次请求的实测结果。网络、输入长度和服务负载都会影响延迟。
Choice 怎么用
简历整体匹配使用的是:
type: "choice"
然后定义候选结果:
criteria: {
strong_match: "高度匹配",
match: "匹配",
partial_match: "部分匹配",
no_match: "不匹配",
}
Jev 返回:
{
choice: "strong_match",
probabilities: {
partial_match: 0,
no_match: 0,
strong_match: 0.99,
match: 0.01
}
}
所以代码不用解析:
“根据我的分析,该候选人与岗位高度匹配……”
直接读取:
answers.match.choice
得到:
strong_match
再读取:
answers.match.probabilities[
answers.match.choice
]
得到:
0.99
这对业务代码很友好。
Boolean 也不是简单的 true / false
比如:
hasApiTesting: {
type: "boolean",
instructions:
"候选人是否拥有明确的接口测试经验?",
}
返回:
{
probability: 0.97
}
也就是说,Jev 给你的不是一个死板的:
true
而是:
97%
这样业务可以自己设阈值:
const hasApiTesting =
answers.hasApiTesting.probability >= 0.8;
甚至可以分三层:
>= 0.9
自动通过
0.6 ~ 0.9
人工检查
< 0.6
不满足
这类概率输出正是 Jev 的核心设计。Vercel 的说明中也强调,Jev 返回 typed answers 和 probabilities,而不是先生成自然语言。
为什么这个场景适合 Jev
简历匹配本质上是一组判断:
工作经验够不够?
有没有接口测试?
有没有自动化经验?
整体匹配属于哪一级?
答案空间都很明确。
这时候让普通 LLM 写一大段分析,再去提取:
推荐
不推荐
匹配度
技能
中间多了一层文本生成和解析。
Jev 可以直接做:
JD + Resume
↓
Jev
↓
Choice / Boolean / Score
↓
业务代码
这也是它和普通生成模型最大的区别。
费用
Vercel 当前 Jev 模型页标出的输入价格是:
$0.04 / 1M tokens
我这次实际请求用了:
Input Tokens: 683
Output Tokens: 109
Total Tokens: 792
AI Gateway 返回的 marketCost 是:
$0.000028686
单次成本很低。
Jev 更像决策模型,不是聊天模型
如果要做:
重写简历
生成面试题
分析候选人的优缺点
写面试评价
我还是会选 GPT、Claude 这类生成模型。
但如果任务是:
匹不匹配?
是不是?
属于哪一类?
风险是多少?
要走哪个流程?
是否需要人工审核?
Jev 就很顺手。
TypeSafe 自己也把 Jev 定义成面向软件决策的 System One Model:输入结构化问题,输出带概率和置信度的 typed decisions。
一个更实际的用法
后面可以把简历筛选流程拆成两层:
┌→ 不匹配 → 结束
│
简历 → Jev 初筛 ─┤
│
└→ 匹配
↓
GPT / Claude
↓
深度分析
↓
生成面试题
让 Jev 处理大量简单判断。
只有通过初筛的简历,再交给更强的生成模型。
判断交给判断模型。
生成交给生成模型。
这可能才是 Jev 更有意思的地方。