文档导航

置信度

置信度

TypeSafe 如何报告确定性、它与概率有何区别,以及如何用它控制系统的行为。

TypeSafe 返回的每个 score(评分)和 choice(选择)答案都带一个 probabilities 属性,表示各选项(choice)或各档位(score)上的概率分布。这个分布的形状说明了模型有多确定:集中在一个结果上,就是有把握的答案;铺得很开,就是没把握的答案。

答案的 confidence 属性把那个形状压缩成 0 到 1 之间的一个数,让你直接拿它做阈值判断,不用自己算。(noul 答案不带这个属性。)

置信度由概率分布推导而来

confidence 是一个统计量,由答案已经给出的概率分布算出。TypeSafe 替你算好,并在每个 choice 和 score 答案上返回,所以常见场景你这边不用额外做任何事。

示例:三个选项的 choice 问题

看概率分布如何改变置信度

置信度

0.85

拖动滑块改变某个选项的概率。其它概率会自动调整,使总和保持 100%。

选中:选项 A

这个演示怎么算置信度

TypeSafe 根据概率在各选项上的铺开程度来计算置信度。全部集中在一个选项上就是 1.0;铺得越均匀,置信度越低。这个演示用 (3 × 最大概率 − 1) / 2 来近似三个选项下的置信度。

对 Choice 来说,分布就是各选项上的 probabilities。对 Score 来说,就是各档位上的分布。两种情况里,分布越平就意味着置信度越低:Choice 上置信度低,通常说明没有一个选项明显胜过其它选项;Score 上置信度低,通常说明档位含义模糊、涉及多个维度,或者状态里给的信息不够。

「我不知道」是个有用的信号

一个智能系统,不管是人还是机器,如果不能诚实地表达不确定,就不值得信任。

置信度给模型提供了一个内置机制,让它能说「这个我没把握」。这样你的代码就能针对不同的确定程度采取不同的行为 —— 这是构建真正可靠系统的基础。

在代码里使用置信度的三条路径

一个有用的起步模式,是把置信度划成三段,每段触发不同的系统行为:

高置信度: 直接行动。模型判断明确,你可以不用人工介入就继续。

中等置信度: 谨慎推进。模型的答案合理,但并不确定。视上下文而定,你可以让用户确认、标记待复核,或者先收集更多信息再行动。

低置信度: 不要行动。路由给人工、请求澄清,或者回退到别的系统。模型是在告诉你:信息不够,或者这个问题不适合它。

这些边界画在哪里,取决于风险有多大。

阈值随风险变化

置信度阈值不是一个数。同一个系统里的不同动作,应该根据出错的后果,按不同水平来设闸。

response = client.system_one(
    state=user_message,
    questions={
        "action": Choice(
            instructions="What is the user trying to do?",
            criteria={
                "check_balance": "View account balance",
                "approve_transfer": "Approve the pending withdrawal request",
                "support": "Get help with an issue",
            },
        ),
    },
)

action = response.answers["action"]
confidence = action.confidence

if confidence < 0.5:
    # Model is genuinely unsure. Don't guess.
    route_to_human(user_message)

elif action.choice == "check_balance":
    # Low stakes. Showing the wrong screen is recoverable.
    show_balance(account_id)

elif action.choice == "approve_transfer":
    if confidence > 0.9:
        # High stakes, high confidence. Proceed with confirmation.
        confirm_then_execute(account_id)
    else:
        # High stakes, moderate confidence. Verify first.
        ask_user_to_confirm(account_id)

0.5 这个置信度下限,能兜住模型确实没把握的一切。在这之上,无需确认即可行动的阈值,对破坏性操作要比只读操作更高。风险容忍度就写在你的代码里。