上线前检查
真实用户进来之前,逐项检查。
密钥与令牌
- 项目密钥只放在你的服务器上——绝不放进应用或代码仓库。见鉴权。
- 每个服务或环境各用一个密钥,这样作废其中一个不会影响其他。
- 用户令牌的有效期不长于你的应用所需(最长一天),令牌过期时由你的后端重新签发。
- 用户离开你的产品时,你的后端作废他的令牌或停用他。
重试
- 创建会话、发送消息和发起生成都带上
Idempotency-Key,这样重试永远不会把工作做两遍。 -
429 rate_limited按Retry-After等待;5xx按指数退避重试,加随机抖动并限制次数。 - 因输入被拒绝的请求(
429以外的4xx)不原样重试。
事件流
- 事件流用
Last-Event-ID(设为最后一帧的id)重连——连接结束时、最长 10 分钟后,以及 45 秒什么都没收到时。见事件流。 - 任务结束的每一种方式都有处理:
task.completed、task.stopped和task.failed。
错误
- 你的代码按
error.code判断,绝不按message判断。 - 每个错误都连同它的
request_id记进日志,反馈问题时能随手拿出来。见错误。
限制与积分
- 你的应用预期每个会话一次只跑一个任务(
409 session_busy),以及其他限速。 - 有人在控制台盯着项目余额;工作因
429 insufficient_credits被拒绝时,你的应用会清楚地告诉用户。见积分与计费。
文件
- 上传的文件在 30 天内被发进消息或用于生成——没用过的到期后会失效。见文件。
版本
- 你清楚版本怎么变化,以及旧版本能继续用多久。见版本与兼容。