JJev Cookbook
课程首页 中文文档 拓展阅读 英文原文 ↗

置信度

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

TypeSafe 返回的所有 Score 和 Choice 答案都包含一个 probabilities 属性,表示在各个选项(Choice)或等级(Score)上的概率分布。正是这个分布的形状告诉你模型有多确定:集中于某个结果意味着答案很确定,分散则意味着不确定。

答案的 confidence 属性将这个形状压缩成一个 0 到 1 之间的单一数字,你可以直接基于它设置阈值,而无需自己计算。(Noul 答案不带这个属性。)

置信度由概率推导而来

confidence 是根据答案已经给出的概率分布计算出的统计量。TypeSafe 会替你完成计算,并在每个 Choice 和 Score 答案中返回它,因此常见场景无需你在本地做任何额外工作。

🔭 本页原本包含一个交互式组件(ConfidenceExplorer),为动态应用;请移步原站对应页面体验。
📝注意

一个可靠的默认值: 我们提供 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 的置信度下限会拦下所有模型报告为真正不确定的情况。在此基础上,未经确认就执行操作的阈值,对破坏性操作要高于只读操作。你的代码负责编码风险容忍度。

📝注意

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

🔬 交互实验室
改一改 state 或问题再运行,观察概率与置信度如何变化。默认运行本地演示(离线可用、 非真实模型输出,仅演示答案形状);填入 API Key 可尝试直连真实 API(官方暂未开放跨域时会给出一键复制的本地调用代码);也可一键到官方 Playground 在线试跑。 配套讲解见本页上方内容与「深入学习」素材。
Key 仅保存在本浏览器(localStorage),不会上传到本站。留空 = 本地演示。
📓 内嵌教程 · 第 2 章 · 置信度实验笔记本
像运行 notebook 一样逐步学习:点「下一步」逐格展开——代码格会先出现再"运行"出结果。内容来自教程仓库配套笔记本。
0 / 72
📖 想看带真实 API Key 的完整运行与源文件: 第 2 章 · 置信度实验笔记本(GitHub)↗
配套中文参考文档:docs.typesafe.ai 的社区翻译,以英文原文为准;内容版权归原作者所有。