置信度
机器翻译译自英文(docs.typesafe.ai)本页 22 段已全部译完
文档索引
在以下地址获取完整的文档索引:https://docs.typesafe.ai/llms.txt 使用此文件可以在进一步探索之前发现所有可用页面。
置信度
TypeSafe 如何报告确定性、它与概率有何不同,以及如何利用它来控制系统行为。
来自 TypeSafe 的所 Score 和 Choice 答案均包含一个 probabilities 属性,代表选项(针对 Choice)或等级(针对 Score)上的概率分布。该分布的 形状 揭示了模型的确定程度:集中在一个结果上意味着高置信度的答案,分散则意味着不确定。
答案的 confidence 属性将该形状折叠为 0 到 1 之间的单一数值,因此你可以直接基于它设置阈值,而无需自己进行数学计算。(Noul 答案不包含此属性。)
置信度源自概率
confidence 是一个从答案已提供的概率分布中计算出的统计量。TypeSafe 为你计算它,并在每个 Choice 和 Score 答案中返回它,因此常见情况无需你进行额外工作。
Note
推荐的默认策略: 我们提供 confidence 作为适合大多数用例的便捷指标,但你永远不受限于此定义。根据你所评估的内容,不同的指标可能更适合你,而这正是我们在响应中为你提供完整 probabilities 的原因。不同计算的优缺点是一个专业话题,我们将保留在单独的 cookbook 中,而非此页面;待 cookbook 完成后我们会在此添加链接!
对于 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 的置信度下限可捕捉模型报告的任何真正不确定的情况。在此之上,破坏性操作的免确认操作阈值高于只读操作。你的代码编码了风险承受能力。
Note
正确的阈值取决于你的领域以及模型在你用例中的表现。从保守的阈值开始,使用你自己的数据进行测试,并根据观察到的结果进行调整。