大家好,我是小木头。这两天在社交媒体上最热的模型恐怕就是 Jev 9月15日发布当天呢,在 Hacker News 拿到了 1679分、400多条的评论。第二天 Vercel 宣布 AI Gateway 接入 Jev模型,在社交媒体上我想大家到处都能够看到它相关的新闻和爱好者们的分享。今天呢我也体验了一番,基本了解了它是什么、擅长做什么、或许不适合做什么。那现在呢就来分享一下先说说它的背景吧,发布这款模型的公司叫 TypeSafe AI,这是他们结束隐身后的第一个模型。

创始人 Diogo 之前在 OpenAI 是 RLHF 的共同发明人,也就是让语言模型学会听指令、会聊天的那套方法的作者之一。这次他做的东西呢,正好相反:这是一个不聊天的模型。官方放出的演示里我想最直观的可能就是这个——这是 DOOM,正在操作的并不是人,是 Jev。它每秒做大约 10次决策:往前、往左开火还是躲?它并不看画面,只看游戏状态;它也不说一个字,只会在几个选项里选一个,并且告诉你它有多确定。

官方的 API 还在排队发放中目前呢我也还在等待队列里,恐怕一时半会拿不到了毕竟实在是太火了。不过今天我走的是 Vercel AI Gateway 后面的演示呢也用它,所以实际上大家可以从第三方的平台也能体验到。今天视频内容的顺序我想是这样的:先说说它是什么,再来看看官方的数字和一些独立的实测看看有什么差距;最后呢尝试用了 AI SDK 来搭了一个 Playground,咱们把几个典型的场景跑一遍。

最后看看官方给 coding agent 准备的一份 skill 以及我体验下来的一些体会。TypeSafe 给 Jev 起了一个新的模型类别的名字,叫 System One Model。这个词呢来自于《思考,快与慢》:人的思维分两套——系统一快,凭直觉;系统二慢,要推理。那现在的语言模型呢都是咱们所谓的系统二:你问它一个问题,它一个 token 一个 token 地往外生成。

想的越多等的越久绝大多数时候这都没有问题,因为你要的就是那段话。但软件里有大量的决策根本不需要一段话:比如这条工单该转给谁?这条评论是不是垃圾?这个请求该交给便宜模型还是贵模型呢?这些问题的答案是一个选项、一个分数、一个是或者否。让语言模型先写一段解释再输出一个 JSON,再由你的程序、你的代码去解析既慢恐怕还贵还可能格式出错。

Jev 的做法是把一段状态(state)和一组带类型的问题一起给到它,它对所有问题并行地进行评估一次返回全部答案。每个答案都是类型化的而且带一个校准过的概率。官方的说法是把它当成一个前沿智能的函数调用:状态进去,类型化的概率出来。Jev 只会回答三种问题第一种呢是称为 Choice:从你给的选项里选一个,返回的是选中的那一个并且加上了每个选项的概率。

第二种是 Score:按一个有序的评分表来打分,你给它从低到高的几档比如平静、不耐烦、愤怒。它返回每档的概率再插值地给出一个分数。第三种 Noul,这个词呢实际上就是这句话为真吗?返回一个 0-1的概率。在 Vercel AI SDK里它叫 boolean。三种问题可以混在一次的请求里面,对同一段状态并行的评估互不干扰。

官方也特别强调了这一点:不要让模型在一个长上下文里连环推理,把复杂决策拆成一组原子问题一次全问剩下的逻辑就交给你的代码来进行处理。官方给到的数字确实蛮吸引人的:首先输入每 100万 token $0.042,输出免费因为根本就没有什么输出 token。端到端的延迟 70-500毫秒;在他们自己的工作流评测上准确率 67.8%和 GPT-5.6 Terra的 67.9%持平,成本是后者的 1/76速度快了25倍。

结构化输出的错误率0%因为呢它在数学上不可能输出错误的类型。这些数字发布两天后已经有人呢做了一些独立的审计,一些属实一些呢或许有些夸大。速度和成本的倍数方面官方说 20-400倍,独立测的呢是5-25倍。延迟呢从海外测的是1.6-3.7秒左右吧并不是几百毫秒那实际上根据大家的网络情况的不同这些数据上总的来讲呢是会有偏差的。

准确率和中档模型持平落后于推理模型,“前沿智能”这个词呢可能说的有点过头了。当然了还有呢比如说不会有幻觉恐怕也不太能够成立,官方文档自己写了一句话:“类型化输出保证的是接口不是真相”。它保证答案一定是你给的选项之一,不保证一定选对。没法验证的在于校准了也就是他说的那个80%是不是真的有 80%概率是对的呢?看起来这个应该是整个产品最核心的卖点。

