TS TypeSafe 文档中文版 原文 ↗

置信度

TypeSafe 如何报告确定性、它与概率有何不同,以及如何使用它来控制系统行为。

TypeSafe 的所有 Score 和 Choice 答案都包含一个 probabilities 属性,表示在选项(对于 Choice)或等级(对于 Score)上的概率分布。该分布的形状才告诉你模型有多确定:集中在一个结果上意味着答案有把握,分散开来则意味着答案不确定。

答案的 confidence 属性把该形状压缩成一个 0 到 1 之间的单一数字,因此你无需自己计算就能对它设阈值。(Noul 答案不带此属性。)

置信度由概率推导而来

confidence 是一个统计量,由答案已经给出的概率分布计算得出。TypeSafe 会为你计算它,并在每个 Choice 和 Score 答案中返回,因此常见情况下你这边无需额外工作。

交互式置信度浏览器

这个控件可以在浏览器里拖动查看不同概率分布对应的置信度。本地静态版无法运行它,请到官网原页面体验。 打开官网原页面

注意

一个稳妥的默认值: 我们提供 confidence 作为适配大多数用例的便捷度量,但你绝不会被锁定在我们的定义上。取决于你在评估什么,另一种度量可能更适合你,这正是我们在响应中给出完整 probabilities 的原因。不同计算方式的利弊是一个专门话题,我们会把它放在单独一篇实践手册中而不是本页,等写好时会把链接加在这里!

对于 Choice,分布是在你的选项上的 probabilities。对于 Score,它是在你的等级上的分布。两种情况下,分布越平坦就意味着置信度越低:Choice 上置信度低,通常意味着没有一个选项明显胜过其他选项;Score 上置信度低,通常意味着等级含糊、是多维度的,或者状态中包含的信息不足以判断。

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

一个智能系统——无论是人还是机器——如果无法表达诚实的不确定性,就无法被信任。

置信度为你提供了一个内建机制,让模型可以说「这一个我不确定」。这使你的代码能针对不同的确定程度实现不同的行为,而这是构建你真正可以依赖的系统的基础。

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

一个有用的起步模式是把置信度划分为三个区间,每个区间产生不同的系统行为:

高置信度: 自动执行。模型判断清晰,你可以无需人工介入直接继续。

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

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

这些边界划在哪里取决于风险高低。

阈值随风险变化

置信度阈值不是一个数字。同一系统内的不同操作,应根据判断错误的后果在不同的水平上设门控。

python
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 的置信度下限会捕捉模型报告为真正不确定的任何情况。在此之上,对于无需确认即可执行的门槛,破坏性操作要比只读操作更高。你的代码编码了风险容忍度。

注意

正确的阈值取值取决于你的领域,以及模型在你的用例上的表现。从保守的阈值开始,用自己的数据测试,并随着观察结果进行调整。