← 返回 2026-10-02 简报

模型升级路由中的置信度阈值

Confidence Thresholds for Model Escalation Routing

语音播报
摘要
事件:OpenRouter 发布指南,介绍基于模型自报置信度分数的路由机制,将请求在廉价与昂贵模型间动态分配。 要点:强制使用结构化 JSON 输出获取 0-1 数值分数;利用自身流量数据设定阈值,依据错误率上升点划分,而非依赖绝对概率校准。 影响:开发者可显著降低调用成本,避免对简单任务支付前沿模型高价,同时确保复杂问题获得更强模型支持,提升性价比与准确性平衡。

将所有请求发送给最强的模型能获得最好的回答,但代价最高,因为对于本可由更便宜模型正确回答的请求,你仍需支付前沿模型的费率。固定的路由规则(例如按关键词或任务类型选择模型)成本较低,但随着流量变化需要重新编写。

基于置信度的升级机制介于两者之间。你要求模型对其自己的回答进行评分,然后根据该分数进行路由。得分高的回答留在便宜的模型上,得分低的回答则发送给更强的模型。本指南通过五个步骤来设置这一机制。

简而言之

基于置信度的升级机制根据模型为其自身回答报告的分数来路由每个请求,因此便宜的模型处理它确信正确的请求,而更强的模型仅处理它不确定的请求。

使用结构化输出来强制生成分数。要求包含数值型置信度字段的 JSON 模式可以从所有模型中获得相同的信号,而不是从自由文本中的模糊措辞中猜测。

使用排名而非绝对数值。0.85 并不代表校准后的 85% 正确概率。在你自己的流量数据中检查较低分数的回答是否比高分数的回答更常出错,并据此进行路由排序。

根据你的数据设定阈值。将具有代表性的流量通过便宜模型运行,查看每个分数段的错误率,并将截止点设置在错误率上升的位置。

将阈值视为需要重新审视的设置。记录分数分布、升级率和未升级回答的错误率,并在模型或流量发生变化时重新调整。

置信度分数的含义与局限性

订阅即表示你同意接收 OpenRouter 的新闻通讯:包括模型使用数据、产品更新和研究报道,每周约一封电子邮件。您可以通过每封电子邮件中的链接随时退订。请参阅我们的隐私政策。

该分数是一种自我报告。模型以生成其余回答的相同方式生成它,因此它带有相同的不确定性。两个相同的分数并不能保证具有相同的正确概率。一个提示词下的 0.85 并不等同于另一个提示词或来自其他模型的 0.85,且该数值并非校准后的概率。

一旦你验证了排名,就可以使用它。将一批你自己的请求通过便宜模型运行,对回答进行评分,并按分数分组。如果较低分数段的回答比较高分数段的回答更常出错,那么即使绝对数值不可用,这种排序也可用于路由。你寻找的不是等于 90% 正确的分数,而是区分可以发送的回答和需要二次调用的回答的排名位置。第二步就是进行这项测量。

步骤 1:使用结构化输出获取数值型置信度字段

不要从自由文本中解读不确定性。没有任何东西要求模型在不确定时使用模糊措辞,也不存在固定的模糊词汇表可供解析。

相反,让模型返回作为模式验证响应一部分的置信度字段,使用结构化输出。你传递类型为 json_schema 的 response_format,并要求同时包含 answer 和介于 0 到 1 之间的数值型 confidence:

{
"model" : "openai/gpt-5.6-luna" ,
"messages" : [
{
"role" : "user" ,
"content" : "..."
}
],
"provider" : {
"require_parameters" : true
},
"response_format" : {
"type" : "json_schema" ,
"json_schema" : {
"name" : "answer_with_confidence" ,
"strict" : true ,
"schema" : {
"type" : "object" ,
"properties" : {
"answer" : {
"type" : "string"
},
"confidence" : {
"type" : "number" ,
"description" : "回答正确的可能性,从 0(猜测)到 1(确定)。"
}
},
"required" : [ "answer" , "confidence" ],
"additionalProperties" : false
}
}
}
}

每个响应现在都携带一个数值型置信度,你的路由代码可以直接读取,无论哪个模型回答了。决定升级什么变成了数值的比较,而不是解析语言。

该模式在字段的描述中说明了0到1的范围,而不是使用最小值和最大值关键字。Anthropic的结构化输出文档将最小值和最大值等数值约束列为不支持项,因此描述形式是唯一能在各提供商之间通用的方式。strict: true 要求具有原生严格模式的提供商严格执行该模式。执行力度因提供商而异,有些提供商将模式视为强提示而非保证,因此在根据解析后的JSON进行路由之前,请务必对其进行验证。

