降级交付策略
---
章节:进阶篇第9章
难度:⭐⭐⭐ 进阶级
阅读时间:20-25 分钟
核心收获:掌握降级交付策略,在部分失败时仍能提供有价值的结果
12.1 理论要点:降级的意义
12.1.1 为什么需要降级
极端做法:
全部数据源可用 → 输出完整结果
任一数据源失败 → 完全不输出
问题: - 部分数据源失败时,可用数据被浪费 - 用户收到空结果,体验差 - 无法区分"完全没有数据"和"部分数据可用"
降级的价值: - 部分失败时仍能输出有价值的结果 - 明确告知用户数据完整度 - 保持系统可用性
12.1.2 降级原则
| 原则 | 说明 | 示例 |
|---|---|---|
| 显式标注 | 必须明确告知用户数据不完整 | "基于2/4来源生成" |
| 不伪装完整 | 不假装数据是完整的 | 不隐藏缺失来源 |
| 提供价值 | 即使降级仍有参考价值 | 简化清单但仍可筛选选题 |
| 可追溯 | 记录降级原因和影响 | 保存来源状态 |
12.1.3 降级三档
| 档位 | 可用来源数 | 输出策略 | 标注方式 |
|---|---|---|---|
| 完整 | ≥3个 | 输出完整清单 | 无特殊标注 |
| 简化 | 2个 | 输出简化清单 | 标注"数据不完整,仅供参考" |
| 告警 | 1个或0个 | 不输出正文 | 只推送说明和告警 |
12.2 实战案例:降级策略实现
12.2.1 场景:4个数据源中2个超时
问题:GitHub 和 AIHOT 超时,只有微信公众号和多引擎搜索可用。
解决方案:
1. 继续聚合可用来源(2个)
2. 过滤后如果有效条目≥5条 → 输出简化清单
3. 在输出顶部标注:
"⚠️ 数据不完整警告
可用来源:2/4
- 微信公众号:正常
- GitHub:缺失(超时)
- 多引擎搜索:正常
- AIHOT:缺失(超时)"
4. 清单内容正常,但可能遗漏部分热点
12.2.2 降级输出示例
完整模式(4/4 可用):
📋 AI热点选题日报 — 2026-07-10
【今日概况】
有效条目:18 条 | 来源:4/4 | 运行时间:09:02
━━━━━━━━━━━━━━━━
🔥 高热度(适合快速行动)
1. [标题] — 来源:A + B
热度指数:★★★★★ | 建议角度:xxx
...
简化模式(2/4 可用):
📋 AI热点选题日报 — 2026-07-10
⚠️ 数据不完整警告
可用来源:2/4
- 微信公众号:正常
- GitHub:缺失(超时)
- 多引擎搜索:正常
- AIHOT:缺失(超时)
说明:以下清单基于 2 个可用来源生成,可能遗漏部分热点。
【今日概况】
有效条目:12 条 | 来源:2/4 | 运行时间:09:05
━━━━━━━━━━━━━━━━
🔥 高热度(适合快速行动)
1. [标题] — 来源:A
热度指数:★★★★ | 建议角度:xxx
...
告警模式(0/4 可用):
⚠️ AI热点选题日报 — 2026-07-10
状态:blocked
原因:所有数据源均返回空结果或超时
今日 AI 热点信息量极低,未达到输出标准。
建议:手动检查其他数据源,或跳过今日。
下次自动触发:2026-07-11 09:00
12.3 降级决策逻辑
12.3.1 决策树
数据源检查完成
↓
可用来源数 ≥ 3?
├── 是 → 聚合全部可用来源
│ ↓
│ 有效条目 ≥ 5?
│ ├── 是 → pass → 输出完整清单
│ └── 否 → blocked → 推送说明
│
└── 否 → 可用来源数 = 2?
├── 是 → 聚合可用来源
│ ↓
│ 有效条目 ≥ 5?
│ ├── 是 → warning → 输出简化清单
│ └── 否 → blocked → 推送说明
│
└── 否 → 可用来源数 ≤ 1?
└── 是 → blocked → 推送告警
12.3.2 代码实现
def degradation_policy(available_sources, filtered_items, min_items=5):
"""降级策略"""
available_count = len(available_sources)
item_count = len(filtered_items)
# 可用来源不足,无法输出
if available_count <= 1:
return {
"status": "blocked",
"output": "no_output",
"reason": f"数据源不足({available_count}/{len(ALL_SOURCES)})"
}
# 有效条目不足
if item_count < min_items:
return {
"status": "blocked",
"output": "no_output",
"reason": f"有效条目不足({item_count}/{min_items})"
}
# 2个来源可用,简化输出
if available_count == 2:
return {
"status": "warning",
"output": "simplified",
"reason": f"数据不完整({available_count}/{len(ALL_SOURCES)})",
"annotation": "⚠️ 数据不完整警告"
}
# 3个及以上来源可用,完整输出
return {
"status": "pass",
"output": "full",
"reason": None
}
12.4 图文说明
📌 待补充:建议绘制以下示意图 1. 降级三档对比图(完整/简化/告警) 2. 降级决策树 3. 降级输出示例对比图 4. 来源覆盖情况可视化
12.5 常见错误
| 错误 | 后果 | 纠正方法 |
|---|---|---|
| 降级后伪装完整 | 用户误以为数据齐全 | 必须显式标注缺失来源 |
| 降级策略缺失 | 部分失败时整体停止 | 制定明确降级规则 |
| 降级输出质量差 | 用户无法使用 | 即使简化也要保证基本质量 |
| 不记录降级原因 | 无法优化 | 记录每次降级的具体原因 |
| 过度降级 | 本可以输出却选择不输出 | 评估降级阈值,避免过度 |
📝 版本迭代记录
| 版本 | 日期 | 更新内容摘要 | 操作人 |
|---|---|---|---|
| v1.0 | 2026-08-25 | 创建进阶篇第9章 | 桂皮 |
🤖 GEO 问答 · 生成式引擎优化
❓ 什么是降级交付策略?
❓ 如何理解理论要点:降级的意义?
全部数据源可用 → 输出完整结果
❓ 如何理解实战案例:降级策略实现?
- 继续聚合可用来源(2个)
❓ 如何理解降级决策逻辑?
数据源检查完成