Jev 工单分类:原理、输入输出与最省 token 的玩法

让它替你回答「这单是哪里坏了」——而且告诉你它有多确定

2026-09-21 · ELI5 系列 · 实测数据来自真实 API 调用

ELI5 一句话原理

Jev 不是 ChatGPT 那种「写字的 AI」。它是一个判卷老师:你把工单(一份材料)递给它,再把一张你预先印好的答题卡(几个分类选项)也递给它,它不写一个字的作文,只在答题卡上涂概率:

材料 + 答题卡 →「detector 77% · software 23% · 其余 0%,置信度 0.69」

因为不写字、只涂卡,「编造一个不存在的选项」「输出一段没法解析的话」这类错误在构造上就不存在——答题卡是你印的,它只能在你的选项里涂。

术语:Jev 是 TypeSafe AI 的 System One 模型,RLCD 训练,70–500ms 出结果,输入 $0.042/M token、输出免费

原理:为什么它不胡说

机制 判卷 vs 写作文
LLM(写作文)Jev(涂答题卡)
工作方式逐字生成文本在固定选项上算概率
结构化错误0.58%–45.5%0%(构造上不可能)
置信度过度自信、忽高忽低校准的:说 90% 把握的那批,实际命中率≈90%
速度3s–329s70–500ms
单价$0.2–10 / M tok$0.042 / M tok,输出免费

「校准」是关键卖点:普通 LLM 你问「有几分把握」,它八成回答 99%。Jev 的训练目标(RLCD)就是让置信度和真实命中率对齐——这意味着置信度第一次变成了可用的生产参数,而不只是心理安慰。

输入 / 输出:到底给什么、拿回什么

输入 两样东西

① state(材料):工单的证据文本——故障现象描述、错误代码、已换过的备件、机型。直接贴原文,不需要清洗措辞,错别字、行话、中英夹杂都行(下文实测)。

② questions(答题卡):你定义的分类体系,三种题型——

题型问什么返回什么
choice多选一(最多 255 项)选中项 + 全选项概率分布 + 置信度
noul是非题0–1 的「是」概率
score按等级打分(2–10 档)概率加权分数 + 各档概率 + 置信度
{
  "state": "客户报修天吊DR,开机自检报错…(工单证据)",
  "model": "jev-latest",
  "questions": {
    "failure_mode": {
      "type": "choice",
      "instructions": "判断最可能的故障子系统",
      "criteria": {
        "detector": "平板探测器坏点/伪影/校准失败/图像异常",
        "hv_generator": "高压发生器/高压油箱打火/曝光错误",
        "tube": "球管漏油/真空下降/阳极噪声",
        "software": "软件报错/升级引起/回滚后恢复",
        "mechanical": "机械/运动轴/限位/刹车",
        "other": "以上都不符合或证据不足"
      }
    },
    "needs_escalation": { "type": "noul", "instructions": "需升级研发" },
    "severity": { "type": "score", "criteria": ["可继续用","受限","无法出图","停机"] }
  }
}
输出 一次拿回全部答案
{
  "answers": {
    "failure_mode": {
      "choice": "detector", "confidence": 0.69,
      "probabilities": { "detector": 0.77, "software": 0.23, … }
    },
    "needs_escalation": { "noul": 0.29 },
    "severity": { "score": 1.6, "confidence": 0.78, … }
  },
  "usage": { "input_tokens": 402, "output_tokens": 70 }
}

三个问题一次调用全部返回——问题是并行评估的,多加问题几乎不加时间。这不是「问三遍 API」,是「一张答题卡涂三道题」。

实测:它真的懂行话和错字吗

证据 2026-09-21 真实调用

用 X 光机售后工单风格的输入实测(结果均为 API 真实返回):

