让 LLM 输出「判断」,是一个错配
大语言模型是为给人读而设计的。可当你需要一个给代码消费的判断时,事情就变味了 —— 你在逼一个文本生成系统吐结构化结果,然后再把结果解析回代码能依赖的东西。
flowchart TD A["你的代码"] -->|"在 prompt 里求它输出 JSON"| B["LLM
逐字生成"] B -->|"一大段文字"| C["解析 · 重试 · 兜底"] C -->|"格式对了才敢用"| D["if / sort / route"]
把问题类型化,答案就结构化
Jev 是 TypeSafe 的第一个 System One 模型。System One 模型专为「软件能直接使用的快速结构化判断」而构建。
你把类型化的问题放到一段 state 上求值,它直接返回结构化结果 —— 没有文本生成,没有解析。你拿到的就是数字和概率分布,可以直接拿来分支、排序、路由。
flowchart TD S["state
文本 / JSON / 数组"] --> J["JEV
System One"] Q["typed questions
noul · choice · score"] --> J J --> A["answers
数字 + 概率分布 + 置信度"] A --> K["你的代码
直接 if / sort / route"]
只有三种问法,而且是拼装用的
像软件原语一样:模块化、可组合、结构化、可靠、快。每种问法问不同的事,返回不同形状的答案。
flowchart TD S["同一份 state"] --> Q1["urgency
noul"] S --> Q2["department
choice"] S --> Q3["frustration
score"] Q1 --> R["一次响应
并行 · 各自独立"] Q2 --> R Q3 --> R
每个问题都独立地对同一份 state 求值 —— 所以加问题几乎不增加响应时间, 而且不会因为问题变多而互相干扰(不会 context rot)。
概率说「是什么」,置信度说「该不该动手」
probabilities 告诉你每个选项的可能性;confidence 把整个分布的形状压成一个 0~1 的数 —— 分布越集中,越有把握。
flowchart TD
A["拿到答案 + confidence"] --> B{"落在哪一段?"}
B -->|"高"| C["自动执行"]
B -->|"中"| D["让人确认"]
B -->|"低"| E["转人工 / 不行动"]
阈值不是一个全局数字。同一个系统里,只读操作可以宽松,破坏性操作必须严格 —— 因为「猜错的代价」不一样。这就是为什么它必须写在你的代码里。
问题要原子,组合在代码
每个问题都应该是一个「凭直觉的一秒判断」:一个有经验的人,拿到对的背景,一秒内能给出的那种判断。
"分析这个创业项目,给出综合评价"
这需要长篇推理、还要权衡多个独立因素。系统会变得又慢又不稳。
市场规模 · 技术可行性 · 差异化
三个 score 各问各的,然后用你自己的公式加权求和。
判断变成可版本化、可测量、可单独替换的一层。
这也解释了它在 agent 里的位置 —— 不是替代主模型,而是补上主模型做起来又慢又贵的那一小步判断。
它长什么样:一次真实请求
一次调用、三个问题、三种原语。
{ "state": "我的提现连续三天失败了,客户在催,我快没生意了!", "model": "jev-latest", "questions": { "urgency": { "type": "noul", "instructions": "这条消息是否表达出紧迫性?" }, "department": { "type": "choice", "instructions": "这条工单应该派给哪个团队?", "criteria": { "billing": "支付/退款", "technical": "Bug/故障", "sales": "定价/升级", "security": "账号/风控" } }, "frustration": { "type": "score", "instructions": "客户有多愤怒?", "criteria": ["平静", "不满", "非常愤怒"] } } }
{ "model": "jev-1.13.0", "answers": { "urgency": { "type": "noul", "noul": 0.98 }, "department": { "type": "choice", "choice": "billing", "confidence": 0.53, "probabilities": { "billing": 0.69, "technical": 0.31, "sales": 0.0 } }, "frustration": { "type": "score", "score": 1.84, "confidence": 0.76 } } }
注意 department 那一行:最高概率只有 0.69、置信度 0.53 ——
模型在说「我倾向账单,但我不敢保证」。这个数就是你要不要自动化的依据。