tzt
f24f016e95
feat(proxy): T-P2 上游客户端(流式派发/usage 注入过滤/三家归一化/首 token 前 failover)
- upstream.py:httpx.AsyncClient 模块级单例(keepalive,limits=100,
超时 connect10/read120/write10/pool30);stream() 始终注入
stream_options.include_usage(计量不依赖客户端)+ filter_usage_chunk
(客户端未要求 usage 时剥除该 chunk);D-P4 首 token 前 failover 链、
流中失败抛 UpstreamAborted(不可切换);ttfb_ms 记录
- normalize_usage 三家归一:deepseek prompt_cache_hit_tokens /
openai prompt_tokens_details.cached_tokens / anthropic cache_read_input_tokens
(命中数>总数时钳制)
- model_pool:+provider(枚举校验 deepseek/openai/anthropic)+in_hit_price
(缺省 = price_in×1/30,D-P3)
- 测试 +6:透传+sink/failover/流中 aborted/全挂 502/三家归一/过滤,全量 345 passed
2026-09-05 09:14:31 +08:00
..
2026-09-05 08:29:20 +08:00
2026-08-30 21:00:52 +08:00
2026-08-12 10:40:04 +08:00
2026-08-30 21:00:52 +08:00
2026-08-30 21:08:45 +08:00
2026-09-01 23:12:26 +08:00
2026-09-02 00:02:24 +08:00
2026-08-30 21:06:34 +08:00
2026-08-30 21:20:00 +08:00
2026-09-01 08:31:47 +08:00
2026-09-01 08:31:47 +08:00
2026-09-05 08:28:25 +08:00
2026-09-05 08:28:25 +08:00
2026-09-05 08:28:25 +08:00
2026-09-01 11:45:33 +08:00
2026-08-30 21:00:52 +08:00
2026-09-05 08:28:25 +08:00
2026-09-05 08:28:25 +08:00
2026-09-05 08:28:25 +08:00
2026-08-30 21:00:52 +08:00
2026-09-01 08:51:52 +08:00
2026-09-05 08:28:25 +08:00
2026-08-30 21:12:03 +08:00
2026-09-05 08:28:25 +08:00
2026-08-30 21:16:02 +08:00
2026-09-05 09:05:59 +08:00
2026-09-05 09:05:59 +08:00
2026-09-05 08:35:31 +08:00
2026-09-05 09:14:31 +08:00
2026-08-30 21:12:52 +08:00
2026-09-05 08:28:25 +08:00
2026-09-01 08:31:47 +08:00
2026-09-05 08:28:25 +08:00
2026-09-02 00:01:33 +08:00
2026-08-30 21:58:41 +08:00
2026-08-30 21:17:22 +08:00
2026-09-05 08:28:25 +08:00
2026-09-01 23:41:45 +08:00
2026-09-01 23:12:26 +08:00
2026-08-30 21:15:19 +08:00
2026-08-30 21:08:45 +08:00
2026-08-30 21:03:52 +08:00