稳定调用与密钥安全
上线前
逐步增加上下文与并发
先确认单条短请求成功,再逐项增加上下文、并发或运行时间。出现问题时,回到最近一次成功的设置做对照。
✓ 长输出优先使用流式输出(
stream: true),并分别设置连接、首字节和总任务超时。✓ 大项目分阶段处理,不要一次发送完整仓库、历史会话和大量日志。
✓ 每个项目和环境使用独立 API 密钥,便于统计、限额、轮换和禁用。
✓ 从低并发开始逐步增加;用队列设置上限,不创建无界并发。
✓ 先记录请求时间、模型 ID、接口路径、状态码和追踪标识,再记录经过脱敏的错误内容。
✓ 重要任务先小范围测试,确认调用日志和费用正常后再长时间运行。
出现异常请求、API 密钥泄露或不认识的调用日志时,先在控制台禁用对应密钥并创建新密钥。不要在工单、截图或聊天记录中发送完整密钥。
重试边界
限制重试次数与范围
重试不是越多越好。重复生成可能产生额外费用;已经收到部分流式输出时,不要自动重放整次请求。
可以有限重试明确为临时限流的 429、可恢复的 5xx,或确认可以安全重发的网络错误。优先遵循
Retry-After,设置最大尝试次数和总任务时限。不要自动重试400、401、403、404,以及明确为额度、周期用量或预算限制的 429。先核对参数、密钥、权限和额度;原因未知时不连续重试。
停止条件达到最大次数、已经收到部分输出、超过总任务时限,或同一错误持续出现。
指数退避伪代码
最多尝试 3 次
先识别错误原因,并设置总任务时限
如果 429 明确表示额度或预算限制:停止,检查额度规则
如果响应包含 Retry-After:在总时限内按它等待
否则等待:基础间隔 × 2^尝试次数 + 随机抖动
仅在临时限流、可恢复的 5xx 或可安全重发的网络错误时重试
如果已经收到部分流式输出:停止自动重试并记录日志
如果是 400、401、403、404:立即停止,修正配置
安全与日志
隔离密钥并脱敏日志
密钥存放放在服务端密钥管理、部署平台 Secret 或本地环境变量;不要进入前端包和 Git 历史。
密钥隔离开发、测试、生产分开;项目之间分开。泄露时只影响一个范围。
日志允许保留API 密钥名称或末尾少量字符、模型 ID、接口路径、状态码、时间、请求追踪标识。
日志必须删除完整 Authorization 请求头、完整 API 密钥、用户隐私、未授权的提示词和文件内容。
联系客服前先确认:最小请求能否复现、调用日志是否有记录、错误是否发生在同一模型和接口路径。这样比只发送客户端弹窗更容易定位。