fix(BIZ-26): 限流范围收窄到 NVIDIA 网关

- 新增网关识别逻辑:只识别 nvidia / nvidiavx18088980513 为限流目标
- volcengine-plan、siliconflow、deepseek 等非 NVIDIA 网关默认不进入令牌桶
- RequestScheduler 增加 gateway/model 参数与 _should_rate_limit 判断
- 未知网关默认不限流,避免误伤其他通道
- 补充网关范围测试与使用文档说明

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
2026-06-23 16:12:02 +08:00
parent 7f1edfb2fd
commit 4b31322be3
3 changed files with 153 additions and 16 deletions
+34 -10
View File
@@ -11,7 +11,7 @@
本模块实现了 BIZ-13 运行稳定性保障方案中的 API 限流优化功能:
1. **令牌桶限流器**:40 RPM 上限,防止触发 API 429 错误
1. **NVIDIA 网关专用令牌桶限流器**40 RPM 上限,防止触发 NVIDIA 网关 API 429 错误
2. **四级优先级队列**:紧急 > 高 > 正常 > 低
3. **智能降级策略**:高优先级等待,低优先级切备用模型
4. **缓存管理器**:按数据类型设置不同 TTL
@@ -20,7 +20,31 @@
---
## 二、快速开始
## 二、适用范围(已按要求收窄)
**令牌桶限流器只对 NVIDIA 网关 API 生效。**
识别规则:
- `nvidia``nvidia-gateway``nvidiavx18088980513/...` → 进入 40 RPM 令牌桶
- `volcengine-plan/...``siliconflow/...``deepseek/...` → 不进入令牌桶,不受该限流器影响
- 未知网关默认不限制,避免误伤非 NVIDIA 通道
调用方应显式传入 `gateway``model`,例如:
```python
# 走 NVIDIA 网关:限流
scheduler.submit(payload=data, gateway="nvidia", priority=Priority.NORMAL, callback=handler)
scheduler.submit(payload=data, model="nvidiavx18088980513/deepseek-ai/deepseek-v4-pro", callback=handler)
# 走其他网关:不限流
scheduler.submit(payload=data, model="volcengine-plan/ark-code-latest", callback=handler)
scheduler.submit(payload=data, model="siliconflow/Qwen/Qwen3", callback=handler)
scheduler.submit(payload=data, model="deepseek/deepseek-chat", callback=handler)
```
---
## 三、快速开始
### 2.1 基本用法
@@ -87,7 +111,7 @@ print(f"缓存条目:{stats['total_entries']}")
---
## 、API 参考
## 、API 参考
### 3.1 TokenBucket(令牌桶)
@@ -208,7 +232,7 @@ poller.stop()
---
## 、缓存策略
## 、缓存策略
| 数据类型 | TTL | 说明 |
|----------|-----|------|
@@ -219,7 +243,7 @@ poller.stop()
---
## 、降级策略
## 、降级策略
### 5.1 令牌不足时的处理
@@ -242,7 +266,7 @@ poller.stop()
---
## 、监控与调试
## 、监控与调试
### 6.1 查看调度器状态
@@ -267,7 +291,7 @@ print(f"按类别:{stats['by_category']}")
---
## 、测试
## 、测试
运行测试套件:
@@ -286,7 +310,7 @@ python3 scripts/test_rate_limiter.py
---
## 、集成示例
## 、集成示例
### 8.1 与 Multica CLI 集成
@@ -352,7 +376,7 @@ def heartbeat_check():
---
## 、注意事项
## 、注意事项
1. **令牌速率配置**:根据实际 API 限制调整 `rate` 参数
2. **缓存 TTL**:根据数据变化频率调整,避免过期数据
@@ -362,7 +386,7 @@ def heartbeat_check():
---
## 十、TODO
## 十、TODO
- [ ] 接入实际的 Multica CLI 调用
- [ ] 添加 Prometheus 监控指标导出