官方 confidence 门控路由:不是准确率,是二阶信号
先说结论
- 官方把 confidence 定义为概率分布形状折叠出来的 0~1 统计量,不是一个独立的“准确率”指标;Choice 和 Score 答案都带
probabilities,Noul 答案不带 confidence。 - Confidence-gated routing 是在意图识别之后加一层风险门控:高置信度自动执行,低置信度升级给人工或确认。它不替代主模型,只是决定“要不要照答案行动”。
- 四种官方 Pattern 边界不同:Speculative fan-out 省 round trip,Intent routing 做入口分流,Composite scoring 做多维打分,Confidence-gated routing 做执行前风控。
- 第三方 60 例基准(社区二手)显示高置信度区间很稳、模糊输入容易错;门控价值在于挡掉不确定的那部分,而不是提升准确率。
- 落地应从保守阈值开始,记录模型版本和低置信度占比,按天观察校准与漂移。
一、官方怎么定义 confidence:一个二阶信号
官方 Confidence 文档 明确说,所有 Score 和 Choice 答案都带一个 probabilities 字段。Choice 的分布是在选项上,Score 的分布是在等级上。分布的形状表达确定性:集中在单一结果上就是确信,摊平在多个结果上就是不确定。
confidence 本身是这个分布的派生统计量。官方原文是:
The answer’s confidence property collapses that shape into a single number from 0 to 1, so you can threshold on it without doing the math yourself. (Noul answers don’t carry one.)
这句话有两层含义。第一,confidence 不是模型额外给出的“我觉得对不对”,而是从 probabilities 里折叠出来的一个数。第二,Noul 答案没有这个字段,所以如果你把路由逻辑写成对每个 answer 都读 confidence,遇到 Noul 会直接出错。
(官方数据)低 confidence 在 Choice 上通常表示“没有哪个选项明显胜出”;在 Score 上通常表示等级之间模糊、存在多个维度、或者当前 state 信息不足。因此,低 confidence 应该被当成“不知道”信号,而不是“错误率”。
二、官方模式:用第二轴决定是否行动
官方 Confidence-gated routing 的开篇句是:
Use confidence as a second axis. The answer tells you what; confidence tells you whether to act.
这句话很关键。answer.choice 告诉你模型认为用户想做什么;answer.confidence 告诉你现在是否应该自动执行这个判断。官方举的是语音银行指令:查询余额风险低,approve_transfer 风险高,所以同一个 intent 分类后,不同动作要设置不同的 confidence 门槛。
官方示例里用了 0.6 作为兜底门槛,高于 0.6 才进入具体动作;check_balance 在 0.6 就够,approve_transfer 则要求高于 0.85 才能自动执行,否则 ask_user_to_confirm。这不是固定推荐值。另一个官方 Confidence 页面里,低门槛用的是 0.5,approve_transfer 高门槛用的是 0.9。两个页面阈值不一样,正好说明官方没有给统一的生产阈值,只给了按风险测试的方法。
(自己推算)Confidence-gated routing 与主模型的关系,不是替换,而是加一层门控。主模型仍然负责输出答案,门控层只是根据 answer.confidence 决定后续路径:执行、确认、升级人工。如果主模型本身判断能力不足,门控只会让升级变得频繁,不会把错误答案变对。这也是为什么它不能当准确率来用。
三、四个 Pattern 该选哪一个
官方的 Patterns 列表里同时有 Speculative fan-out、Composite scoring、Intent routing 和 Confidence-gated routing。我把它们的适用场景和关键信号整理如下(自己整理,依据为官方 Pattern 页面):
| 场景 | 选哪个 Pattern | 关键信号 |
|---|---|---|
| 单次调用并行评估多个潜在问题,减少 round trip | Speculative fan-out | 多个 Question 同时发,代码判断相关性 |
| 入口请求分流到确定性逻辑、专业 LLM 或人工 | Intent routing | intent.choice + intent.confidence,必要时再看复杂度 |
| 多维度排序或评分,权重需要可调 | Composite scoring | 多个 Score 加权合成 |
| 执行前风险门控,决定是否自动行动 | Confidence-gated routing | answer.confidence 作为第二轴 |
这四者不是互斥的。一个完整 Agent 链路可以先用 Intent routing 分类,再对高风险动作套 Confidence-gated routing,同时用 Speculative fan-out 把多个问题并行取回。
四、第三方 60 例基准:校准比准确率更值得看
第三方 60 例基准报告 是一个社区二手来源,不是官方数据。作者用 60 个手工标注样例,测试 Jev 对 Agent 工具调用风险的分类:readonly、destructive、privileged、exfiltration。
(社区二手,非官方)报告给出的结果是:整体准确率 91.7%(55/60);clear 样例 34 个 100%;ambiguous 样例 14 个 71.4%;adversarial 样例 12 个 91.7%。更值得看的是置信度分布:40/60 的答案 confidence 恰好为 1.000,且这些全对;错误答案的 confidence 都低于 1.000。0.9–1.0 区间有 50 个样本,准确率 98%,其中有一个 0.97/0.98 的错误,但它不是 1.000。
(自己推算)这意味着“恰好 1.000 且错误”在该样本中为 0;“高置信度但不是 1.000”仍可能出错。所以如果你要自动执行高风险动作,把阈值设为“必须等于 1.000”会比“大于 0.9”更稳,但前提是你的任务分布接近这个基准。门控的真正价值就在这里:把少数低 confidence、容易错的模糊输入挡掉,而不是把整体准确率再提高几个点。
五、落地清单:从保守阈值开始,把模型版本写进日志
以下是我自己的实践建议,不构成官方推荐数值。
- 阈值先保守:先按官方 Confidence 页的 0.5 作为“模型真的不确定”的最低线,高风险动作先设到 0.9 以上或只允许人工。生产环境不要直接抄 0.6/0.85/0.9,必须用自己的标注集测试。
- 低置信度必须有兜底:低 confidence 不能继续静默使用原 answer。要么转人工,要么请求用户确认,要么走规则系统。兜底路径要可见、可审计。
- 记录模型版本:响应中如果有模型标识字段,要和
confidence、choice、probabilities一起写进日志,用于后续模型升级或阈值漂移分析。本次给定来源里没有直接看到jev-1.13.0这个示例值,第三方基准只提到jev-latest和jev-preview。具体字段名以你实际 API 返回为准。 - 按天统计低置信度占比:如果低 confidence 比例突然升高,可能是模型漂移、输入分布变化或 prompt 劣化。这是一个质量指标,不是性能指标。
- 把门控做成纯函数:输入 answer,输出 action,方便离线回放和测试。
代码块示例:
def gate_action(action):
if action.confidence < 0.5:
return "route_to_human" # 模型不确定,不行动
if action.choice == "check_balance":
return "auto_show_balance" # 低风险,0.5 即可
if action.choice == "approve_transfer":
if action.confidence >= 0.9:
return "confirm_then_execute"
return "ask_user_to_confirm" # 高风险,中等置信度先确认
return "route_to_human"
# 日志字段建议:ts, choice, confidence, model_version, outcome
这里的 0.5 和 0.9 只是演示值,来自官方 Confidence 页的示例,不是默认生产阈值。
这次没核实的
- 未能核实官方示例中的
jev-1.13.0这个模型版本字段值;本次提供的官方 Confidence 和 pattern 页面代码块里都没有打印该值。 - 官方 pattern 页没有直接说“不是替换主模型”,这是我从示例和上下文中得出的判断,不是官方原句。
- 第三方 60 例基准的标签、ECE 复算和错误归因未独立验证;只能作为社区二手参考。
- 官方没有给出适用于所有领域的固定 confidence 阈值,只有示例阈值和“按风险测试调整”的方法。
参考来源
- 官方 Confidence 文档:https://docs.typesafe.ai/confidence
- 官方 Confidence-gated routing:https://docs.typesafe.ai/patterns/confidence-routing
- 官方 Speculative fan-out:https://docs.typesafe.ai/patterns/fan-out
- 官方 Composite scoring:https://docs.typesafe.ai/patterns/composite-scoring
- 官方 Intent routing:https://docs.typesafe.ai/patterns/intent-routing
- 第三方 60 例基准报告:https://webofmike.com/jev-benchmark/
评论区
登录后可评论。