AI 产品兜底链(Fallback Chain)设计
AI 产品兜底链(Fallback Chain)设计
之前写过一些关于垂直领域AI内容规范的RICE框架(具体请见:https://blog.csdn.net/qq_43081349/article/details/161383800 )。最近了解了一些关于AI产品兜底链的设计,感觉与RICE框架中输出内容可信输出治理可以形成比较好的诠释、配合、补充。我首次接触到这个概念的来源:抖音@Nova AI产品经理。Big S/O!
一、核心概念
兜底链是 AI 产品中保障输出质量与可用性的核心机制。当模型输出的置信度不足时,系统沿预设的层级路径逐级降级,从"最优方案"逐步回退到"兜底方案",确保用户始终能获得可用结果。
二、Confidence 评分体系
Confidence评分体系是针对模型产出内容的可置信度评估,也是这套兜底策略的核心驱动。具体方式有下列几种,不同场景可以通过实施不同的单一、组合策略覆盖。
2.1 Logprobe(对数概率)
利用 LLM 输出的 token-level log probabilities 计算整体置信度。
confidence = exp(Sum log_prob(token_i) / N) // 几何平均
或
confidence = Sum log_prob(token_i) / N // 算术平均(更常用)
实现要点:
- 对关键 token(非标点、非停用词)加权
- 区分"生成内容"和"格式 token"的权重
- 常见阈值:
0.7~0.85为合格线
优缺点:
- 计算成本低,无需额外推理
- 与模型"确定性"直接相关
- 高概率不等于高正确性(模型可能自信地犯错)
- 仅适用于支持返回 logprobs 的模型
2.2 Self-Consistency(自洽性)
同一 prompt 多次采样(temperature > 0),检查输出一致性。
confidence = count(most_common_answer) / total_samples
实现要点:
- 采样次数通常 3~7 次(5 次是常用平衡点)
- 适用于有明确答案的任务(分类、数学、代码生成)
- 对开放式生成任务效果有限
变体:
- 跨模型自洽:用不同模型采样,提升robust
- 思维链自洽:对 CoT 推理的中间步骤也做一致性检查
优缺点:
- 直接衡量答案稳定性
- 不依赖模型内部概率
- 计算成本高(N 倍推理)
- 模型可能一致地犯错
2.3 LLM-Judge(LLM 评审)
用一个独立的"评审模型"对输出质量打分。
judge_score = LLM_judge(prompt, response, criteria)
常见评审维度:
| 维度 | 说明 | 典型 prompt |
|---|---|---|
| 准确性 | 事实是否正确 | “请评估回答的事实准确性,1-5分” |
| 相关性 | 是否切题 | “回答是否直接回应了用户问题” |
| 完整性 | 是否遗漏关键信息 | “是否覆盖了所有必要方面” |
| 安全性 | 是否有害内容 | “检查是否存在不安全内容” |
| 有用性 | 是否实际可操作 | “用户能否据此采取行动” |
优缺点:
- 语义层面评估,更接近人类判断
- 可定制评审标准
- 额外推理成本
- 评审模型本身可能不准确
2.4 组合评分策略
final_confidence = alpha * logprobe_score
+ beta * self_consistency_score
+ gamma * llm_judge_score
其中 alpha + beta + gamma = 1
示例权重配置:
- 事实性任务:
alpha=0.3, beta=0.4, gamma=0.3 - 创意性任务:
alpha=0.2, beta=0.2, gamma=0.6 - 代码生成:
alpha=0.2, beta=0.5, gamma=0.3
三、兜底链层级定义(L0-L3)
| 场景 | 策略 | 用户感知 | 流量占比 | 延迟增量 | 成本增量 |
|---|---|---|---|---|---|
| L0 | 直接输出 | 无 | 90%+ | 0 | 0 |
| L1 | 自动降级 | 无 | ~80% | +0.5~3s | +1~3x |
| L2 | 确认式交互 | 低 | ~15% | +2~5s | +1~2x |
| L3 | Human-in-loop | 高 | ~5% | 分钟级 | 人工成本 |
L0:直接输出
模型输出 confidence 达标,直接返回,零额外开销。
L1:自动降级(用户无感)
核心原则:在用户完全不知情的情况下,自动提升输出质量。
策略矩阵(按成本从低到高):
| 策略 | 说明 | 延迟 | 成本 | 适用场景 |
|---|---|---|---|---|
| Few-shot 注入 | 动态插入相似示例到 prompt | +0.1s | 极低 | 格式/风格问题 |
| Prompt 重构 | 换用更详细的 system prompt | +0.1s | 极低 | 理解偏差 |
| 约束解码 | 限定输出空间(grammar/regex) | +0.2s | 低 | 结构化输出 |
| 切换更强模型 | 小模型->大模型 | +0.5~2s | 中 | 通用兜底 |
| RAG 增强 | 检索相关文档注入上下文 | +0.5~1s | 中 | 知识密集型 |
| Self-Refine | 模型自我批评后重生成 | +1~3s | 高 | 逻辑/推理问题 |
| 多模型投票 | 2-3 模型并行,取最优 | +1~3s | 高 | 高准确性要求 |
L1 内部级联:
L1 入口
|
+-- 1. Few-shot + Prompt优化 (覆盖 50% L1 流量)
| +-- 成功 -> 输出
| +-- 失败 向下
|
+-- 2. 切换更强模型 (覆盖 30% L1 流量)
| +-- 成功 -> 输出
| +-- 失败 向下
|
+-- 3. Self-Refine / 多模型投票 (覆盖 20% L1 流量)
+-- 成功 -> 输出
+-- 失败 -> 升级到 L2
L2:确认式交互(用户低感知)
核心原则:用预设话术与用户确认意图/答案,用户有轻微感知但不影响体验。
话术模板:
| 类型 | 话术示例 |
|---|---|
| 澄清意图 | “您是想了解关于「{topic}」的内容吗?” |
| 确认答案 | “根据我的理解,答案是 {answer},这是您需要的吗?” |
| 缩小范围 | “这个问题涉及面比较广,您更关心 {option_a} 还是 {option_b}?” |
| 请求补充 | “为了更好地帮您,能否再补充一下关于 {aspect} 的信息?” |
| 提供替代 | “这个问题我暂时无法完全确定,但我可以为您提供 {alternative},需要吗?” |
L2 交互流程:
用户请求 -> 模型输出 -> confidence 不足
|
v
+--------------+
| 生成确认话术 |
| + 候选答案 |
+------+-------+
|
+------v-------+
| 展示给用户 |
| "您是想问..." |
+------+-------+
|
+-----------+-----------+
v v v
用户确认 用户否定 用户补充
| | |
v v v
返回答案 重新理解 更新上下文
重新生成 重新生成
关键设计点:
- 话术尽量自然
- 给出具体选项而非开放式提问
- 最多1-2轮确认,不陷入多轮循环
- 如果用户否定后仍低置信 -> 升级到 L3
L3:Human-in-the-Loop(用户高感知)
核心原则:明确告知用户进入人工处理,管理预期。
触发条件:
- L1 全部策略失败
- L2 确认后仍无法满足
- confidence 直接跌入 L3 区间
实现模式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| 实时人工 | 直接转接人工坐席,实时回复 | 高优先级用户/高价值场景 |
| 异步审核 | 进入审核队列,异步回复并推送通知 | 标准场景 |
| 审核增强 | AI 生成草稿,人工审核/编辑后返回 | 需要 AI 辅助提效 |
用户话术:
- “这个问题比较复杂,我已经转交给专业团队,预计 5 分钟内为您答复。”
- “为了给您最准确的答案,我需要同事帮忙确认一下,请稍候。”
四、分行业 Confidence 阈值矩阵(举例,仅供参考)
医疗健康
| Level | 阈值 | 策略 |
|---|---|---|
| L0 | >= 0.90 | 直接输出(仅限科普类) |
| L1 | 0.80 ~ 0.90 | 自动降级:RAG 增强(医学知识库)-> 切换更强模型 |
| L2 | 0.60 ~ 0.80 | 确认交互:“您描述的症状,我理解是 XXX,建议咨询医生确认” |
| L3 | < 0.60 | 强制转人工/免责声明 + 建议就医 |
阈值最高的原因:涉及生命安全,宁可不答不能错答。
客服对话
| Level | 阈值 | 策略 |
|---|---|---|
| L0 | >= 0.70 | 直接输出 |
| L1 | 0.50 ~ 0.70 | 自动降级:FAQ 检索 -> Few-shot -> 切换模型 |
| L2 | 0.35 ~ 0.50 | 确认交互:“您是想查询订单还是咨询退换货?” |
| L3 | < 0.35 | 转人工坐席 |
阈值偏低的原因:客服容错率相对高,可接受模糊回答后 L2 确认。
金融/法律
| Level | 阈值 | 策略 |
|---|---|---|
| L0 | >= 0.85 | 直接输出(仅限通用知识) |
| L1 | 0.70 ~ 0.85 | 自动降级:知识库 RAG -> 约束解码(限定合规表述) |
| L2 | 0.50 ~ 0.70 | 确认交互:“您咨询的是关于 XXX 的规定,我的理解是…” |
| L3 | < 0.50 | 转人工 + 免责声明 |
阈值偏高原因:涉及财产、交易,需要考虑合规性,慎重给出解答。
内容创作/营销
| Level | 阈值 | 策略 |
|---|---|---|
| L0 | >= 0.65 | 直接输出 |
| L1 | 0.45 ~ 0.65 | 自动降级:Few-shot 风格示例 -> Prompt 优化 |
| L2 | 0.30 ~ 0.45 | 确认交互:“这个方向符合您的预期吗?需要调整风格吗?” |
| L3 | < 0.30 | 提供模板/人工创意支持 |
阈值最低的原因:创意类任务主观性强,无标准答案,容错率高。
教育/解题
| Level | 阈值 | 策略 |
|---|---|---|
| L0 | >= 0.80 | 直接输出答案+解析 |
| L1 | 0.60 ~ 0.80 | 自动降级:Self-Consistency(多次采样投票)-> 切换模型 |
| L2 | 0.40 ~ 0.60 | 确认交互:“这道题的解题思路是 XXX,您需要我展开哪一步?” |
| L3 | < 0.40 | 人工审核答案正确性 |
阈值汇总对比
行业 L0->L1 L1->L2 L2->L3 特点
---------------------------------------------------------
医疗健康 0.90 0.80 0.60 最保守,安全优先
金融/法律 0.85 0.70 0.50 保守,合规优先
代码生成 0.80 0.65 0.45 偏保守,正确性优先
教育/解题 0.80 0.60 0.40 中等,准确性优先
客服对话 0.70 0.50 0.35 偏宽松,体验优先
内容创作 0.65 0.45 0.30 最宽松,创意优先
五、路由(Router)设计
5.1 路由架构
+-------------+
| Request |
+------+------+
|
+------v------+
| Classifier | <- 意图/难度分类
+------+------+
|
+-----------+-----------+
v v v
+---------+ +---------+ +---------+
| 简单任务 | | 中等任务 | | 复杂任务 |
| (小模型) | | (中模型) | | (大模型) |
+----+----+ +----+----+ +----+----+
| | |
+-----------+-----------+
|
+------v------+
| LLM 推理 |
+------+------+
|
+------v------+
| Confidence | <- 单/多维度评分
| Scoring |
+------+------+
|
+------v------+
| 阈值判断 |
+------+------+
|
+---------------+-------------------------------+
| | |
conf >= L0 L1 <= conf conf < L2_L3 |
(L0 区间) < L0 (L1区间) (直接跌入L3) |
| | |
v v v
+----------+ +-------------+ +--------------+
| L0 直接 | | L1 自动降级 | | L3 人工兜底 |
| 输出 | | 循环 | | (终态) |
+----------+ +------+------+ +--------------+
|
+----------------------+
|
v
+============= L1 循环 (策略级联, 任意成功即跳出) =============+
| |
| +--> +------------------+ +--------------+ |
| | | L1-策略1: | | Confidence | |
| | | Few-shot/Prompt |---->| 重新评分 | |
| | +------------------+ +------+-------+ |
| | | |
| | +--------+--------+ |
| | | | |
| | conf >= L0 conf < L0 |
| | | | |
| | v v |
| | +----------+ +------------------+ |
| | | L0 输出 | | L1-策略2: | |
| | | ✓ 跳出 | | 切换更强模型 | |
| | +----------+ +--------+---------+ |
| | | |
| | +------v------+ |
| | | Confidence | |
| | | 重新评分 | |
| | +------+-------+ |
| | | |
| | +--------+--------+ |
| | | | |
| | conf >= L0 conf < L0 |
| | | | |
| | v v |
| | +----------+ +------------------+ |
| | | L0 输出 | | L1-策略3: | |
| | | ✓ 跳出 | | Self-Refine/投票 | |
| | +----------+ +--------+---------+ |
| | | |
| | +------v------+ |
| | | Confidence | |
| | | 重新评分 | |
| | +------+-------+ |
| | | |
| | +--------+--------+ |
| | | | |
| | conf >= L0 conf < L0
| | | | |
| | v v |
| | +----------+ +------------+
| | | L0 输出 | | L1 全部失败 |
| | | ✓ 跳出 | | → 升级 L2 |
| +----------------------------------------+----------+ +-----+------+
| |
+==================================================================+
|
v
+================= L2 循环 (最多2轮, 任意轮达标即跳出) =================+
| |
| +--> +------------------+ |
| | | L2 确认式交互 | |
| | | 生成确认话术 | |
| | | "您是想问...?" | |
| | +--------+---------+ |
| | | |
| | +--------v--------+ |
| | | 用户响应 | |
| | +--------+--------+ |
| | | |
| | +--------+--------+--------+ |
| | | | | | |
| | 确认 否定 补充 超时 |
| | | | | | |
| | v v v v |
| | +------+ +------+ +------+ +----------+ |
| | | 返回 | | 重新 | | 更新 | | 本轮失败 | |
| | | 答案 | | 理解 | | 上下文| | 计为否定 | |
| | | ✓跳出 | | 重生成| | 重生成| +----+-----+ |
| | +------+ +--+---+ +--+---+ | |
| | | | | |
| | +---+----+ | |
| | | | |
| | +------v------+ | |
| | | Confidence |<-------+ |
| | | 重新评分 | |
| | +------+------+ |
| | | |
| | +--------+--------+ |
| | | | |
| | conf >= L0_L1 conf < L0_L1 |
| | | | |
| | v v |
| | +----------+ +--------------+ |
| | | L0 输出 | | 当前轮次 >= 2 | |
| | | ✓ 跳出 | +------+-------+ |
| | +----------+ | |
| | +------+------+ |
| | | | |
| | 是 否 |
| | | | |
| | v | |
| | +-------------+ | |
| | | → 升级 L3 | | |
| | +------+------+ | |
| | | | |
| +-------------------+ +----------------------------------+
| | (回到 L2 顶部, 进入下一轮)
+====================|==================================================+
|
v
+--------------+
| L3 人工兜底 |
| Human-in-loop| <- 终态, 不再升级
+--------------+
关键循环/跳出逻辑说明:
| 阶段 | 循环机制 | 跳出条件 | 升级条件 |
|---|---|---|---|
| L1 内部 | 策略 1 → 策略 2 → 策略 3 级联 | 任意策略后 confidence >= L0 阈值 → L0 输出 | 全部 3 个策略均失败 |
| L2 交互 | 用户确认/否定/补充/超时 → 重新评分 | 用户确认 或 重新生成后 confidence >= L0_L1 | 累计 2 轮仍不达标 |
| L3 兜底 | 人工处理 | 人工给出最终答复 | 终态,不再升级 |
5.2 路由策略
1. 基于任务难度的模型路由
2. 基于置信度的兜底路由(含循环/跳出逻辑)
3. 语义路由(Semantic Router)
5.3 路由决策矩阵
| 维度 | 策略 | 适用场景 |
|---|---|---|
| 任务类型 | 语义路由 | 多领域产品 |
| 任务难度 | 复杂度路由 | 单一领域多难度 |
| 用户等级 | 优先级路由 | 付费/免费用户分层 |
| 延迟要求 | 延迟感知路由 | 实时/异步场景 |
| 成本预算 | 成本感知路由 | 预算敏感产品 |
六、监控与调优
6.1 关键指标(举例,仅供参考)
| 指标 | 目标 | 告警阈值 |
|---|---|---|
| L0 直出率 | > 90% | < 85% |
| L1 自动降级成功率 | > 85% | < 75% |
| L2 确认后解决率 | > 70% | < 60% |
| L3 触发率 | < 5% | > 8% |
| 端到端满意度 | > 4.2/5 | < 3.8/5 |
6.2 可观测性要求
每层路由决策需全量记录以下字段:
request_id: str
industry: str
task_type: str
model_used: str
confidence_scores: dict # {logprobe: 0.72, self_consistency: 0.68, llm_judge: 0.75}
final_confidence: float
fallback_level: str # L0/L1/L2/L3
l1_strategies_attempted: list # ["few_shot", "model_switch"]
l1_strategies_succeeded: str # "model_switch"
l2_user_response: str # confirmed/negated/supplemented
latency_ms: int
cost: float
七、设计原则总结
- 渐进降级:每一层只增加必要的成本和延迟,避免过度补偿
- 用户感知梯度:L1 完全无感 -> L2 轻微感知 -> L3 明确告知
- 行业差异化:阈值按行业风险等级定制,高风险行业更保守
- 可观测性:每层的路由决策、置信度分数、降级原因全量记录
- A/B 友好:阈值和策略可动态配置,支持在线实验
- 成本控制:L3 触发率应控制在 5% 以内,L1 承担 80% 兜底流量
- 快速失败:L1 内部级联不超过 3 步,避免延迟无限增长
- 优雅降级:L3 给用户明确预期,而非沉默失败
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)