Jev 深度解读
我们一直把 LLM 当作锤子,去砸每一个 AI 问题,哪怕只是简单的决策。Jev 能在毫秒级以极低成本处理这些决策。让我们来理解它是如何工作的,以及它适合用在哪里。
TypeSafe AI 于 2026 年 9 月 15 日发布了 Jev,而一个既不能聊天、不能写代码、也不能生成哪怕一段有用文字的模型,却引发了异常强烈的反响。
嗯,这个限制正是重点所在。
大多数软件并不需要另一个聊天机器人。它需要做出成千上万个小判断,例如:这张工单紧急吗?应该用哪个模型处理这个请求?这条 shell 命令危险吗?这段检索到的内容是否回答了问题?
团队常常把每一个判断都发给通用 LLM。模型一个 token 一个 token 地生成答案,应用再解析它、验证它,形状不对时就重试。这能工作,但对于一个只有五个可能答案的决策来说,既慢又贵。
Jev 就是专门为这些决策而建的。TypeSafe 称它为 System One 模型:非结构化状态进去,类型化的答案和概率出来。
让我们拆解这意味着什么,它适合用在哪里,以及营销话术里哪些地方需要稍微克制一点。
1、首先,Jev 正在解决的问题
一旦有了工具调用和结构化输出,把 LLM 连接到软件就容易多了。
工具调用让模型能以可预测的形状请求函数。结构化输出让它能返回符合 schema 的 JSON。两者都消除了大量脆弱的解析工作。
但底层模型仍然是生成式的。即使答案只是一个单词“billing”,它也是按顺序产生 token。你为输入付费,等待生成,还经常为输出再付更多钱。
现在把这放进一个 agent 循环里。
while not done:
action = llm(context)
result = run_tool(action)
context += result模型可能会被再次调用来选择工具、判断结果、检测风险、决定任务是否完成,以及选择下一个模型。一次 agent 运行中可能包含许多只需要判断、而不需要生成散文的调用。
Jev 瞄准的就是这些调用。
它的赌局很简单:当代码已经知道可能的答案时,语言生成是错误的接口。
2、Jev 实际是什么
最短的准确描述是:一个语义决策引擎。
你向 Jev 发送两样东西:
状态(State):描述当前情况的文本或 JSON。
问题(Questions):你希望它对该状态做出的决策。
每个问题都预先声明其答案形状。Jev 支持三种原语:
- Choice(选择):从你定义的列表中选一个选项,并为每个选项返回概率。
- Score(评分):把输入放在你定义的有序尺度上,例如低、中、高。
- Noul:通过返回其为真的概率来回答是/否问题。
Noul 是 TypeSafe 给布尔风格原语起的名字。这个不寻常的名字不如输出重要(一个 0 到 1 之间的数字,你的代码可以直接据此行动)。
{
"model": "jev-latest",
"state": "The deploy failed twice and customers are seeing 500s.",
"questions": {
"urgent": {
"type": "noul",
"instructions": "Does this need attention right now?"
},
"owner": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"engineering": "Product failures and outages",
"billing": "Charges, invoices, and refunds",
"sales": "Pricing and new accounts"
}
}
}
}响应包含一个紧急程度概率,以及对三个团队的概率分布。没有需要解释的段落,也没有模型可以凭空发明的第四个团队。
你的程序保持控制:
if urgent > 0.9 and owner == "engineering":
page_on_call()
elif confidence < 0.6:
send_to_human_review()
else:
add_to_queue(owner)这就是为什么人们一直把 Jev 称为“智能 switch 语句”。这个说法听起来有点贬低,但它抓住了设计的有用部分。普通代码拥有分支。模型提供普通代码无法可靠计算的模糊判断。
3、与 LLM 的重要区别
传统 LLM 和 Jev 都能对支持工单进行分类。它们到达答案的方式不同,在系统中有用的部分也不同。
TypeSafe 说 Jev 会并行评估请求中的每一个问题。这改变了你设计工作流的方式。你不必问一个问题、等待,再决定下一个问什么,而是可以在一次请求中对同一状态问所有独立的问题,然后让代码使用它需要的答案。
公司报告端到端延迟在 70 到 500 毫秒之间,价格为每百万输入 token 0.042 美元,输出免费。其宣传的数字大约是可比 LLM 工作流的 200 倍速度和 400 倍便宜。
这些巨大的倍数来自 TypeSafe 自己的工作流评估,并且处于比较的有利一端。把它们当作上限,而不是对每个应用的承诺。底层的优势仍然可信:Jev 避免了长推理轨迹和生成输出,因为它就是为有界决策而设计的。
4、为什么概率很重要
类型化的答案只解决了一半问题。
假设 Jev 把工单路由到 billing。选中的标签告诉你谁赢了。概率分布告诉你这场比赛有多接近。
{
"choice": "billing",
"probabilities": {
"billing": 0.52,
"technical": 0.46,
"sales": 0.02
},
"confidence": 0.18
}
自动路由那张工单会是鲁莽的。Billing 赢了,但只是勉强。低置信度的答案应该触发不同的分支。
这给开发者提供了一个实用模式:
- 高置信度:当后果较小时自动执行。
- 中等置信度:请求确认或调用更强的模型。
- 低置信度:把案件交给人或收集更多信息。
阈值属于代码,可以在那里审查和修改。仪表盘标签可以容忍弱预测。删除数据的命令应该要求高得多的门槛。
TypeSafe 使用“用于校准决策的强化学习”(Reinforcement Learning for Calibrated Decisions,简称 RLCD)来训练 Jev。目标是让置信度在大量预测中反映准确度。如果模型给一组答案 90% 的概率,那么大约 90% 的那些答案应该是正确的。
5、“不会幻觉”的说法需要精确
TypeSafe 说 Jev 不会幻觉。这句话只有在狭义定义下才成立。
Jev 不能返回 schema 之外的选项。如果你定义了 billing、technical 和 sales,响应就不能发明 legal。它也不能产生你的代码期望标签时却得到的畸形散文。
但它可以自信地选择错误的有效选项。
类型安全防止无效形状。它不保证正确判断。这个区别很重要,因为一个 schema 有效的错误仍然可能退错客户、错误路由事故,或批准危险命令。
更安全的说法是:“Jev 不能打破声明的输出 schema,但它仍然可能是错的”。
6、Jev 在 agent 中的位置
Jev 在与 LLM 一起使用、而不是取代 LLM 时效果最好。
LLM 处理需要语言或更深推理的工作。它规划、写作、解释并使用工具。Jev 处理围绕这些工作的频繁决策。
三个位置尤其有说服力。
6.1 模型路由
简单的查询不需要和架构评审用同一个模型。Jev 可以对请求打分,并选择最有可能完成它的最便宜模型。
route = jev.choice(
state=user_request,
options={
"fast": "Lookups, extraction, and small local edits",
"powerful": "Architecture, ambiguity, and high-stakes work",
},
)
model = fast_model if route == "fast" else powerful_model路由器不回答请求。它决定该由哪个模型来处理。
6.2 工具风险门控
在 agent 运行 shell 命令之前,Jev 可以把它分类为只读、可逆或破坏性。单独的问题可以检查它是否删除文件、改变 Git 历史、触及生产环境,或离开仓库。
高置信度的只读操作可以继续。破坏性或不确定的操作可以暂停等待人工批准。LangChain 的 Jev 集成通过中间件在执行前检查工具调用,应用了这个模式。
6.3 验证与监督
Agent 可能声称任务完成,而测试仍然失败。Jev 可以检查状态并回答有界问题:测试通过了吗?Agent 是否在重复同样的动作?输出是否符合策略?这个结果是否应该被审查?
当存在硬测试时,它不会取代硬测试。它在规则依赖于意义的地方增加语义检查。
7、Jev 今天能解决的问题
最好的用例共享三个属性:你可以命名可能的答案,一个仔细的人可以快速判断输入,而且这个决策发生得足够频繁,以至于延迟或成本很重要。
支持与运营
- 分类意图、紧急程度、部门、垃圾信息和客户挫败感。
- 通过几个小检查路由退款和策略例外。
- 在人阅读之前按语义严重性对日志和事故排序。
一次请求可以就同一张工单问所有这些问题。代码再把答案组合成公司实际的路由策略。
搜索与检索
- 按段落是否回答查询来重新排序检索到的段落。
- 检查引用是否支持某个主张。
- 在把上下文发给昂贵 LLM 之前过滤不相关的块。
嵌入在找到语义相关文本方面非常出色。Jev 可以做出更窄的决策:某一特定段落对这个问题是否有用。
质量与安全
- 筛选提示中的越狱或提示注入。
- 对照策略或评分标准检查生成内容。
- 在执行前标记有风险的代码更改或工具调用。
这些检查应该与确定性控制并排。语义分类器对模糊风险有用,而权限、沙箱和测试强制执行软件可以精确验证的规则。
高容量分类
- 给文档、研究论文、产品列表或客户消息打标签。
- 把自由文本变成传统机器学习模型的特征。
- 用同一评分标准对大型语料库中的每一项打分。
这是低每次调用成本变成不止是基准数字的地方。一个因为太贵而无法在每一行上运行的判断,可以进入正常数据管道。
实时界面
- 从已知的页面元素中选择下一个浏览器动作。
- 在人写作时对语气或清晰度打分。
- 从结构化游戏或模拟器状态中选择动作。
Jev 今天只支持文本,所以这些系统必须先把环境转换成文本或 JSON。它不看屏幕,也不从像素中玩。
8、Jev 不适合的地方
一旦答案空间不再已知,Jev 就变得不那么有用。
- 它不能写响应、总结文档、生成代码或解释其推理。
- 它在算术、计数、日期比较或精确字符串操作上不可靠。把这些操作留在代码里。
- 当决策需要几个隐藏的推理步骤时,它会吃力。把判断拆成更小的问题,或使用推理模型。
- 它不能直接提取未知值。先找到候选值,再让 Jev 从中选择。
- 不相关的上下文会降低准确度。只发送决策所需的状态。
- 闭源权重、早期访问、仅文本输入,以及有限的独立校准数据,让它现在还太早无法盲目信任。
还有一个更简单的规则:如果确定性代码已经正确解决了问题,就保留代码。普通的 if 语句比任何模型都更快、更便宜、更容易测试。
9、如何使用 Jev 而不制造新的故障模式
一个便宜的模型如果它的错误造成重试、人工审查或生产事故,仍然可能很昂贵。衡量整个工作流,而不是 token 价格。
合理的落地看起来像这样:
- 选择一个有界、低风险、可能答案清晰的决策。
- 在调用模型之前写好评分标准。定义每个选项属于什么。
- 收集有代表性的例子和期望答案,包括模糊和对抗性案例。
- 在当前工作流旁边以影子模式运行 Jev,不让它改变行为。
- 绘制准确度与置信度的关系,并从你的数据中设置阈值。
- 先自动化最安全的分支,对不确定情况保留人或更强的模型。
- 固定或记录模型版本、问题、标准和阈值,以便可以对照同一评估集重放更改。
问题是程序的一部分。像对待代码一样对待它们:给它们版本控制、审查它们,并在模型或评分标准改变时测试它们。
10、真正的转变
Jev 有趣并不是因为它在写作上胜过 LLM。它拒绝写作。
它的贡献是一个像软件一样成形的模型接口:固定答案类型、显式不确定性、并行问题,以及代码控制的分支。
这使它成为生成模型的有用伴侣。LLM 产生计划、解释或代码。Jev 路由请求、门控有风险的动作、检查结果,并在不确定性足够高时决定升级。
更广泛的想法即使最终有另一个模型取代 Jev 也很重要。我们花了多年时间要求生成模型通过文本执行每一种智能。许多生产系统不需要更多文字。它们需要一个小而快的、普通软件可以安全使用的判断。
这就是 Jev 试图建立的类别。
11、从哪里开始
不要从用 Jev 重建你的 agent 开始。找一个目前需要慢 LLM 调用或不断坏掉的正则的决策。
给 Jev 最小状态,定义可能的答案,并把它的概率与当前结果并排记录。让它先证明它值得一个分支,再把整个工作流交给它。
最有用的心智模型仍然是最简单的那个 → Jev 在普通 if 语句理解值但不理解其意义的地方添加判断。
汇智网翻译整理,转载请标明出处