在依赖此功能之前,请进行两项检查。首先,结构化输出支持是针对每个提供商端点设置的,而不是针对每个模型设置的,同一模型可以由支持或不支持该功能的提供商提供服务。请在模型页面中筛选出至少有一个支持端点的模型,并查看模型页面“提供商”部分中的 structured_outputs 参数。其次,在您的提供商偏好设置中设置 require_parameters: true,以便我们仅将请求路由到支持其中所有参数的端点。如果没有该标志,response_format 只是一种软性偏好。当模型具有支持的端点时,我们会将其路由至这些端点;但如果模型的某个端点均不支持它,我们仍会发送请求,而该参数将被忽略。

步骤2:根据您的错误率设定起始阈值

阈值来源于对您自身流量的测量,而非从指南中复制一个数字。使用上述模式通过您的廉价模型运行具有代表性的请求样本,记录置信度分数以及每个答案是否正确,并设置错误率开始上升时的截止点。高于该线的请求在廉价模型上解决。低于该线的请求则升级至更强的模型。

起初应采取保守策略。一开始过度升级并在稍后放宽阈值会浪费资金。而升级不足则会发送自信的错误答案。

以下是一个具体示例。假设您通过廉价模型运行了200个具有代表性的请求,并按分数段对结果进行分组。该表是内部算术一致的说明,而非目标值。您自身的分布会有所不同。

分数段 请求占比 观察到的错误率

0.95 至 1.00 41% 1%

0.85 至 0.94 27% 4%

0.70 至 0.84 18% 11%

0.50 至 0.69 9% 34%

低于 0.50 5% 61%

错误率在低于0.70时急剧上升,因此0.7是候选截止点。0.7的阈值会升级其下方的两个分数段,即14%的请求,并让其余86%的请求在廉价模型上解决。

在此样本中,廉价模型的整体错误率略低于10%。升级底部的14%将您保留的答案的错误率降低至约4%,代价是大约每七个请求中就有一个需要进行第二次调用。在自身流量上运行此分析的目的是找到您自己的截止点,而不是采用0.7。

步骤3:针对准确性、成本和延迟调整阈值

阈值是在升级量与错误率之间进行权衡。提高阈值会使更多请求获得第二次调用,从而捕获更多错误,但成本更高且速度更慢。降低阈值会使更多请求留在廉价模型上,这更快且更便宜,但会放行更多错误答案。设置阈值的位置取决于错误答案对您的产品造成的损失。有三个因素会影响这一选择。

准确性。较高的阈值会将更多边缘情况的答案发送进行第二次调用,从而减少错误答案的发布。在具体示例中,将截止点从0.7提高到0.85也会升级0.70至0.84分数段,该分数段的错误率为11%。升级比例从请求的14%上升至32%,保留答案的错误率从约4%下降至约2%。

成本。每次升级都意味着一次额外的模型调用,这发生在你已经支付的廉价调用之上。具体花费取决于你的廉价模型与升级目标模型之间的价格差距,以及你进行升级的频率。在确定目标升级率之前,请务必查看当前各模型的定价。随着新模型的发布,层级之间的差距和价格本身都会发生变化。

延迟。升级后的请求需要进行第二次往返,因此速度较慢。如果大量流量发生升级,这条慢速路径可能会挤压你的延迟预算。当你的产品有严格的响应时间上限时,这个上限可能会在成本或准确性达到极限之前,限制你能够进行的升级量。

该图表将每个候选截止值应用于示例表格。提高截止值会降低你保留的答案的错误率,但会增加支付第二次调用费用的流量比例。这三个因素并非独立变化。提高准确率阈值总是会增加升级部分的成本和延迟,因此正确的阈值应位于你对错误答案的容忍度、预算和响应时间限制三者交汇之处。

步骤 4:在代码中路由低置信度请求

一旦设定了阈值,你的代码就需要做出升级决策。它读取置信度字段,当分数低于该线时,将请求发送给更强的模型。我们不会替你做出这个决定。我们的模型回退机制仅在模型返回错误时触发,而不是在返回带有低置信度分数的有效答案时触发。有两种方式来构建这种决策逻辑。

在同一函数中重试。将调用包裹在一个函数中。向廉价模型发送请求,读取置信度,如果低于阈值,则将相同的消息发送给更强的模型并返回该答案。升级策略位于一处,因此当你更改阈值或升级目标时,只需更改一次,就不会有调用点继续做出旧的决策。

运行单独的初筛。将廉价模型的调用视为初筛。记录其答案和分数,然后仅在分数低于阈值时才调用更强的模型。这需要更多的代码,但它记录了廉价模型升级的频率,以及其分数是否仍然与实际错误相符,这是你在步骤 5 中重新调整所需的数据。

模型 ID 是字符串,因此你可以通过配置而非代码来更改任一层级。在选择廉价和强效模型时,请浏览我们的模型目录,因为随着新模型的发布,每个层级的最佳选择都会发生变化。

