Files
pikasTech-unidesk/docs/MDTODO/details/sub2api-upstream-reliability/R2.2.2_Task_Report.md
T

3.4 KiB
Raw Blame History

R2.2.2 任务报告

目标

执行三项客户错误调优:

  1. 处理 gpt-5.4-nano 无候选。
  2. 为 429 临时不可调度规则加入真实上游关键词 upstream rate limit exceeded
  3. 增加仅匹配 concurrency limit exceededupstream service temporarily unavailable 的 504 规则。

同时按用户追加要求增强精准批量 runtime API。

模型能力结论

通过 Sub2API 原生账号接口 GET /api/v1/admin/accounts/:id/modelsPOST /api/v1/admin/accounts/:id/models/sync-upstream 检查账号 15、19、27-34

  • 所有账号当前 model_mapping 均不包含 gpt-5.4-nano
  • 可实时同步的账号 19、27、28、32、33、34 的上游模型列表均不包含该模型。
  • 账号 29、30、31 的上游模型同步返回 HTTP 403,不能据此声明支持。
  • lyon9801 为 OAuth 账号,Sub2API 原生同步接口明确不支持该类型,当前映射也不包含该模型。

因此没有创建虚假的 nano -> mini 或同名映射。当前池的 /v1/models 不宣称支持 gpt-5.4-nano,直接请求继续快速返回无候选 404。后续只有真实上游模型列表或实测请求证明支持时,才通过显式 model-mapping CRUD 加入。

配置调优

YAML 模板 codex-upstream-failover 保持一分钟冷却,并累计为六条状态规则:

  • 429concurrency limit exceededupstream rate limit exceeded
  • 500failed to validate api keydo request failed
  • 502、503、524:保留前序已验证的上游不可用、过载和并发关键词。
  • 504:仅 concurrency limit exceededupstream service temporarily unavailable

通过受控 runtime CLI 对账号 19、27-34 dry-run 后确认下发。逐账号回读均为 ruleCount=6、状态码 429/500/502/503/504/524,且匹配模板。账号 15 lyon9801 保持 ruleCount=0,没有应用临时不可调度。

CLI 增强

新增:

  • runtime models --account <id>:同时显示脱敏 model_mapping、配置模型和原生上游实时模型。
  • runtime apply|delete --kind model-mapping:显式单账号模型映射 CRUD,默认 dry-run。
  • runtime apply|delete --accounts <id-or-name,...>:一次受控作业内按显式账号集合顺序执行,拒绝隐式 all、重复账号和非 API-key 账号。
  • 批量默认输出压缩为账号 ID、名称、change、mode、mutation 和汇总计数;--full/--raw 保留完整计划。

批量验收命令精确选择账号 19,27,28,29,30,31,32,33,34,结果为 requestedCount=9succeededCount=9mutatedCount=0,全部 noop,且未包含账号 15。

即时观察

调优后拉取 20 分钟 runtime 错误窗口:

  • 匹配 12 个日志事件。
  • 结构化上游状态为 502 一次、524 六次。
  • 账号 27 仍出现四次并发限制文本,但该窗口跨越配置下发时刻,不能用于评价新规则最终效果。
  • 账号 33 有一次 gpt-5.6-sol 与 ChatGPT Codex 账号不兼容的 400,属于独立模型路由问题。
  • 未观察到配置写入造成的新类型异常。

父任务 R2.2 继续用后续完整窗口观察客户可见错误率、切号和冷却命中效果。

验证

  • bun --check scripts/src/platform-infra-sub2api-codex/runtime.ts:通过。
  • git diff --check:通过。
  • 九账号 runtime dry-run、confirm、逐账号 get:通过。
  • 精准批量 dry-run:通过。
  • 20 分钟 runtime errors:通过。