输入(黑话/混合)判定置信度
「设备无法出图,现场看是平板坏了,换了块新的就好」detector1.0
「客户反映球馆漏油」(球管的同音错字)tube0.99
「工程师说检测器有坏点,图像有黑斑」detector1.0
「怀疑高压油箱有问题,绝缘阻值偏低」hv_generator1.0
中文主体 + 英文错误码 + 德文工程师备注 的长工单detector0.99

「球馆漏油」这关最说明问题:字面是错的,它靠「漏油」+语境推出了球管。50 个工程师 50 种写法的实体归一化问题,语义模型直接吃掉。

工程实践

一个关键细节:这 4 条全对,部分功劳在 criteria 描述里预埋了这些别名(平板/检测器/高压油箱都写进了对应选项的描述)。别号表的正确用法不是写匹配规则,而是写进选项描述。

最省 token 的五个策略

#策略为什么省
1只放证据字段:现象描述、错误码、换件记录。扔掉工单号/客户名/地址/日期无分类价值的字段是纯浪费,还泄露隐私
2问题批量化:分类+升级+严重度一次调用问完官方 cookbook:13 问合 1 比逐问便宜 12.2×、快 10×
3准则写短写准:每类一句判定证据,不写作文questions 也在输入 token 里,白话冗长 = 白烧钱
4分层分类:先 6–10 大类一轮,长尾再二轮细分255 选项一次塞满 = 每条工单都为所有选项付 token
5别预提取:工单原文直进,不先过一道 LLM 压缩省一道模型钱 + 少一个出错环节(A/B 实测后定)

成本量级感受:10000 条 × 2000 token = 2000 万 token ≈ $0.84。全量重跑一遍不到 6 块钱——迭代分类体系不用心疼。

准备清单:动手前要备齐的四样

准备 决定成败的都在数据侧

调用:最小可用代码

import json, urllib.request, os

key = os.environ["TYPESAFE_API_KEY"]          # 或从 ~/.hermes/.env 读

def classify(order_text: str) -> dict:
    body = {
        "state": order_text,                   # 脱敏后的工单证据
        "model": "jev-latest",
        "questions": {
            "failure_mode": {
                "type": "choice",
                "instructions": "判断最可能的故障子系统",
                "criteria": CRITERIA,          # 你定义的分类体系
            },
            "needs_escalation": {
                "type": "noul",
                "instructions": "安全问题或重复维修未解决,需升级研发",
            },
        },
    }
    req = urllib.request.Request(
        "https://api.typesafe.ai/v1/systemone",
        data=json.dumps(body).encode(),
        headers={"Authorization": f"Bearer {key}",
                 "Content-Type": "application/json"})
    with urllib.request.urlopen(req, timeout=60) as r:
        return json.load(r)

result = classify("客户报修天吊DR,探测器校准失败……")
print(result["answers"]["failure_mode"]["choice"])        # detector
print(result["answers"]["failure_mode"]["confidence"])    # 0.69

429/529 时指数退避重试;端点只有一个,没有别的 API 面

管理输出:让结果进数据库而不是进聊天记录

落库 五列就够
CREATE TABLE jev_classifications (
    order_id        TEXT,        -- 工单号
    failure_mode    TEXT,        -- choice 结果(选项 id)
    probabilities   JSONB,       -- 全选项概率分布(整存!)
    confidence      REAL,        -- 置信度
    needs_escalation REAL,       -- noul 概率
    severity_score  REAL,        -- score 分
    input_tokens    INT,
    created_at      TIMESTAMPTZ DEFAULT now()
);

铁律

概率数字 100% 来自模型/SQL 聚合,LLM 只做语义层。Jev 输出的是选择和概率,恰好不越界——分类进 Jev,故障树概率统计进 SQL,各管各的。

Next Steps

详细 playbook 见知识库《Jev工单分类-实施流程与成功关键》

LLM 是会写字的实习生,写的字要人检查;
Jev 是只涂卡的质检员,涂的卡自带诚实的把握。
决策交给涂卡的,语言留给写字的。

← 返回系列导航