你可以在这两种模式之下叠加错误故障转移。传递一个 models 数组允许在第一个模型返回错误时,调用回退到列表中的下一个模型。默认情况下,任何错误都可以触发回退,包括提供商停机、速率限制、过滤模型上的审核标记以及上下文长度验证错误。我们按最终回答问题的模型对该请求进行定价,并在响应的 model 字段中返回该模型。这与你的置信度升级机制是分开的。它在发生错误时触发,而不是在有效的低置信度答案时触发,因此两者可以组合使用。回退机制确保每次调用都能存活,而你的阈值则决定何时需要更强的模型来处理一个存活的回答。

步骤 5:在生产环境中监控并重新调整

适合发布时的阈值可能会变得不再适用。从第一天起就记录三样东西。

分数分布,以便在模型或流量变化时重新运行步骤 2 的校准。

随时间变化的升级率。

未升级答案的错误率,这个数字告诉你截止值是否仍在发挥作用。

当某些情况发生变化时进行重新调整。将廉价模型或升级目标替换为新版本会改变分数分布。流量向更难或更简单的请求偏移会移动你的错误区间。成本压力可能迫使你为了更低的升级率而接受更高的错误率。阈值是一个你需要随着这些因素变化而不断调整的设定。

常见错误

将自我报告的分数视为校准后的概率。该方法适用于排序,而非字面意义上的可能性。按分数对一批答案进行排序,错误的结果会聚集在低端,但 0.9 并不意味着该答案有 90% 的概率是正确的。应从第 2 步中的“按区间划分的错误率”练习中设定阈值,而不是直接使用原始数值。

对所有任务类型使用单一阈值。回答“你们的退款政策是什么”的支持机器人和回答“如果我今天取消会被收费吗”的机器人,其答错的成本截然不同。使用单一的全局截止点会导致简单情况过度升级或高风险情况升级不足。在你知道任务类型的地方,为每种任务分配各自的阈值。

发布后不监控升级率。适合你校准批次的阈值可能会随着流量变化或底层模型更新而不再适用,且不会有任何错误提示来告诉你这一点。

结论

基于置信度的升级机制在模型报告高置信度时让请求保持在廉价模型上,仅在置信度低时才付费使用更强的模型,无需依赖关键词或任务类型规则。该循环很小。通过结构化输出强制要求数值型置信度字段。根据你自己的按分数区间的错误率寻找截止点,而不是随意选择一个数字。选择符合你追踪需求的路由模式,可以是用于策略的一个函数,也可以是第一遍处理的独立日志。然后在发布后监控未升级答案的错误率,并根据模型和流量的变化进行调整。

常见问题

什么是置信度阈值?

置信度阈值是你将请求发送给更强模型而非接受廉价模型答案的分数下限。高于该线的答案直接发出。低于该线时,请求会升级。你应根据自己的错误率数据设定这条线,而不是使用默认数值。

AI 中的置信度分数是什么?

置信度分数是一个数字,通常在 0 到 1 之间,模型在提供答案的同时报告该数字以表明其确信程度。它是自我报告,而非校准后的概率,因此 0.9 并不意味着有 90% 的正确几率。你可以测量并依赖的是排序结果。在你自己的一批请求中,检查较低分数的答案是否比高分数的答案更常出错,然后再基于分数进行路由。

设置置信度阈值的最可靠方法是什么,以便让轻量级模型处理大部分请求,仅在置信度低时 defer(委托)给高级模型?

针对你自己的流量进行测量。将具有代表性的请求样本通过轻量级模型运行,记录每个置信度分数以及答案是否正确,并按分数区间对结果进行分组。在错误率急剧上升的地方设定阈值。这样,轻量级模型将处理线以上的所有请求,只有线下低置信度的请求才会发送到高级模型。从保守设置开始,然后在你监控所保留答案的错误率时进行调整。

如何自动从小模型升级到前沿模型?

让小模型通过结构化输出返回数值型置信度字段,然后让你的代码基于该字段进行路由。当分数低于你的阈值时,将相同的请求发送给前沿模型,可以在同一函数中内联执行,或作为显式的第二次调用。OpenRouter 的模型回退是一个独立的功能。它在出现提供商停机或速率限制等错误时将调用失败并重试其他模型,而不是针对低置信度分数,因此请保持这两种机制的独立性。

参考文献

本条评分 9.9 score-v1
  • 来源权威 8
    注册表 priority=8(OpenRouter)
  • 时效 1.945
    发布 22.5 小时前,衰减到 1.94/3.0
  • 多源印证 0
    只有 1 家在报(无旁证)
  • 社区信号 0
    无社区数据(本管线走 RSS,HN 的 hn_fetcher 未接入)

首次收录 · 2026-10-02 · 9.95 分

原文链接:https://openrouter.ai/blog/insights/confidence-thresholds-for-model-escalation-routing/
来源:OpenRouter
以上内容由 AI 自动翻译,仅供参考。
← 返回简报