一张客服工单进来:“我被重复扣款了,今天必须退。”
常见做法是把这句话塞给 LLM,让它输出 JSON:
{ "category": "billing", "urgent": true }
结果能用,但每次都要逐字生成几十个 token,等一两秒,还要处理 JSON 解析失败、字段漂移和模型自由发挥。
Jev 走的是另一条路:不生成文字,直接返回一个带概率的标签。同一张工单,它给出的不是一段回答,而是 billing、urgent = false 这样的结构化判断,代码拿到就能分支。
一、Jev 是什么
Jev 是 TypeSafe AI 在 2026 年 9 月推出的托管模型,官方把它称为 System One 模型。公司位于旧金山,以 4000 万美元种子轮结束隐身状态,领投方是 DCVC;Jev API 在 9 月 21 日对外开放。
它的定位不是聊天机器人。你发给它的是软件已经持有的状态,比如一张工单、一行日志、一次工具调用、一段检索结果;它返回的是一个类型化的判断,而不是一段自然语言。
当前版本提供三种输出原语:
| 原语 | 作用 | 典型用法 |
|---|---|---|
choice | 从预设选项里选一个,最多 255 个,返回每个选项的概率 | 工单分类、意图识别、模型路由 |
score | 按 2 到 10 级的有序量表打分,可以落在两级之间 | 紧急程度、风险等级、线索质量 |
noul | 对 yes/no 问题返回 0 到 1 的概率 | 是否升级、是否拦截、是否允许工具调用 |
一次请求可以带 1 到 8 个问题,它们共享同一份输入状态。这样同一个工单可以同时判断“属于哪个部门”“是否紧急”“要不要转人工”,而不是调用三次模型。
版本上,jev-1.13.0 是稳定版,jev-1.14.0 是预览版,新增了实验性的图片输入、Box 定位和 262k 长上下文。生产环境应该固定版本号,不要依赖会移动的 jev-latest 别名。
二、它和 LLM 到底差在哪
1. 生成方式不同
LLM 的核心是自回归解码:先做 prefill,再一个 token 一个 token 地往外吐。分类任务也要走完整个生成循环,最后再从文本里解析出答案。
Jev 没有生成循环。它做一次前向计算,把最后一个位置的 logits 投影到候选标签上,再做局部归一化,直接得到每个选项的概率。输出 token 数为零。
社区复现的两条路径也印证了这一点:一条是候选词 logits 掩码投影,另一条是把上下文当作前提、候选动作当作假设的 NLI 交叉编码器。Jev 官方没有公开完整权重,但机制方向是一致的。
这也是它快的原因。它省掉的不是模型层数,而是整个逐字生成的过程。
2. 输出形式不同
LLM 输出的是文本。即使开了 JSON mode,它仍然是在生成 token,只是被约束成 JSON 的样子,所以还是可能出现字段缺失、类型错误、前后不一致。
Jev 的输出是构造出来的类型值:choice 就是枚举里的某一项,score 就是量表上的一个数,noul 就是 0 到 1 的概率。下游不需要“解析”,直接读字段。
但要注意:结构化输出只保证格式,不保证判断正确。 它选错标签时,返回的仍然是一个合法的标签。置信度就是用来处理这种情况的。
3. 训练目标不同
LLM 的训练目标是预测下一个 token,再通过人类偏好对齐,让回答更像人、更有用。
Jev 用的是 TypeSafe 称为 RLCD 的方法,即 Reinforcement Learning for Calibrated Decisions,优化的是判断的校准程度,而不是语言质量。目标大致是:当模型说 0.8 的置信度时,这批样本的真实准确率应该接近 80%。
这是厂商的说法,仍然需要用自己的数据验证。尤其是你要拿置信度做自动放行时,校准比准确率更重要。
4. 延迟和成本不同
LLM 的延迟由两部分组成:首 token 时间,以及后续逐字解码的时间。输出越长,等待越久。
Jev 的主要耗时在一次性 prefill。社区实测里,输入从 360 token 增长到接近 30000 token,中位延迟从约 57ms 增长到约 218ms,没有逐字解码的累加。官方给出的 System One 任务延迟区间是 70 到 500ms,具体取决于地区和负载。
价格方面,公开资料列出的输入价格约为每百万 token 0.042 美元,输出侧免费或极低。不同渠道页面显示的数字不完全一致,接入前以官方控制台的实际账单为准。
5. 能力边界不同
把它们放在一张表里更清楚:
| 维度 | 传统 LLM | Jev |
|---|---|---|
| 核心任务 | 生成、对话、多步推理 | 判别、分类、打分 |
| 输出 | 自由文本,可约束为 JSON | 强类型 choice / score / noul |
| 解码方式 | 自回归逐 token | 单步前向,0 生成 token |
| 延迟 | 首 token + 逐字解码 | 主要是一次 prefill |
| 训练目标 | 下一 token + 人类偏好 | RLCD,校准概率 |
| 适合 | 写作、代码、长链推理 | 高频、重复、边界明确的判断 |
| 系统角色 | System 2,慢思考 | System 1,前置反射 |
一句话总结:Jev 不是“更小的 LLM”,而是把生成环节去掉的判别器。 它和 LLM 是分工关系,不是替代关系。
三、适合用在什么场景
Jev 最适合的位置,是“意图”和“动作”之间的那一层。系统已经知道可能要做什么,只需要一个快速、稳定的分支。
1. 模型路由
用户请求进来后,先判断难度和类型:简单问答走便宜模型,代码和复杂推理走强模型,敏感请求直接进审核队列。
这类判断边界清晰、重复量巨大,正适合 choice。比起让大模型先输出一段“这是一个简单问题”,再解析标签,Jev 直接返回路由结果和置信度,延迟和成本都低得多。
2. Agent 工具调用守卫
Agent 在执行 shell 命令、改文件、动数据库之前,先让 Jev 判断风险:
const verdict = await jev.evaluate({
state: `command: ${command}\ncwd: ${cwd}\nuser: ${user}`,
questions: {
action: {
type: 'choice',
instructions: '这条命令应该如何处理?',
criteria: {
allow: '只读或低风险操作',
review: '可能修改文件或配置,需要人工确认',
block: '删除、提权、外传数据等高风险操作',
},
},
irreversible: {
type: 'noul',
instructions: '是否涉及不可逆或越权操作?',
},
},
});
伪代码,字段以官方 SDK 为准。核心是:模型只负责给判断,真正的拦截动作仍然由代码执行。Jev 可以选 block,但它不会替你删文件,也不会替你发退款。
3. 客服工单分流
一次请求同时判断主题、紧急程度、是否升级:
import os
import requests
response = requests.post(
"https://jevmodel.org/v1/systemone",
headers={"Authorization": f"Bearer {os.environ['JEVMODEL_API_KEY']}"},
json={
"state": "I was charged twice. Please fix this ASAP.",
"model": "jev-latest",
"questions": {
"topic": {
"type": "choice",
"instructions": "What is this ticket about?",
"criteria": {
"billing": "payments and refunds",
"technical": "broken product or bug",
"other": "anything else",
},
},
"urgent": {
"type": "noul",
"instructions": "Does this need a human right now?",
},
},
},
timeout=15,
)
print(response.json())
拿到结果后,代码按 topic 进队列,按 urgent 决定是否插队。模型不写回复,回复仍然交给 LLM 或客服。
4. 内容审核和风控
高并发场景下,绝大多数内容要么明显合规,要么明显违规,真正模糊的只是少数。用 noul 做第一道门,用 score 排风险等级,把人工审核集中在灰色地带。
5. LLM 输出评估
让 Jev 按固定 rubric 给 LLM 的回答打分:事实性、完整性、是否答非所问。单项打分比让模型直接给一个 0 到 100 的总分稳定,权重和硬规则留在后端代码里。
复杂的事实核查、需要多步推理的评估,仍然应该交给更强的模型。Jev 适合的是边界明确的量表判断。
6. 数据清洗和实体匹配
判断两条记录是不是同一个实体、一段文本属于哪个类目、一条线索值不值得跟进。这些任务量大、规则模糊、又不需要生成,正好是判别模型的舒适区。
7. 上下文压缩
Agent 在多轮工具调用后,上下文会越来越长。可以让 Jev 判断哪些内容下一轮还需要、哪些可以丢,减少传给主模型的 token。
四、不适合什么场景
1. 写作、总结、解释、代码生成
Jev 当前版本不是为生成文本训练的。它不能写邮件、不能总结日志、不能解释自己为什么这么判断。需要这些能力时,应该把上下文交给 LLM。
2. 多步推理和长链逻辑
单步前向没有中间推理步骤。社区在钓鱼邮件测试里发现,面对嵌套转折和伪造身份的邮件,带思维链的模型准确率明显更高,Jev 漏判更多。语义欺骗超过两层,单步判断就容易失准。
3. 需要外部实时信息
Jev 不联网、不调用工具。它只判断你发给它的状态。如果判断需要最新数据,先由代码或检索步骤把证据取回来,再放进 state。
4. 需要给出理由
它返回标签和概率,不返回解释。如果业务要求“告诉用户为什么被拦截”,仍然需要 LLM 来写说明。
5. 高风险的全自动决策
置信度高不代表判断一定对。涉及资金、权限、医疗、法律的动作,应该保留人工复核或二次确认,不要因为延迟低就跳过安全阀。
另外,社区实测还发现几个工程上的坑:候选选项的顺序会影响结果;加入无关选项会稀释原有选项的概率;自己拿开源小模型裸取 logits 得到的置信度,往往严重过度自信。不要把未校准的分数直接当成自动放行的依据。
五、落地时怎么做
1. 用混合架构,而不是二选一
最稳的模式是:Jev 决定分支,LLM 负责表达。
- Jev 判断意图、风险、优先级,决定走哪条路。
- LLM 写用户看到的回复、总结、代码补丁。
- 两边都记录日志,方便回溯。
2. 做置信度分级
不要只有“通过”和“拒绝”两档。可以按置信度分三层:
const { topic, urgent } = result;
if (topic.confidence < 0.6) {
return routeToHuman(ticket);
}
if (urgent.noul > 0.8) {
return escalate(ticket);
}
return routeToQueue(topic.choice);
字段访问是示意,实际结构以接口返回为准。思路是:高置信度自动执行,中等置信度执行但记录并抽检,低置信度转人工或转强模型。
3. 固定模型版本
生产环境固定 jev-1.13.0 这类具体版本。别名会随发布移动,阈值刚调好就可能因为模型更新而失效。
4. 用自己的数据校准阈值
厂商的校准指标是平均值,你的业务分布不一样。上线前拿一批真实样本跑一遍,看每个阈值下的误杀率和漏放率,再决定自动化的比例。
5. 记录判断链路
至少记录输入、输出、模型版本、置信度和下游实际结果。没有这些数据,你无法判断 Jev 是在帮忙,还是只是看起来很快。
六、最后
Jev 的价值不在于“又一个模型”,而在于它补上了一层过去常被忽略的东西:if-else 和 LLM 之间的判断层。
传统 if-else 便宜、快,但对模糊语义无能为力;LLM 能理解语义,但每次都要生成,慢且贵。Jev 把这类重复判断做成一次前向计算,返回代码可以直接消费的类型值。
所以选型时可以问自己两个问题:
- 这个任务的答案是不是有限的?分类、打分、是/否,都属于这一类。
- 这个判断是不是每天要重复很多次,而且不需要解释?
两个答案都是“是”,就适合让 Jev 做分支;只要涉及写作、推理、取数、解释,就继续用 LLM。
判断交给 Jev,表达交给 LLM。 这比争论谁更强,更接近实际工程。