本节摘要:分类是 Jev 最直白的用法,也是官方基准测试的主战场(宣称比可比 LLM 快至 200 倍、便宜至 400 倍——自报上界)。做法就一句话:一个 Choice,选项即类别,务必带 other。本节讲透分类质量真正的决定因素——选项表:上线前过"三查"(具体性:描述写给阅卷老师;覆盖性:有逃生门且 other 占比受监控;判别性:选项间排他),上线后用 50~100 条人工标注跑混淆矩阵,盯两件事——哪两类互相混、other 是否被滥用。记住本章的锚点:分类的上限不在模型,在你的选项表。
阅读完本节,你应当能够:
{ "topic": { "type": "choice", "instructions": "将用户反馈归类。判别标准:以用户的主要不满为准,而非提到的话题", "criteria": { "bug": "功能不按预期工作、报错、崩溃", "ux": "能用但难用:流程绕、找不到入口、交互反直觉", "pricing": "价格贵、套餐不合理、付费障碍", "feature_req": "希望增加新功能或新内容", "other": "以上皆非,或混杂不清" } } }
注意 instructions 里写的是判别标准("以主要不满为准")而不是任务描述("请分类")——遇到"支付页太丑还总报错"这种复合反馈时,这条标准决定它归 bug 还是 ux。
官方基准数字供参考:TypeSafe 宣称 Jev 在分类任务上"比可比 LLM 快至 200 倍、便宜至 400 倍"(workflow 评测上界:193.6 倍 / 444.6 倍,基线为 GPT-6 Astra 与 Fable 5.1 均值,官方自认属"真实收益偏高端")。你的场景收益多少,用第 9 章方法自测。
一查具体性:每个选项的描述是"具体情形"还是"抽象程度词"?(第 3.2 节准则一的完整清单。)
二查覆盖性:有 other 逃生门吗?上线后监控 probabilities["other"] 的占比:
other 高频出现 → 选项表没覆盖真实流量,该细分了 other 几乎不出现 → 覆盖良好;也可顺带检查是否"从不给不确定留出口"
三查判别性:任取两个选项,问自己"有没有一条输入会同时满足两者的描述"?有——要么合并,要么补排他性描述:
❌ technical: "产品问题" app_issue: "应用问题" ✅ technical: "产品自身故障、报错" app_issue: "用户不会用、操作疑问"
💡 选项表是活的:它不是一次设计定型的静态配置,而是"三查 → 上线 → 混淆矩阵 → 修订"循环驱动的活文档。修订选项表 = 改模型,必须重跑回归集(第 9.1 节)。
用 50~100 条人工标注样本,跑一遍请求,把结果汇成矩阵(示例数据):
| 预测 \ 真实 | bug | ux | pricing | feature_req | other |
|---|---|---|---|---|---|
| bug | 21 | 2 | 0 | 1 | 0 |
| ux | 3 | 15 | 0 | 2 | 1 |
| pricing | 0 | 0 | 12 | 0 | 0 |
| feature_req | 1 | 1 | 0 | 14 | 0 |
| other | 0 | 1 | 1 | 0 | 6 |
读法三步:
混淆矩阵的完整工程化(含自动化脚本思路)在第 9.1 节回归集一节展开。
| 变体 | 做法 |
|---|---|
| 多标签(一单多类) | 拆成多个 Noul("是否计费相关""是否故障相关"…)并行问,而非一个 Choice |
| 层级分类(大类→子类) | 两次 Choice:先粗分再细分(第 3.2 节准则四) |
| 审核类(见仁见智) | 判断标准写进 instructions(引用你的政策原文),而不是留在选项里 |
| 打标(批量数据) | 逐条循环 + 缓存(第 8.1 节);实测参照:1,018 篇论文打标 ≈ $0.08 |
归堆之上再加一个维度——选项就是下游的处理路径——分类就变成了路由,而且"错误代价"突然变得可计算。下一节见。