副题:判断题与生成题的分界线——把你的纠结改造成可外包的形状
工程师圈流传着一条口诀:「让 AI 从你摆出的牌里选一张,而不是让它报出一个牌名。」」摆牌 = 判断题:答案空间可以预先枚举(是/否、A/B/C、1~5 级);报牌名 = 生成题:答案开放(写邮件、找根因、起标题)。分界线只有一个问题:这个 if 的分支数是有限的吗?
为什么要学这条线?因为判断题可以便宜、快速、结构化地批量求解——你的大多数「纠结」,其实都是没写清楚的判断题。
所有问题沿这条线切成两半:
| 判断 | 分支数 | 题型归属 | 例 |
|---|---|---|---|
| 该工单紧急吗 | 2 | ✅ 判断题(是非) | 紧急 / 不紧急 |
| 邮件属于哪个队列 | 4~6 | ✅ 判断题(单选) | 计费 / 故障 / 销售 / 其他 |
| 内容风险几级 | 5 | ✅ 判断题(等级) | 0~4 级,各级有具体描述 |
| 该回用户什么话 | ∞ | ❌ 生成题 | 交给慢而贵的系统二 |
| 这封邮件「值」多少钱 | ∞(开放数值) | ❌ 生成题(伪装) | 连等级题都接不住,见 §4 |
注意:分界在答案空间,不在问题措辞。「评估严重程度」听起来模糊,但只要你能写出 5 个具体等级的描述,它就是判断题。改写问题的能力,就是这条线的通行证。
输入一个你正在纠结的开放问题(试试「要不要跳槽」「这条消息是不是冒犯了同事」),改造台把它拆成三种判断题模板 + if 分支判定:
改造台生成的是起笔骨架:选项与等级描述必须替换成你自己的真实处境——题目写得好不好,直接决定答案质量(下一节解释为什么)。
判断题系统(如 Jev)的一次调用,输入输出长这样:
state(状态):模型看到的「世界」——一段消息、一张工单的 JSON。优先用对象,别揉成一段话,方便精确引用字段。
questions(问题):你命名的问题 + 类型 + 判别标准 + 答案空间(选项表/等级表)。
state: { 工单: {标题, 正文, 客户等级} }
questions: { 紧急吗: {type: noul, ...},
路由到哪: {type: choice, 选项: {计费, 故障, 其他}} }
形状保证(数学上的):答案永远落在你声明的空间里——选项之外的字符串结构上不可能出现。这就是「0% 幻觉」的准确含义。
概率语义:每个答案自带概率与置信度——拿不准返回 0.5,不硬编。
紧急吗 → {noul: 0.97}
路由到哪 → {choice: "计费",
probabilities: {...}, confidence: 0.8}
但要精确理解「不能幻觉」保证什么、不保证什么:它保证答案的「形状」,不保证判断的「正确」。一个设计糟糕的选项表不会因为类型安全而变好——错误会被包装成一个看起来合法自信的答案。所以题目设计是一等技能,下一期整期都在讲它。
「这条线索值多少美元」——美元金额没有预设刻度,任何等级表都接不住。
「正文超过三段吗」——这是可计算条件,机器数一下 len() 就够,还免费。
「这个函数该叫什么」塞 20 个候选——能跑,但你在用枚举模拟生成。
「这份财报数据是否自洽」需要跨段计算比对——判断题不推理。
灰色地带的通解一句话:任何「半判断半生成」的任务,先问哪一半是有限的——有限的那半外包,开放的另一半留给自己或生成模型。
是非题的 0.5 不是「中等」而是「拿不准」;等级题最忌「比较严重」这种程度副词;一个刻度题只测一个维度。下期是题型设计的手艺课,附六关卡卡选型闯关——测你能不能给对的场景挑对的题型。