Contents

Introducing System One Models & Jev


作者Diogo Almeida (founder, TypeSafe)
机构TypeSafe AI
发布日期2026-09-15
链接https://typesafe.ai/blog/introducing-system-one-models-and-jev
相关Docs · Workflow evals · system-one-adapter-python

一个前沿规模的 zero-shot 分类器 / reward model(类似 cross-encoder reranker 或 NLI 零样本分类):输入一段文本或 JSON,再给一组预先定义好候选答案的问题,一次 forward 同时算出每个问题在各候选上的概率,完全不做自回归生成。卖点在于:概率经过 calibration 训练;state 只编码一次,多个问题共享;只按输入计费,号称比 LLM 快、便宜两个数量级。

TypeSafe hero image
博客头图:穿孔卡片(punched card)叠在专利图纸上,意思是要做“给机器用的 AI”。
$0.042/ MTok 输入,输出免费
70–500ms端到端延迟
≤255Choice 最大候选数
64k单次请求 context(state + 最长问题 32k)

研究动机

核心方法

0. 术语速查(每个抽象词在 Jev 里具体指什么)

术语在 Jev 里具体是什么例子
System One Model不生成文本、只输出受约束类型化决策的模型类别;名字取自 Kahneman 书里“快、直觉”的 System 1Jev 1.13(jev-1.13.0
State被判断的内容:字符串、JSON 对象或文本数组,只接受文本{"ticket": {...}, "order": {...}, "refund_policy": "..."};Doom demo 里是把游戏状态序列化成文本数据结构
Question一个判断:{type, instructions, criteria},key 只给代码用,不会发给模型"is_urgent": {"type":"noul", "instructions":"..."}
Choice从无序候选集合里选一个,返回 choice、每个选项的 probabilitiesconfidencebilling / technical / sales
Score在有序等级上定位,score 可以落在两个等级之间(推测是按概率算的期望位置)0 = calm, 1 = frustrated, 2 = angry,输出 score: 1.4
Noul是非题,只返回 P(yes) ∈ [0,1],没有单独的 confidence(博客配图里叫 “Bool”)noul: 0.95
Confidence由 probabilities 的“尖锐程度”算出来的 0–1 统计量,用来决定自动执行还是升级给人< 0.5 转人工
Calibrated在一组预测上,预测概率 ≈ 实际正确频率标 0.8 的答案,大约 80% 是对的
RLCDReinforcement Learning for Calibrated Decisions:目标是让决策概率“认识论上诚实”;具体算法未披露对比 RLHF(人类偏好)、RLVR(可验证奖励)
Parallel sampling一次 query 里给出所有问题、所有选项的概率,不逐 token 解码13 个问题合成一次调用:便宜 11.5x、快 9.6x(docs cookbook 数据)
Workflow写死在代码里的计算图:先问很多原子问题,再由代码用阈值做分支安全告警四阶段:Triage → Disposition → Containment → Playbook
Workflow eval accuracy同一个 workflow 分别用被测模型的概率和参考概率跑,看最终动作是否一致;参考 = GPT-6 Astra 与 Fable 5.1 的平均Jev ≈ 67.8%,GPT-5.6 Sol ≈ 74%

1. 接口契约:state + typed questions → 带概率的 typed answers

唯一的 endpoint 是 POST /v1/systemone。请求里放一个 state 和一个 questions 字典,每个问题必须是 Choice、Score、Noul 三种 primitive 之一。答案被限定在调用者给出的选项之内,所以根本不需要从 prose 里 parse,也就谈不上 hallucinate 出一个不存在的选项。所谓 “type-safe”,指的是输出空间在调用前就由 schema 定死了,不是事后检查。

POST https://api.typesafe.ai/v1/systemone { "state": "Hi, I've been trying to connect my Stripe account for 3 days and the integration keeps failing. I'm losing sales. Please help ASAP.", "model": "jev-latest", "questions": { "department": { "type": "choice", "instructions": "Which team should handle this", "criteria": { "billing": "Payment or subscription issues", "technical": "Bugs or integration problems", "sales": "Pricing or account questions" } }, "frustration": { "type": "score", "instructions": "How frustrated the customer appears", "criteria": ["Calm, just stating facts", "Frustrated but civil", "Very angry, strong language"] }, "is_urgent": { "type": "noul", "instructions": "The message conveys urgency or time-sensitivity" } } }
{ "model": "jev-1.13.0", "answers": { "department": { "type": "choice", "choice": "technical", "confidence": 0.78, "probabilities": { "technical": 0.85, "sales": 0.0, "billing": 0.15 } }, "frustration": { "type": "score", "score": 1.0, "confidence": 1.0, "legend": { "0": "Calm, just stating facts", "1": "Frustrated but civil", "2": "Very angry, strong language" }, "probabilities": { "0": 0.0, "1": 1.0, "2": 0.0 } }, "is_urgent": { "type": "noul", "noul": 1.0 } }, "usage": { "input_tokens": 392, "output_tokens": 65 } }
from typesafe_sdk import Choice, Noul, Score, TypeSafeClient client = TypeSafeClient() # reads TYPESAFE_API_KEY, defaults to jev-latest response = client.system_one( state=ticket, questions={ "department": Choice(instructions="Which team should handle this", criteria={"billing": "...", "technical": "...", "sales": "..."}), "frustration": Score(instructions="How frustrated the customer appears", criteria=["Calm", "Frustrated but civil", "Very angry"]), "is_urgent": Noul(instructions="The message conveys urgency or time-sensitivity"), }, ) if response.answers["department"].confidence < 0.5: route_to_human(ticket)

注意 response 里的 usage.output_tokens: 65:虽然说“输出免费”,服务端还是在统计某种输出 token,可能是选项 / 等级标签本身被当作被打分的序列。

直观理解:你可以把 Jev 当作一个“frontier-intelligence function call”,返回值类型是 dict[str, Distribution],不是 str

2. 并行采样:state 只编码一次,问题彼此独立

docs 里写的是 “Jev ingests the state once and evaluates every question against it in parallel”,context 预算是“state + 所有问题 ≤ 64k,state + 最长的那个问题 ≤ 32k”。这个预算形状强烈暗示:state 做成共享前缀只编码一次,每个问题作为互不可见的分支分别和 state 交互(问题之间互不当作上下文,官方明确说“不会 context-rot”)。所有选项的概率在同一次查询里一起给出,不做逐 token 自回归解码,所以多加一个问题的边际延迟接近 0,docs 甚至鼓励“speculative fan-out”:可能用得上的问题全部一起问,用不上的由代码丢掉。

flowchart LR
  subgraph LLM["LLM path"]
    P["Prompt"] --> D["Token decode loop"]
    D --> T["Free text"]
    T --> V["Parse and validate"]
    V -->|"fail"| RT["Retry"]
    RT --> D
  end
  subgraph S1["System One path"]
    ST["State"] --> EN["Encode once"]
    QS["Typed questions"] --> EN
    EN --> PS["Parallel scoring"]
    PS --> DIST["Probs per option"]
  end
  V -->|"ok"| CODE["Your code"]
  DIST --> CODE
  CODE -->|"threshold"| BR["Branch or escalate"]
          
drag to pan · scroll to zoom
两条路径对比。LLM 路径:逐 token 生成文本,再解析、校验,失败就重试,延迟和出错风险都集中在这里。System One 路径:state 编码一次,所有问题并行打分,直接得到每个选项的概率分布,交给代码按阈值分支。“Encode once / Parallel scoring” 是根据 docs 的 context 预算描述做的推断,TypeSafe 没有公开架构。
维度Existing LLMsSystem One + Jev
训练目标RLHF(人类偏好)/ RLVR(可验证奖励)RLCD(校准决策)
输入侧重非结构化、连续的对话消息非结构化、侧重程序状态(JSON)
输出字符串,要 parse + validate,有跑偏风险预定义类型的值 + 校准概率 + confidence
采样顺序,逐 token并行,一次 query 出全部结果
价格输入 $0.20–$10 / MTok,输出约为输入的 5 倍输入 $0.042 / MTok,输出免费
延迟frontier 模型 3–329 s70–500 ms(同等智能下快 40–200x)
置信度过度自信、不一致每个输出都带 calibrated confidence,相似输入给出相似答案
适用场景human-in-the-loop(chat、copilot、coding agent)、可验证问题、demoAI workflow / smart if、big-data map-reduce、实时应用、全面 verification / guardrail

3. RLCD:用校准作为训练目标

RLCD 的输出契约:不生成文本,只给决策和概率;概率越高,答对的机会就应该越大。calibration 的定义:

\[ \Pr\big(\text{answer correct} \,\big|\, \hat p = p\big) \approx p \quad \text{for all } p \in [0,1] \]

博客和 docs 都没有披露奖励函数、数据来源(只说“数据全部自己造”)、模型结构(只说是 “new model architecture”,并且 “neither small nor an LLM”)。推测:如果奖励用的是 proper scoring rule(log score 或 Brier),那么对“单步决策”做 RL,在数学上接近用交叉熵做监督分类,“RL”这个名字更多是在强调目标,而不是算法。

直观理解:RLHF 让模型学会“说人爱听的话”,RLCD 让模型学会“诚实地报出自己有几成把握”。

4. Confidence:从分布算出的第二个维度

Choice 和 Score 的 confidenceprobabilities 的集中程度算出,docs 给了一个 K 选项的近似式(全部概率集中在一个选项时为 1,均匀分布时为 0):

\[ \text{confidence} \approx \operatorname{clip}_{[0,1]}\!\left(\frac{K \cdot p_{\max} - 1}{K - 1}\right) \]

比如 3 个选项、分布为 (0.90, 0.06, 0.04),confidence ≈ (2.7−1)/2 = 0.85。docs 推荐的用法是风险分级阈值:confidence < 0.5 一律转人工;低风险动作(查余额)直接执行;高风险动作(批准转账)要求 > 0.9,否则让用户确认。模型只负责给出答案和把握程度,风险容忍度由代码来编码。

5. 组合方式:原子问题 + 代码里的权重和分支

官方的设计哲学是“每个问题只问一个行家一秒钟就能判断的事”。像“分析这条消息并决定最佳处理方式”这种需要 System 2 的问题,要拆成多个原子问题,再在代码里用权重组合(Composite scoring)。一个答案决定下一步要取什么数据、问什么问题时,才发第二次请求(例如先对 182 个 skill 排序,取 top-3 全文再判一次)。下图是博客公开的 4 个 workflow 里最简单的一个:安全告警处理。

Security alert workflow
安全告警 workflow。① Triage:3 个 reading(是否未授权、有没有记录能解释、证据强度);② Disposition:代码结合资产环境和等级,决定 close / queue / act(P > 0.75 才 act,灰区 0.15–0.60 的身份告警通知用户);③ Containment:11 个 reading 描述事件状态(凭证泄露、会话、恶意邮件、持久化、进程、外传流量、扩散范围……);④ Playbook:取第一个满足条件的组,在组内选条件成立的最强动作,没有组适用就 ESCALATE URGENT。图例里 Bool / Score / Choice 就是三种 primitive。

6. 最关键的一句话

放弃字符串生成,把模型重新训练成“对任意文本 state,一次并行给出多个预定义问题的校准概率”的决策函数;类型安全来自结构,速度来自不解码,可靠性来自 calibration + 代码里的阈值。

主要实验结果

作者自己把结论分成两类:容易验证的(速度、价格、不会出类型错误)和更大胆的(智能水平、hallucination 对比)。后者每一项都附了 “Nuance” 免责说明,下面一并列出。

1. Side-by-side demo(video

2. Workflow evals:accuracy vs cost

评测协议:假设存在一个正确的计算图(用代码写成的 workflow),所有模型都跑同一个 workflow,不允许改 harness(避免 harness engineering 过拟合)。以 GPT-6 Astra 与 Fable 5.1 概率的平均作为参考答案,比较各模型走完 workflow 后的最终结果与参考是否一致。LLM 都通过 System One LLM adapter 接入,被约束成输出与 Jev API 相同格式的结构化决策(含概率)。另有一组 “prompt” 模式:把整个 workflow 的逻辑写进 prompt,让 LLM 在 CoT 里自己推,效果明显更差。

flowchart LR
  IN["Eval case"] --> WF["Fixed workflow code"]
  WF -->|"questions"| MUT["Model under test"]
  WF -->|"questions"| REF["Avg of Astra and Fable"]
  MUT -->|"probs"| RUN1["Run branches"]
  REF -->|"probs"| RUN2["Run branches"]
  RUN1 --> CMP["Same final action"]
  RUN2 --> CMP
          
drag to pan · scroll to zoom
Workflow eval 的 accuracy 是怎么算的:同一个 workflow 分别用被测模型的概率和参考概率(Astra 与 Fable 的平均)跑完所有分支,看最终动作是否一致。所以这里的 “accuracy” 衡量的是和最强 LLM 集成的一致率,不是和人工标注的 ground truth 比。
4 个 workflow 的平均 accuracy vs 每个 workflow 的成本(x 轴取 log)。数值是从博客原图目测读出的近似值。◆ = workflow 模式,● = prompt 模式;虚线是 Pareto frontier(Jev → Terra → Sol)。Haiku 4.5 的 prompt 模式只有约 18%,超出坐标范围没有画。
博客原图 + 读数表
Average of 4 workflows: accuracy vs cost
原图:Average of 4 workflows: accuracy vs cost。
模型模式cost / workflow (USD)accuracy相对 Jev 成本
Jevworkflow≈ 0.0004≈ 67.8%1x
GPT-5.6 Lunaworkflow≈ 0.0033≈ 66.8%≈ 8x
DeepSeek v4 flashworkflow≈ 0.006≈ 64.4%≈ 15x
Haiku 4.5workflow≈ 0.020≈ 53.6%≈ 50x
GPT-5.6 Terraworkflow≈ 0.030≈ 67.9%≈ 75x
DeepSeek v4 proworkflow≈ 0.041≈ 65.5%≈ 100x
GPT-5.6 Solworkflow≈ 0.083≈ 74.2%≈ 210x
Sonnet 5workflow≈ 0.12≈ 67.8%≈ 300x
Opus 5workflow≈ 0.18≈ 73.1%≈ 440x
Opus 5prompt≈ 0.34≈ 64.9%≈ 850x
GPT-5.6 Solprompt≈ 0.20≈ 63.5%≈ 500x

3. Hallucination 与 type-safety

Structured output and tool call error rates
左:structured output error rate(Jev 0%,Luna / Terra 0.58%,Opus 5 5.73%,Fable 5.1 8.25%,Sonnet 5 13.2%,Haiku 4.5 45.5%)。右:tool call error rate(Jev 0%,Opus 5 0.67%,Fable 5.1 1.38%,Terra 5.5%,Astra 16.6%,Sol 17.0%)。

4. Fun demos

Demo展示什么关键数字Nuance
Doomvideo实时智能:把游戏状态序列化成文本数据结构,让 Jev 做反应式决策,还能 follow instructions约 10 queries/s,约 $7/h输入是结构化文本,不是图像;非 AI 的 bot 其实玩得更好
Wikiracingvideo高基数选择:每一步要从几百到几千个链接里选一个,同时体现“不会 hallucinate 链接”的累积收益Choice 基数上限 255;更多候选时先独立打分,再显式二次选择对照组用的是 LLM 的 non-reasoning 模式(Astra 用最低 reasoning),开了 reasoning 的 LLM 会好很多;加速比明显小于其它 demo

局限与展望

FAQ 摘录

名字来源:System One 与 Jev

System One 取自 Daniel Kahneman 的 Thinking, Fast and Slow(快而直觉的 System 1 vs 慢而审慎的 System 2)。作者承认 System 1 常被认为容易出错,但认为 System One Models 可以做得比其它方案更可靠。Jev 取自 William Stanley Jevons(Jevons paradox):蒸汽机效率提高反而让煤炭需求上涨。作者预期智能成本每降一个数量级,就会解锁多一个数量级的用例。

为什么需要新的训练算法?

所有实验室在 RLHF 阶段优化的都是“产出人类评分员更喜欢的文本”,这对聊天产品是对的,对自动化是错的。这就是 “the bitterest lesson”:优化正确的任务,比数据、算力、算法都重要。RLVR 适合有简单程序化验证的任务,但大多数现实判断任务不是这个形状,结果就是 spiky、不鲁棒的智能。

Jev 只是一个更小的 LLM 吗?

“Jev is neither small nor an LLM, hence being off the intelligence Pareto curve.”(没有进一步解释。)

公开 benchmark 表现如何?

刻意发布公开 benchmark 成绩,只在产品更新时做一次性 eval。倡导的做法:不看重公开 benchmark;鼓励用户为自己的场景建 eval(System One 任务更容易评估);公开 eval 里的 nuance;即使领先也不强调 benchmark。

训练数据从哪来?

“TypeSafe 本质上是一个数据研究实验室”,数据全部自己制作,不用客户数据训练。细节不公开(“想知道得先被我们雇用”)。

这些结果为什么可能?

“You get what you optimize for.” LLM 为聊天和 copilot 优化,所以在 human-in-the-loop 任务上超越人类;TypeSafe 则为 System One 接口优化。