目前也没有任何可以公开的校准或者是基准测试来做一个评判,所以我的感觉是便宜和快是真的倍数恐怕就看你怎么去理解了。类型安全也是真的确定的,它只是格式安全那答案是否正确呢?恐怕还得在自己的应用场景中真实的测评一下。发布了一周已经有人呢整理了 awesome-jev 列表40多个项目,我们可以分类来看一下。

其中分类路由最多其次呢是做验证安全防护、来做打分做排序做智能体决策还有游戏机器人等等。我挑了两个蛮有意思的:一个是有人让 Jev 玩超级马里奥,把 NES 的内存解析成 JSON。一个 Choice选手柄动作、一个 Noul判断现在跳有没有用、一个 Score评估眼前的危险程度。每 8帧决策一次三种原语在一个游戏循环里面全都用上了。

而另一个来自于 browser-use 浏览器智能体,每一步要做两个决定:做什么操作、对哪个元素做操作。他们把这两个决定呢做成两个 Choice一次性返回,只有要输入文字的时候才调这个小语言模型来生成文字。结果是 Google Flights 搜一张机票7.1秒完成,浏览器的协议调用从1000多次降到了 100次。看了这些应用场景大家是不是觉得蛮有趣呢?

那接下来我们看看怎么用。如果大家还没有拿到 Jev 的访问权限那么可以来尝试一下 Vercel AI Gateway,它上面模型的 ID是 typesafe-ai/jev。要注意:它只能通过 AI SDK 7的 experimental_evaluate调用,OpenAI兼容的 endpoint是不支持的。那我也用 TypeScript写了后面会看到的一个简单的 Playground:服务端就一个文件,evaluate传模型、传 state、传 questions。

通过 API调用拿到 answers 和 usage咱们顺便呢还可以做个计时这样呢我就把它套成了一个 Next.js的小应用做成了 Playground。接下来演示就都在这里了。咱们简单的介绍一下这个 playground布局:左边呢是预设场景,中间是请求右边是响应。请求也可以切换到 JSON看原始的请求体;响应也可以切到JSON看看原始的 API输出是什么样的。

先看最简单的一个场景:状态是一句客服记录,客服已经给用户全额退款42.5元并关闭了工单。问题只有一个 boolean类型:是否已经完成退款?点击 evaluate API会返回一个概率其中还包含了延迟以及输入 token数和成本。把状态换成“我们会评估您的情况3个工作日内答复”再跑一次,概率呢发生了变化。

咱们可以再换成一句完全无关的话“今天杭州多云”,那我们现在来看看概率是什么样的呢?第二个场景:一次问 5个问题。状态是一条工单:“登录不上,上个月多扣了钱要求退款语气很急”。我们期望对其做分类:首先 Choice有四个选项;故障程度用 Score类型分了四档;有没有复现步骤是一个 boolean表示有或者没有;是否要求退款也是 boolean值。

用户情绪呢用个 Score类型分三档一次请求发出去5个答案一起回来,延迟呢毫秒级的和刚才一个问题的时候呢差不多。再看右边类别做了选择概率分布也有了;退款也有了数值情绪落在了对应的数据上。这里有一个用法上的关键:故障严重程度这个问题只有类别是“故障”的时候才有意义的;退款这个问题只有类别是“收费”的时候才有意义的。

按传统做法你会先问类别等答案回来再问下一个;而 Jev 的建议是全部一起问并行没有额外的代价。回来以后代码只取相关的那几个不相关的直接忽略掉。现在把状态换成一条相互矛盾的工单:“一切正常但什么都用不了,我不要退款把钱退给我”。跑一下看看吧:类别仍然选了一个因为它必须选;单看概率数据已经体现了不确定性。

咱们再把它换成一段乱码它还是会选一个,再来看概率数据 confidence 数据。这正是刚才说的那件事:类型永远是对的答案并不一定对,概率体现了确定性。代码里或许可以加一条规则 confidence 低于某个阈值时就转人工这也是官方文档里面的 confidence-gated routing所推荐的使用方案。

第三个场景:AI Gateway 用户能够直接使用,状态是最近的几条对话现在呢需要做个选择这段对话该交给便宜模型还是强大的模型?两个选项各配一句描述:第一条改错别字,我们来看看他做了什么样的选择;第二条写一个带 LRU 和 TTL的缓存并写测试,看看他选了哪个吧;第三条一个2亿行表的查询 SQL非常慢。

