很多线上问题,不是自己系统直接挂了。
而是第三方接口突然不稳定。
比如:
- 短信服务超时
- 支付渠道返回 502
- 地图接口限流
- OCR 服务响应很慢
- 物流接口偶发失败
- 企业微信 webhook 返回异常
- 风控接口超时导致下单卡住
这类问题最烦人的地方在于:
你的代码没报错,但用户体验还是坏了。
这篇文章演示一个很实用的 AI 工作流:
把第三方接口文档、调用代码、错误日志、超时配置和业务影响交给 AI,让它生成兜底、重试和降级方案。
这里的重点不是让 AI 替你选供应商。
重点是:
让 AI 帮你把哪些失败能重试、哪些要降级、哪些必须人工处理提前写清楚。
为什么这个场景适合 AI
第三方接口兜底很适合 AI 辅助。
第一,失败类型比较固定。
常见失败包括:
- 网络超时
- 连接失败
- 5xx
- 429 限流
- 参数错误
- 签名错误
- 余额不足
- 业务状态不允许
- 响应格式变化
这些错误不能都用同一种处理方式。
第二,业务影响需要分级。
同样是第三方失败,影响可能完全不同。
比如:
- 短信验证码失败,用户无法登录
- 物流轨迹失败,可以稍后再查
- 风控接口失败,可能影响下单安全
- 企业微信通知失败,不一定影响主流程
AI 可以帮你把“必须成功”和“可以稍后补偿”分开。
第三,兜底方案可以模板化。
我们不需要一句:
加重试和降级。
我们需要:
- 超时设置
- 重试条件
- 重试次数
- 幂等键
- 降级结果
- 用户提示
- 告警指标
- 人工处理队列
示例场景
假设下单流程里调用风控接口:
接口:
POST /risk/check
用途:
判断订单是否有欺诈风险。
当前逻辑:
下单时同步调用风控接口。
风控通过后才创建订单。
问题:
最近风控接口偶发超时,导致用户提交订单卡住 10 秒后失败。
错误日志:
RiskClient timeout after 10000ms
如果只说“加个重试”,风险很大。
因为要继续确认:
- 下单接口能不能等 10 秒
- 风控失败时能不能先创建订单
- 是否可以进入人工审核
- 重试会不会重复创建风控记录
- 哪些错误不能自动放行
- 用户应该看到什么提示
不推荐的提问方式
不建议这样问:
第三方接口不稳定怎么办?
这个问题太泛。
AI 很容易回答:
- 加超时
- 加重试
- 加熔断
- 加降级
都对,但落不到你的业务。
更好的方式是把接口用途、错误类型、业务影响和当前代码一起给 AI。
推荐工作流
我建议把第三方接口兜底拆成 7 步:
接口用途 -> 失败类型 -> 业务影响 -> 重试条件 -> 降级策略 -> 告警监控 -> 人工处理
对应到 AI 任务:
- 总结第三方接口在业务链路里的作用。
- 按错误类型分类。
- 判断每类错误是否可重试。
- 判断失败时能否降级。
- 给出用户提示和系统状态。
- 设计监控和告警。
- 补充人工处理和补偿方案。
关键是:
第三方失败不能只问技术怎么兜底,还要问业务能不能接受这个兜底。
可复用 Prompt
我在仓库里放了模板:
templates/third-party-api-fallback-prompt.md
你可以把第三方接口说明、调用代码、错误日志、超时配置和业务约束粘进去,然后要求 AI 输出:
## API Role
## Failure Types
## Business Impact
## Retry Policy
## Fallback Plan
## Monitoring
## Open Questions
一次更好的输出
对于上面的风控接口,一个比较好的 AI 输出应该类似这样:
## API Role
risk/check 是下单前风险判断接口,当前属于主链路同步依赖。
接口超时会直接导致用户无法提交订单。
## Failure Types
| Failure | Retry | Fallback |
| --- | --- | --- |
| timeout | Yes | 可进入待审核 |
| 5xx | Yes | 可进入待审核 |
| 429 | Yes, backoff | 可短暂排队 |
| signature error | No | 阻塞并告警 |
| risk rejected | No | 按风控拒绝处理 |
## Retry Policy
- 下单同步链路最多重试 1 次。
- 总等待时间不超过 2 秒。
- 异步补偿任务可以继续重试。
- 使用 orderRequestId 作为幂等键。
## Fallback Plan
- 风控 timeout 或 5xx 时,不直接创建已确认订单。
- 创建状态为 PENDING_REVIEW 的订单。
- 用户提示:订单已提交,正在审核中。
- 风控恢复后由异步任务补查结果。
## Monitoring
- risk_timeout_rate
- risk_5xx_rate
- pending_review_order_count
- risk_check_latency_p95
- fallback_order_count
## Open Questions
- 业务是否允许风控失败时进入待审核?
- PENDING_REVIEW 订单是否会占库存?
- 审核失败后如何通知用户?
这个输出不会替你决定业务策略。
但它把技术兜底和业务后果放在了一张纸上。
可以继续自动化的地方
第三方接口兜底可以接入代码评审。
最小版本可以这样:
third-party client code + error logs -> AI fallback review
进一步可以接入:
- 第三方接口文档
- 错误码表
- 调用监控
- 超时配置
- 重试队列
- 事故复盘
比如:
PR 新增外部 HTTP 调用 -> AI 自动检查超时、重试、降级和监控
或者:
第三方超时告警 -> AI 输出临时降级和恢复后补偿清单
注意事项
第三方接口失败时,最怕把所有错误都自动重试。
我建议遵守几个原则:
- 参数错误、签名错误不要自动重试。
- 重试必须有总超时时间。
- 有副作用的接口必须带幂等键。
- 降级结果必须被业务接受。
- 兜底路径也要有监控和告警。
尤其要避免这种方案:
失败就重试 3 次。
更好的写法是:
timeout 和 5xx 在 2 秒总预算内重试 1 次;仍失败则创建待审核订单,并由异步任务补查风控结果。
结论
AI 在第三方接口兜底里的价值,不是替你写重试代码。
更实用的用法是:
把失败类型、业务影响、重试策略、降级结果和监控指标整理成方案。
第三方不稳定不可避免。
让 AI 先帮你把“失败时系统应该怎么活下去”写清楚。
这样下次接口抖动时,团队不会只剩下等对方恢复。