官方 confidence 门控路由:不是准确率,是二阶信号

先说结论

  1. 官方把 confidence 定义为概率分布形状折叠出来的 0~1 统计量,不是一个独立的“准确率”指标;Choice 和 Score 答案都带 probabilities,Noul 答案不带 confidence。
  2. Confidence-gated routing 是在意图识别之后加一层风险门控:高置信度自动执行,低置信度升级给人工或确认。它不替代主模型,只是决定“要不要照答案行动”。
  3. 四种官方 Pattern 边界不同:Speculative fan-out 省 round trip,Intent routing 做入口分流,Composite scoring 做多维打分,Confidence-gated routing 做执行前风控。
  4. 第三方 60 例基准(社区二手)显示高置信度区间很稳、模糊输入容易错;门控价值在于挡掉不确定的那部分,而不是提升准确率。
  5. 落地应从保守阈值开始,记录模型版本和低置信度占比,按天观察校准与漂移。

一、官方怎么定义 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 阈值,只有示例阈值和“按风险测试调整”的方法。

参考来源

评论区

0 条评论

登录后可评论。

星野 56 阅读