Skip to main content

先确定限制来自哪里

限制可能来自反向代理、网关用户或模型限制、渠道容量以及上游供应商。具体数值和窗口由部署配置决定;不要把 OpenRouter 的套餐限额套用到自己的实例。增加 API Key 不保证增加用户级总额度。 当前 middleware/model-rate-limit.go 的 Redis 拒绝路径会设置秒数形式的 Retry-After,内存实现的拒绝可能没有该头且响应体为空。其他限制路径和上游行为不同,因此不能强制要求每个 429 都有 JSON 错误体或统一的限流响应头。 Retry-After 可以表示秒数,也可以表示 HTTP 日期。它只建议最早再试时间,不保证下一次成功。缺失或无效时使用带随机抖动的退避;等待超过总截止时间时应停止,不要把服务端要求的等待截短后提前请求。

可运行:读取模型列表并记录诊断元数据

保存 examples/diagnostics.mjs 及同目录的 http-client.mjs。在文档目录运行:
API_ROOT_URL 保留部署路径前缀,不包含 /v1。脚本只请求 GET /v1/models;最多 3 次尝试,总截止时间 10 秒,只对 429 / 502 / 503 / 504 重试。网络错误、重定向、其他 HTTP 错误和无效成功响应立即结束。错误体不打印;成功响应最多读取 1 MiB,只输出模型数量。日志写到 stderr,每次收到响应头时记录状态、尝试次数、累计时间和经过格式检查的请求 ID。
本例展示只读操作的有界恢复;不要原样套到生成、上传或任务创建。生成示例保持 maxRetries: 0。即使只读模型查询成功,也没有验证实际推理能力;完整验收见生产接入。

应用侧控制

设置最大并发、排队时长和队列长度;按实际用户或业务任务分配预算。将队列、SDK 和网关内部尝试一起纳入总截止时间。流式已经收到内容时保留中断状态,不静默追加一次重试的内容。任务轮询只重查已有任务,不重新提交原任务。 模型路由 · 请求观测 · 错误处理 Read in English