litellm-gateway/TODO.md

169 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# TODO — LiteLLM Gateway
> 建立时间2026-04-10
> 负责人:西莉雅 (Sileya)
---
## 背景
### 问题
- MiniMax M2.7 频繁返回 529服务过载导致 session 被 terminate
- Agent 的 API Key 存在泄漏风险(直接写在配置里)
- 没有额度管控agent 滥用无法控制
- 缺少统一日志,无法追踪用量
### 目标
在 OMVNas/Proxmox节点上部署 LiteLLM Gateway实现
1. MiniMax API 安全代理key 集中管理)
2. 模型自动回落M2.7 → M2.5 → M2.5-Lightning
3. per-key 额度管控
4. 完整 API 管理接口用量查询、key 生成/封禁)
5. Sileya Skill 化(通过 API 动态管理)
---
## 部署规划
### 部署节点
- **OMV (Open Media Vault)** — 运行在 NAS 上的 Proxmox 容器
- 或者直接跑在 Nas 本身(推荐,更简单)
### 模型路由策略
```
优先: MiniMax-M2.7
↓ 529 / 超时 / 500
备用: MiniMax-M2.5
↓ 529 / 超时 / 500
兜底: MiniMax-M2.5-Lightning
```
### 双 Key 隔离
- `sk-sileya-fixed` — 西莉雅的专属 key指向固定 model group**不动 config.yaml 就永远不受影响**
- `sk-admin-*` — 管理员 key可动态管理其他 key
### 热更新策略
| 操作 | 是否需要重启 |
|------|------------|
| `/key/generate` 生成新 key | ❌ 不需要 |
| `/key/block` 封禁 key | ❌ 不需要 |
| `/model/new` 动态加模型 | ❌ 不需要 |
| 改 fallback 策略 / 模型顺序 | ⚠️ 需要(但不频繁,重启 < 5s|
---
## 待办事项
### P0 — 必须完成(网关可用)
- [ ] **DEPLOY-01**: OMV/Nas 上安装 Python 环境 + pip install litellm
- [ ] **DEPLOY-02**: 配置 `config.yaml`MiniMax provider + fallback 路由 + virtual key
- [ ] **DEPLOY-03**: 配置 `.env`MINIMAX_API_KEY + LITELLM_MASTER_KEY
- [ ] **DEPLOY-04**: 启动验证 curl 测试 `/health`
- [ ] **DEPLOY-05**: OpenClaw 接入 修改 `openclaw.json` model provider 指向 LiteLLM
### P1 — 管控能力
- [ ] **MGMT-01**: 生成各 agent 的专属 key`sk-sileya-fixed`、`sk-ligoudan`、`sk-nico`
- [ ] **MGMT-02**: 配置 per-key RPM 限制(各 agent 独立额度)
- [ ] **MGMT-03**: Sileya Skill `lite-llm-admin`(用量查询、key 管理接口)
- [ ] **MGMT-04**: 验证 hot reload 测试 `/key/generate` 不影响 Sileya session
### P2 — 安全加固
- [ ] **SEC-01**: 网络隔离 LiteLLM 仅内网可访问,Tailscale/ZeroTier 组网
- [ ] **SEC-02**: 确认 Sileya key 配置在 `config.yaml` 固定区域,不参与动态更新
- [ ] **SEC-03**: 审计日志 确认所有请求记录到数据库
### P3 — 可选优化
- [ ] **OPT-01**: LiteLLM Dashboard`:4000/ui`)启用,Web UI 管理
- [ ] **OPT-02**: Prometheus metrics 接入(Grafana 监控)
- [ ] **OPT-03**: provider 预留 对接其他 LLMClaude/GPT)时网关层无需修改
---
## 关键配置
### config.yaml 核心结构
```yaml
model_list:
- model_name: MiniMax-M2.7
litellm_params:
model: minimax/MiniMax-M2.7
api_key: os.environ/MINIMAX_API_KEY
api_base: https://api.minimax.io/v1
rpm: 60
- model_name: MiniMax-M2.5
litellm_params:
model: minimax/MiniMax-M2.5
api_key: os.environ/MINIMAX_API_KEY
api_base: https://api.minimax.io/v1
rpm: 60
- model_name: MiniMax-M2.5-Lightning
litellm_params:
model: minimax/MiniMax-M2.5-Lightning
api_key: os.environ/MINIMAX_API_KEY
api_base: https://api.minimax.io/v1
rpm: 120
router_settings:
fallback_params: [{"model": ["MiniMax-M2.7", "MiniMax-M2.5", "MiniMax-M2.5-Lightning"]}]
num_retries: 3
retry_after: 5
timeout: 30
general_settings:
master_key: os.environ/LITELLM_MASTER_KEY
```
### Sileya Key 专属配置(不参与动态更新)
```yaml
# config.yaml 中的 sileya 专属区
# 此区域修改需要重启,但这种情况极低频
```
---
## API 接口
### 管理 APIadmin key
```
POST /key/generate — 生成新 key
GET /key/info?key=sk-xxx — 查询 key 用量
GET /spend — 查询总用量
POST /key/block — 封禁 key
POST /key/unblock — 解封 key
POST /model/new — 动态添加模型(热生效)
```
### 对外 APIagent 使用)
```
POST /v1/chat/completions — 标准 OpenAI 兼容接口
GET /health — 健康检查
```
---
## 目录结构
```
litellm-gateway/
├── README.md
├── TODO.md
├── config.yaml # 主配置
├── .env.example # 环境变量模板
├── requirements.txt # Python 依赖
├── run.sh # 启动脚本
└── docs/
├── CONFIG_GUIDE.md
├── DEPLOYMENT.md
└── SKILL_INTEGRATION.md
```
---
## 里程碑
- [ ] **M1**: LiteLLM OMV 上跑通,health check 通过
- [ ] **M2**: Sileya 通过 LiteLLM 代理访问 MiniMaxfallback 验证通过
- [ ] **M3**: 所有 agent 迁移到独立 key 体系
- [ ] **M4**: Sileya Skill `lite-llm-admin` 可用,日常管理无需手动操作