本节摘要:Choice 和 Score 的返回里除了 probabilities 还有一个 confidence,初学者最容易混为一谈。本节的锚点:probabilities 回答"选项间怎么分"(分布),confidence 回答"这道题我做得有多有底气"(元判断)——两者正交。一个经典组合:分布 55/45 略偏 billing、confidence 0.35——模型略偏向一个选项,但自己都知道不太确定。只用 choice 不看 confidence,等于把校准信息扔掉一半。由此得到置信度门控(confidence gating)的通用模式与社区基线:普通自动决策 confidence < 0.5 转人工;高风险自动执行要求 probability > 0.9 才放行——并强调所有阈值必须在自己的回归集上重调(第 9.3 节)。
阅读完本节,你应当能够:
| 字段 | 回答的问题 | 例 |
|---|---|---|
probabilities |
选项间怎么分配信任 | "84% billing、10% technical" |
confidence |
对这个判断本身有多大把握 | "这道题我做得有 0.6 的底气" |
它们可以自由组合,三个经典读法:
| 分布 | 置信度 | 解读 | 动作 |
|---|---|---|---|
| billing 0.92 | 0.85 | 一边倒且底气足 | 放心自动执行 |
| billing 0.55 | 0.35 | 略偏向但心里没底(题面模糊) | 转人工 / 保守分支 |
| other 0.70 | 0.60 | 落进了逃生门(选项表没覆盖) | 触发选项表迭代(第 3.2 节) |
⚠️ 最常见误用:只取
choice字段走分支,把 probabilities 和 confidence 全扔掉——等于把 Jev 与"硬拍脑袋的分类器"的区别亲手抹掉。至少把三个字段全量落盘(第 8.3 节),它们是阈值调优的全部原料。
把"低置信 → 不自动"写成固定模式:
a = answers["route"] if a.confidence < 0.5: # 门控:底气不足,走保守路径 return human_queue(ticket) if a.choice == "billing" and a.probabilities["billing"] > 0.9: return auto_route("billing") # 分布一边倒且底气足,自动执行 return auto_route(a.choice) # 中间地带:自动执行 + 抽检
社区实测给出的两条基线(Flavio Copes 等,务必在自己的数据上重调,方法见第 9.3 节):
| 场景 | 基线 | 逻辑 |
|---|---|---|
| 普通自动决策 | confidence < 0.5 → 转人工 | 宁可慢,不可错 |
| 高风险 + 自动执行(删除、付款、对外发送) | 要求 probability > 0.9 才放行 | 校准含义:每 10 次放行约 9 次正确,配合重试/审计可接受 |
两个方向可以不对称:护栏类判断(第 7.3 节)"拦截"阈值很低(0.3 就拦,宁可错杀),"放行"阈值很高(0.9 以上才自动放行)——不对称的根源是两类错误的代价不对称(第 9.3 节代价函数)。
是非题的答案本身就是概率,"对判断的把握"已经编码在概率离 0.5 的距离里:0.97 是"是,且有把握";0.55 是"可能是,但心里没底"。所以 Noul 不需要额外的元判断字段——概率的极值就是置信度。
这给出一个实用的等价门控:
p = answers["is_urgent"].noul if abs(p - 0.5) < 0.15: # 离 0.5 太近 = 拿不准 return conservative_path()
机制层齐了:快(5.1)、可信(5.2)、可门控(5.3)。从下一章起进入应用篇——分类、路由、评分、排名、验证、护栏六大模式,每个都是这三块机制的组合技。