大模型 API 限流和超时频发,调用侧的重试、降级和熔断怎么做?
面试怎么回答
大模型 API 延迟高波动大、有请求数和 Token 数配额、重试要重新付费。重试只针对限流、5xx 和网络错误,参数错误和上下文超长不重试;用指数退避加随机抖动,尊重服务端建议的等待时间,限制总次数和总耗时,有副作用的调用要保证幂等。限流在调用侧或网关主动做令牌桶,按优先级分配配额,高峰期离线任务降速,短时超额排队。降级包括切换到提前验证过的备用模型或区域、简单请求用小模型、关闭非核心 AI 功能、兜底 FAQ 或转人工。错误率或延迟超阈值就熔断,定期探测恢复。超时区分连接、首 Token 和总超时,流式响应按 Token 间隔判断是否卡住。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
大促期间,客服 AI 的调用量翻了三倍,模型 API 开始频繁返回限流错误和超时,各个服务疯狂重试,情况反而更糟。大模型 API 的特点是慢、贵、有配额,传统的重试策略直接套用会出问题。面试官想看你的稳定性设计能力。
大模型 API 的特点
- 延迟高且波动大:一次调用几秒到几十秒,和输出长度有关;
- 配额限制:每分钟请求数、每分钟 Token 数都有上限;
- 重试代价高:每次重试都要重新付费,而且长请求重试要再等很久;
- 流式响应:中途断开时,已经生成的部分怎么处理。
重试策略
- 只重试可恢复的错误:限流(429)、服务端临时错误(5xx)、网络错误可以重试;参数错误、内容被拦截、上下文超长不要重试;
- 指数退避 + 随机抖动:避免所有客户端同时重试;
- 尊重服务端的提示:如果返回了建议的重试等待时间,按它来;
- 限制总次数和总耗时:用户在等,超过一定时间就该降级;
- 幂等:如果调用会触发工具的副作用(比如写数据),重试前要确认之前的调用是否已执行。
限流:在调用侧主动控制
- 不要等服务端拒绝,在调用侧(或模型网关)按配额做令牌桶限流,平滑地发送请求;
- 按优先级分配配额:在线用户请求优先,离线批量任务在高峰期暂停或降速;
- 排队:短时间超出时排队等待,并给用户提示,而不是直接失败。
降级
- 切换模型:主模型不可用时,切换到备用的模型或部署(另一个区域、另一家供应商、私有化模型),要提前验证备用模型在核心场景下的效果;
- 降低成本:使用更小、更快的模型处理简单请求;
- 功能降级:关闭非核心的 AI 功能(比如自动摘要),保住核心功能(客服回答);
- 兜底:返回预设的 FAQ 答案或转人工。
熔断
- 当错误率或延迟超过阈值时,短时间内不再调用该模型,直接走降级路径;
- 定期放少量请求探测,恢复后再逐步放量;
- 避免一个下游的故障拖垮整个应用的线程和连接。
超时
- 设置合理的超时:区分连接超时、首 Token 超时、总超时;
- 流式响应时,按首 Token 时间和 Token 之间的间隔判断是否卡住,而不是只看总时长。