用 AI 设计第三方接口兜底:从偶发失败到可恢复方案

2 阅读1分钟

很多线上问题,不是自己系统直接挂了。

而是第三方接口突然不稳定。

比如:

  • 短信服务超时
  • 支付渠道返回 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 任务:

  1. 总结第三方接口在业务链路里的作用。
  2. 按错误类型分类。
  3. 判断每类错误是否可重试。
  4. 判断失败时能否降级。
  5. 给出用户提示和系统状态。
  6. 设计监控和告警。
  7. 补充人工处理和补偿方案。

关键是:

第三方失败不能只问技术怎么兜底,还要问业务能不能接受这个兜底。

可复用 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 输出临时降级和恢复后补偿清单

注意事项

第三方接口失败时,最怕把所有错误都自动重试。

我建议遵守几个原则:

  1. 参数错误、签名错误不要自动重试。
  2. 重试必须有总超时时间。
  3. 有副作用的接口必须带幂等键。
  4. 降级结果必须被业务接受。
  5. 兜底路径也要有监控和告警。

尤其要避免这种方案:

失败就重试 3 次。

更好的写法是:

timeout 和 5xx 在 2 秒总预算内重试 1 次;仍失败则创建待审核订单,并由异步任务补查风控结果。

结论

AI 在第三方接口兜底里的价值,不是替你写重试代码。

更实用的用法是:

把失败类型、业务影响、重试策略、降级结果和监控指标整理成方案。

第三方不稳定不可避免。

让 AI 先帮你把“失败时系统应该怎么活下去”写清楚。

这样下次接口抖动时,团队不会只剩下等对方恢复。