限流熔断与降级
模型服务是外部依赖或高成本内部依赖,可能超时、限流、价格波动或不可用。AI 应用必须设计限流、熔断和降级。
# 1. 风险来源
| 风险 | 表现 |
|---|---|
| 模型超时 | 请求长时间无响应 |
| 供应商限流 | 返回 rate limit |
| 并发过高 | 线程和连接耗尽 |
| 成本突增 | 请求被滥用 |
| 模型错误 | 输出格式或内容异常 |
# 2. 限流维度
用户维度
应用维度
租户维度
模型维度
接口维度
IP 维度
限流要区分普通用户、内部系统和高优先级任务。
# 3. 熔断策略
当模型错误率或超时率持续升高时,暂时停止调用该模型。
正常 -> 错误率升高 -> 打开熔断 -> 快速失败或降级
-> 半开试探 -> 恢复正常或继续熔断
熔断可以避免故障扩散到业务系统。
# 4. 降级方案
| 降级方式 | 适合场景 |
|---|---|
| 返回缓存答案 | 热点 FAQ |
| 切换备用模型 | 模型供应商故障 |
| 使用小模型 | 成本或限流压力 |
| 简化上下文 | 上下文过长导致超时 |
| 转人工 | 客服和高风险场景 |
| 关闭非核心功能 | AI 辅助能力不可用 |
# 5. 超时设计
需要区分:
- 连接超时。
- 首 Token 超时。
- 总生成超时。
- 工具调用超时。
- 前端等待超时。
不同任务可以设置不同超时,不要一刀切。
# 6. 常见坑
| 问题 | 后果 |
|---|---|
| 无超时 | 请求堆积拖垮系统 |
| 无用户限额 | 少数用户耗尽额度 |
| 失败无限重试 | 放大故障和成本 |
| 降级无提示 | 用户误以为结果完整 |
| 高低优先级混用 | 核心业务被非核心请求影响 |
# 7. Tips 快问快答
Q:AI 请求失败要不要自动重试?
A:可以,但要限制次数,并避免对不可重试错误重复请求。
Q:流式输出如何处理超时?
A:可以设置首 Token 超时和总生成超时,并在中断时发送明确结束事件。
Q:降级结果要不要告诉用户?
A:建议在不暴露内部细节的前提下提示“当前为简化结果”或“资料不足”,避免误导。
上次更新: 2026/06/25, 17:53:09