Skip to content

AI API 生产环境配置指南:超时、重试、429、降级与日志

开发环境里“一次请求成功”不等于生产可用。AI API 的生产问题通常来自超时、限流、上游波动、流式连接中断、Key 泄露和重试放大,而不是 SDK 语法本身。

本文给出一套与 OpenAI-compatible API 兼容的工程检查清单。通过 api.clawsocket.com 接入时,具体限额、模型列表、计费和上游路由请以控制台与服务公告为准。

生产配置总表

项目建议起点必须监控的指标
连接超时5-10 秒连接失败率
总请求超时按模型和任务设定,避免无限等待P50/P95/P99
重试次数仅对可重试错误,最多 2-3 次重试率、重试后成功率
429 处理读取 Retry-After,指数退避加抖动限流次数、排队时间
5xx 处理短暂退避,必要时切备用模型上游错误率
幂等性为可重试任务生成请求 ID重复执行数
日志脱敏记录元数据,不记录密钥和敏感 Prompt脱敏命中率、关联 ID

超时:区分连接、首 token 和总时长

至少把超时拆成三类:连接超时、首 token 超时、总响应超时。一个流式请求可能很快建立连接,但模型迟迟没有输出;也可能首 token 很快,后续输出卡住。

ts
const controller = new AbortController()
const timeout = setTimeout(() => controller.abort(), 60_000)

try {
  const response = await fetch('https://api.clawsocket.com/v1/chat/completions', {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${process.env.CLAWSOCKET_API_KEY}`,
      'Content-Type': 'application/json',
      'X-Request-Id': crypto.randomUUID()
    },
    body: JSON.stringify({
      model: process.env.AI_MODEL,
      messages: [{ role: 'user', content: 'health check' }]
    }),
    signal: controller.signal
  })
  if (!response.ok) throw new Error(`AI API status ${response.status}`)
} finally {
  clearTimeout(timeout)
}

超时值应根据任务类型配置:短文本问答、代码 Agent、长文档总结和批处理不应共用一个固定值。

重试:只重试确定安全的错误

不是所有失败都能重试:

错误是否默认重试原因
DNS、连接重置、408请求可能尚未到达上游
429Retry-After 或退避等待
500、502、503、504谨慎重试可能是短暂上游故障
400请求格式或参数需要修复
401、403Key、权限或账户配置问题
404 model not found先修正模型 ID

建议使用指数退避并加入随机抖动,避免大量请求在同一时间再次打到网关:

ts
function backoff(attempt: number) {
  const base = Math.min(8_000, 500 * 2 ** attempt)
  return base + Math.floor(Math.random() * 300)
}

对写入数据库、发送邮件、执行代码等有副作用的工具调用,重试前必须有幂等键或业务去重,否则可能重复执行。

429 限流:不要把重试变成流量放大器

收到 429 时应:

  1. 优先读取响应中的 Retry-After
  2. 没有该字段时使用指数退避。
  3. 在应用侧设置并发上限和队列。
  4. 超过最大等待时间后返回可理解的降级结果。
  5. 记录模型、Key 分组、租户和请求类型,定位是哪一层限流。

不要在客户端、任务队列和网关 SDK 三层同时无限重试。总重试预算应由一个地方统一控制。

降级与模型路由

降级不是“失败后随便换模型”,而是预先定义质量和成本边界:

主任务备用路线适用条件
复杂代码分析更快或更低成本模型可接受质量下降
长文档总结支持长上下文的备用模型保留必要上下文
实时客服低延迟模型先保证响应速度
图片输入支持视觉的备用模型先检查模态能力

模型 ID、能力和价格可能变化。通过 ClawSocket 控制台 查看当前可用模型后,再固化路由表,不要把文章里的示例名称直接用于生产。

流式响应的生产注意事项

流式输出要处理:

  • 客户端断开时取消上游请求,避免继续消耗资源。
  • 记录首 token 时间和完整响应时间。
  • 对半截响应标记为失败,不要当作成功缓存。
  • 处理 SSE 心跳、结束事件和代理缓冲。
  • 对重连设计幂等策略,避免重复显示或重复执行工具。

日志与 API Key 安全

推荐记录以下元数据:request_id、租户 ID、模型 ID、状态码、输入输出 Token、首 token 延迟、总耗时、重试次数和错误分类。

不应记录:完整 API Key、Authorization Header、用户原始隐私数据、完整系统 Prompt、工具调用中的凭据。

Key 管理最低要求:

做法建议
存储Secret Manager 或部署平台密钥
权限按项目、环境和团队拆分
轮换定期轮换,旧 Key 设置过渡期
暴露浏览器和移动端不要放长期 Key
泄露立即吊销并检查调用日志

上线前检查清单

  • [ ] 已在 快速接入 跑通最小请求
  • [ ] 已确认模型 ID、协议、模态和计费
  • [ ] 已区分 4xx、429、5xx 和网络超时
  • [ ] 已设置总超时、并发上限和重试预算
  • [ ] 已为有副作用的请求设计幂等键
  • [ ] 已验证流式中断与客户端取消
  • [ ] 已为主模型定义可接受的备用路线
  • [ ] 已脱敏日志并配置告警
  • [ ] 已准备 Key 轮换和紧急回滚流程

如果你的项目还处在迁移阶段,先看 OpenAI SDK 迁移到统一 API 网关,再把本文的稳定性配置加入灰度环境。

参考资料

Last updated:

本站为独立第三方信息与服务站点,非 OpenAI、Google、Anthropic 官方网站,与上述品牌无官方隶属关系 · 免责声明