那么两个选项之间的概率现在是这样的:路由这一步和后面真正调大模型的时间相比呢可以忽略。Vercel 自己的智能体框架 eve已经把这个做成了默认的能力,eve文档的 auto()代码块你给几个模型和一句描述它由 Jev 来进行挑选。第四个场景:我们把状态改成一个 JSON对象(作者、时间、评论正文、历史举报次数),提三个问题:是不是垃圾广告?冒犯程度是什么样?以及处置的方案是什么(放行人工复核还是删除)?

我们来看看在引流广告这一条上它的数据它的输出是什么样的。再换成一条正常的吐槽来看看结果;再换成人身攻击来看看冒犯程度以及处置方案。状态是 JSON这一点值得注意:你不用把记录拼成一段话,直接把对象传进去模型自己来读字段。这也是对于开发者来讲对用户来讲非常友好的。

最后一个场景说明 Jev 在系统里的位置:状态里有两段用户的问题和一个语言模型写的客服回复草稿。提三个问题吧:回复质量打个分;然后看看有没有泄露内部的政策;最后来评估语气是道歉、中性还是推诿。这条草稿里我故意加了一句内部政策:“投诉两次以上可以额外申请折扣券”。

那么我们来测试一下吧看看关于泄露以及关于质量的打分;再把那句删掉我们再来跑一跑,看看泄露这个回复上的数据。再来看看我们把它换成一条推诿的回复语气的评分又是什么样的?所以它不是用来替代语言模型的,语言模型负责生成 Jev 在后面负责判断这段能不能发、该不该重写一道校验。我想或许快到了可以放在每一次生成的后面。

Playground 是我手写的,真到了自己的项目里面要接 Jev多半呢是让像 Claude Code这类编程智能体去写。为此呢 TypeSafe 准备了一份 skill,仓库就是 typesafe-ai/skills(8月25号就建好了比模型发布还早了三周)。整个仓库就一个 SKILL.md文件不到 150行吧。Claude Code里面两条命令把它安装成插件,其他 agent呢直接用 npx skills add来安装就好。

它不是 API参考手册文档自己写清楚了在线文档才是事实的来源。skill只负责一套工作流或者方法论做三件事情:第一呢是指向在线文档 Mintlify的页面地址后面加个 .md就可以得到 Markdown。skill列出了一张表想理解编程模型读哪一页?比如想选原语要读哪一页?那么写代码要读哪里?让 agent按需呢去读取,不需要一次呢把整站的内容都放进整个上下文。

第二个呢是教 agent如何拆需求:从应用要展示什么、选择什么、改变什么倒推需要哪些判断、规则计算。精确查表执行都留在代码里面只在需要语义理解地方放上一个问题,他列出了 6种场景或者形态:路由并填参数、选择而不是生成、检索后判断证据、把判断呢变成可复用的数据、校验并且升级。

随着状态的变化决定下一步第三,纠正大语言模型时代的一些习惯:相互独立的问题一次性的都问掉。包括投机性问题 confidence 只表示概率分布的集中程度并不表示整个流程的正确性;Noul接近0.5是“是”和“否”各半不是程度中等,这也一定程度上体现了不确定性。问题和阈值常量可以放在自己的一个文件里咱们人审的时候只看这一处。

官方的常见问题中还有这么一条:只是要选最优的话直接取概率最高的那一个不要到处去设置 confidence阈值。初步体验了一番 Jev我的判断呢是这样的:什么时候用呢?答案空间事先能够定义的场景比如像分类、路由、打分、验证还有需要每秒几次决策的实时的循环。这些场景里面语言模型的文本生成开销是实实在在的。

那什么时候不太适合或者别用呢?需要解释的场景显然它给不了你理由;需要生成的场景显然它不会写字了。选项设计不好的场景因为正确答案可能并不在选项里的时候概率还是得落在剩下选项里这点还是蛮重要的。官方也承认难的部分是从写提示词变成设计决策的模式,在决策在选项里面你需要妥善的设计好明确这些选项是否包含你期望的。

另一点它是闭源的托管的 API没有权重,隐私敏感的场景呢大家需要自己权衡。当然了现在社区已经有人在做开放权重的复刻比如用 Qwen微调出带校准概率的小模型大家可以关注一下。Playground 代码我会放在描述区可以换掉场景里的状态和问题自己看概率怎么走。

当然了你也可以直接用目前非常主流的编程智能体来使用 Jev我的建议是拿你手头真实的分类或路由任务先跑几十条有标注的数据看看它的概率和你的标注对不对得上再决定要不要把它放进自己的系统里。好了这期就到这里我们下期见。