路由
路由
JoyToken 的路由发生在 api-gateway 内部。网关先校验 API Key 和策略,再把 OpenAI 兼容请求整理成 router-service 的 Route 输入。路由器返回 selected_model 后,网关才会执行钱包预冻结、提供方调用、用量计算和账单记录。
路由输入
Chat 请求会被转换成路由输入:
如果 message content 是数组或对象,网关会先序列化为 JSON 字符串再交给路由器。视觉输入会被识别为 vision 能力标签。
模型选择
model 字段决定网关是否让路由器自动选型,或者把请求约束成固定模型。
Auto routing request
Pinned model request
Tier 选择
JoyToken 当前把 tier 归一化为三档:
实际可用 tier 来自几层约束的交集:
- API Key 创建时绑定的策略快照。
- API Key 自己绑定的
tier。 - 请求体里的
tier。 - 钱包余额和预算预检查。
如果请求体传了不合法的 tier,网关返回 403 policy_rejected。如果请求 tier 不在策略允许范围内,也会被拒绝。
策略约束
网关会从 policy_snapshot_json 和 API Key 绑定字段中组装策略,再传给路由器:
钱包感知回退
如果请求是 model: "auto",并且第一次路由选中的 tier 在钱包预冻结时余额不足,网关会在策略允许范围内尝试重新路由到其他 tier。
这个回退只在 model: "auto" 时触发。固定模型请求如果预冻结失败,会直接返回 402 insufficient_quota。
响应元数据
非流式响应会把路由信息合并进 JSON body 的 metadata。流式响应会在 [DONE] 之前追加一条元数据事件。
Response metadata
成功响应还会带响应头: