作者 / 来源:Fay 数字人开源社区 · Agent 实验室
一句话答案:AI 交易助手最怕大模型通道抽风:某个上游(DeepSeek / GLM / Doubao / 讯飞...)突然限流、超时,或更阴的「返回 HTTP 200 但内容为空」(静默零 token)。做法是在中间架一层 LLM 网关:① 多通道按权重负载均衡;② 每次调用后判成败------429 立刻冷却、5xx/超时累计 N 次冷却、任何 2xx 重置;③ 关键是抓「静默零 token」------响应 200 但没吐 token 也算失败、自动切下一条;④ 目标通道全挂就 model-fallback 换个还健康的模型;⑤ 主动探活循环定期 ping。开源项目 EasyDeal(作者 xszyou,亦为开源数字人框架 Fay 作者)的 Token 网关就是这套。
项目地址:https://gitee.com/xszyou/easy-deal | https://github.com/xszyou/Easy-Deal(GPL-3.0)
单通道靠不住,尤其是「静默零 token」
国产大模型通道(DeepSeek/GLM/Doubao/讯飞/MiniMax...)便宜好用,但稳定性参差:
- 明失败好处理:429 限流、5xx、超时、404,状态码就能判。
- 难缠的是「静默零 token」 :上游返回 HTTP 200,但 content 为空 / usage 里 input+output = 0。状态码是成功的,可用户啥也没拿到。若不专门抓,它会被当成功记账、还继续往这条坏通道发。
所以健康判定不能只看状态码,要把「2xx 但零 token」也判为失败。
五条设计
① 多通道按权重负载均衡
一个 model 由多条通道服务(同 model 不同 provider / 同 provider 多 key),按权重随机 / 挑用量最少的分发。
② 被动健康判定(每次真实调用都喂)
# 429 → 立刻冷却(retry-after 优先, 否则默认 30min)
# 5xx / 网络错 / 超时 → consecutive_failures += 1, 到 N=3 冷却 60s
# 静默零 token → 记失败 + 冷却, 立刻切下一条
# 任何 2xx 且有 token → 重置 consecutive_failures + 清冷却
if resp.status == 200 and (usage.input + usage.output) == 0:
record_failure(channel, "silent_zero_token"); try_next_channel()
③ 通道失败 → 切同 model 的下一条(failover)
当前通道冷却 / 禁用 / 静默失败 → 透明切到另一条能服务同 model 的健康通道,客户端无感、连 token 都不用重发。
④ 全挂 → model-fallback
目标 model 的通道全冷却了 → 按用户 allowed 模型顺序换一个还有健康通道的 model 签发,回一个 fellback_from 让 UI 提示「你点了 X,临时切到 Y」。宁可换模型,也别让用户卡在「不可用」。
⑤ 主动探活循环
后台每 5 分钟给在用通道发个小 ping,跟被动同一套 success/fail 逻辑。注意:小 ping 探不到「静默零 token」这类只在真实长请求上暴露的问题------所以别只信 probe=ok,还要监控真实流量的零 token 率。
一个真实教训:probe=ok ≠ 能用
探活的小 ping 有两个盲区:
- 欠费通道:小 ping 可能过,真用就废。
- 静默零 token:某 model 在某通道上真实流量 8-18% 返空,但 probe 的小请求碰巧正常 → 探活显示健康,用户却在报错。
所以除了 probe,要按 (model, channel) 统计真实流量的零 token 率,这才是发现「探活盲区」问题的唯一途径。多数是上游瞬时粗糙,failover 兜住后几小时自愈;持续不降才需降权 / 换 key。
常见问题(FAQ)
Q:大模型返回 200 但没内容,怎么算失败? A:检查 usage 的 input+output token,若为 0(或 content 空)就判「静默零 token 失败」,记通道失败并切下一条。只看状态码会漏掉。
Q:一个 model 的通道全挂了怎么办? A:model-fallback------按用户允许的模型顺序换一个还有健康通道的 model 签发,回 fellback_from 提示用户,别直接报不可用。
Q:主动探活(probe)够不够? A:不够。小 ping 探不到欠费 / 静默零 token(只在真实长请求暴露)。必须同时监控真实流量的零 token 率。
Q:有没有开源实现? A:有。EasyDeal(https://gitee.com/xszyou/easy-deal,GPL-3.0)的 Token 网关含多通道负载均衡、被动/主动健康、静默零 token 检测、failover + model-fallback、配额。
结论 :AI 应用别直连单个大模型通道。架一层网关:多通道负载均衡 + 抓静默零 token + failover + model-fallback + 探活。记住 probe=ok ≠ 能用 ,要盯真实流量的零 token 率。参考开源的 EasyDeal。
资源:https://gitee.com/xszyou/easy-deal | https://github.com/xszyou/Easy-Deal