Jev 实战:不写文本只返回概率的 AI 怎么用
译注:本文翻译自 Erik Hanchett 发布于 dev.to 的文章,原文标题为《Jev 101: How I'm Using It Today in My Apps》,原文链接见文末。作者为 AWS 高级开发者布道师,文中观点与实测数据均来自其个人使用体验。
TypeSafe 于 2026 年 9 月 15 日发布 Jev,并将其称为一种「System One 模型」。所谓 System One 模型,是一类专门用于快速、确定性判断与结构化分类的 AI,它在单次并行推理中给出结果,而不是生成对话式文本。
你不与它聊天。你发送一段状态(state)加一组范围明确的问题,它返回概率。
作者最看重的是成本:每十亿输入 token 收费 42 美元,输出 token 免费。在他的测试中,响应时间为 70 到 500 毫秒。
一次请求长什么样
接口形式是一个 POST 请求,包含一个 state 对象和一个 questions 映射:
const response = await $fetch('https://openrouter.ai/api/alpha/decisions', {
method: 'POST',
headers: {
Authorization: `Bearer ${config.openRouterApiKey}`,
'Content-Type': 'application/json',
},
body: {
model: '~typesafe/jev-latest',
state: buildGateState(stack, pullRequest),
questions: {
matches_request: {
type: 'noul',
instructions: 'Does the pull request directly address the stated issue and acceptance criteria?',
},
protects_credentials: {
type: 'noul',
instructions: 'Does the changed frontend code keep credentials and secret tokens out of browser-visible runtime configuration?',
},
},
},
})返回结果的结构与你提出的问题一一对应:
{
"model": "~typesafe/jev-latest",
"answers": {
"matches_request": { "type": "noul", "noul": 0.59 },
"protects_credentials": { "type": "noul", "noul": 0.11 }
},
"usage": { "input_tokens": 4211, "output_tokens": 0, "cost": 0.00067 }
}每个答案都是 0 到 1 之间的数字。问六个问题,就得到六个概率,后续如何处理由你决定。
三种问题类型
Jev 提供三种原语。
noul 是「是/否」概率,只有问题,没有其他判定标准。
choice 从你定义的一组类别中选出一个。它的 criteria 是对象,因为类别之间无序:
traffic_shape: {
type: 'choice',
instructions: 'Using only the described usage pattern, choose how this workload receives traffic over a typical month.',
criteria: {
steady_24_7: 'Traffic arrives continuously at a roughly similar rate at all hours.',
business_hours: 'Traffic happens during working hours on weekdays and falls to almost nothing outside them.',
spiky_bursty: 'Traffic is uneven and unpredictable, with quiet periods followed by much heavier bursts.',
batch_scheduled: 'Work runs on a schedule as discrete jobs rather than as a stream of user requests.',
},
}score 是有序评分量表,因此它的 criteria 是数组。API 会强制区分这两种结构。
应用一:为 pull request 设置门禁
第一个应用加载一个 pull request,并一次性提出六个问题:diff 是否匹配所述 issue?是否让凭证远离浏览器可见配置?是否实现了验收标准要求的失败状态?改动的交互式 UI 是否可键盘操作?考虑到依赖关系,该层是否可独立安全审查?
六个问题在同一次请求中完成,速度非常快。随后由代码(而非模型)把概率转换为结论:
| 概率 | 结果 | 含义 |
|---|---|---|
| 80% 至 100% | Pass | 证据充分,可进入常规审查 |
| 55% 至 79% | Review | 需要人工核实不确定的证据 |
| 低于 55% | Block | 暂不合并该层 |
在作者的场景中,只有当 changes_interactive_ui 高于 0.5 时,keyboard_accessible 才计入判断。纯后端的 PR 不应因为没有键盘行为而被扣分,而这个条件逻辑写在代码里,可读也可改。
OpenRouter 与直连 TypeSafe
作者最初通过 OpenRouter 调用,因为当时还在 TypeSafe 等待名单上。他注意到 OpenRouter 明显更慢:
- 经 OpenRouter:683 毫秒,成本 0.00067 美元
- 直连 TypeSafe:318 毫秒
同样的工作,耗时大约减半。如果要基于此构建应用,建议加入等待名单并使用官方 API——作者第二天就获得了访问权限。
应用二:AWS 工作负载估算
第二个应用描述一个 AWS 工作负载,例如「面向零售店面的公共结账 API」,然后返回成本估算。其职责划分如下:
| 层 | 负责 | 绝不负责 |
|---|---|---|
| Jev | 对文字描述做语义判断 | 看数字、输出数字、比较两个数字 |
| 我的代码 | 规格计算、平台限制、阈值、排序 | 猜测意图 |
| AWS Price List | 所有单价 | 无,它只是数据 |
Jev 回答诸如:所述数据访问是否需要跨多表的关系查询?是否有任何单个工作单元运行超过十五分钟?描述暗示的是有界人群还是开放式公共需求?随后由 Agent Toolkit for AWS 与 AWS pricing MCP server 给出具体金额。模型完成分类后,算术是确定性的。
Schema 有效不等于正确
Schema 有效并不等于答案正确。Jev 不会返回你定义之外的问题或类别,因此不会解析到破损的响应。但它同样可能返回一个「自信地错误」、却完全通过校验的概率。
这正是两个应用都在任何后果之前设置阈值的原因。低置信度会转交人工或更强的模型。如果把概率直接接入不可逆操作,保证输出结构并不能救你。TypeSafe 发布了关于置信度的指南,但你需要用自己的标注数据去衡量,并根据犯错的代价来设定阈值。
社区在用它做什么
社区项目最能体现速度优势。有人让 Jev 玩《超级马里奥兄弟》,在游戏运行中反复询问「这里该跳吗」。还有人做了一个实时穿搭推荐器,输入变化时建议随之更新。
作者会不会用
前沿模型不会消失,Jev 也不与它们竞争。它不写代码、不解释决策、不产出计划。
但作者有不少工作流需要大量小型语义判断,而另一端是确定性代码在等待:路由、分类、门禁、昂贵步骤前的廉价验证。对这类场景,发送范围明确的问题并拿回概率,比让聊天模型输出 JSON 再祈祷要合适得多。
建议先在有标注数据的事情上试用,自行测量校准度,并把任何昂贵的操作挡在阈值之后。
原文链接
https://dev.to/erikch/jev-doesnt-write-text-it-returns-probabilities-5gno