错误与限流

OctaRouter 通过 octafuse-gateway 转发推理请求。错误分为两类:到达上游前的网关校验,以及 转发后的上游响应(含故障转移)。

透传原则: 一旦请求到达上游供应商,HTTP 状态码与 JSON 响应体遵循该供应商的官方 API——不是自定义的 OctaRouter 封装。网关自身生成的错误使用简单的 { "error": "..." } 字符串。

网关生成的错误

这些错误发生在 任何上游调用之前(鉴权、模型查找、路由、预算)。响应体始终为:

{ "error": "message" }
状态何时出现
401缺少 API Key、Key 无效或已撤销
403预付费预算耗尽(Budget exceeded
404当前网关部署找不到该模型 ID(Model not found
400JSON 非法、缺少 model,或请求的路由组没有可用路由
502该协议没有可用上游路由、路由失败,或连接供应商网络错误(Upstream request failed 等)

说明:

  • 预算超限返回 403,不是 402。
  • 404 表示网关不认识该模型 ID——不是上游“模型不存在”错误。
  • 修复时请检查 API Key、账户余额、模型 页上的模型 ID,以及请求体形状。

上游错误(透传)

路由成功后,网关会把请求转发给一个或多个上游供应商(同一路由组内按优先级故障转移)。

行为细节
上游非 2xx(含 429尝试组内下一条路由;若全部失败,返回 最后一次上游响应原样(状态码 + 响应体)
网络 / fetch 失败尝试下一条路由;若全部失败,网关返回 502,body 为 { "error": "Upstream request failed" }
响应体供应商原生 JSON——例如 OpenAI { "error": { "message", "type", "code" } }、Anthropic { "type": "error", "error": { ... } }、Gemini 的 Google 风格 JSON

请求校验、流式、工具错误等 API 语义,请遵循你所用协议的 官方文档(链接见 API 协议)。

限流(429)

网关 不会 自行施加 API 限流,也不会自己返回 429。

429 来自 上游供应商,表示你超出了他们的配额或吞吐。如果故障转移路由也返回 429,你会原样收到最后一个供应商的 429 响应。

客户端处理 429 的建议:

  • 使用带抖动的指数退避
  • 降低并发或请求速率
  • 查看上游错误体中的重试提示(Retry-After、error code 等)

OctaRouter 不单独定义的内容

OctaRouter 文档不会维护一份独立的上游错误码目录。请求转发之后,以供应商响应为准。

成功响应同样按供应商原生形态透传(网关侧会做模型映射、注入供应商凭证等改写——见 API 协议)。