LiteLLM 自部署 LLM 网关完整指南
如果你在公司里要给团队提供”统一的 LLM 入口”,又不想直接把第三方中转 Key 发给所有人,LiteLLM Proxy 是最佳的中间层。本文给完整部署指南。
一、LiteLLM Proxy 是什么
简单理解:
团队成员 → LiteLLM Proxy(你的服务器)→ 第三方中转 / 官方 → 模型
LiteLLM Proxy 作为内部网关,负责:
- 统一 API(团队成员看到的都是 OpenAI 兼容协议)
- 路由(按模型路由到不同上游)
- 限频(每个 Key 独立 RPM/TPM)
- 用量统计(按用户、项目、模型)
- 预算控制(日 / 月预算上限)
- 审计日志
二、最小 Docker 部署
mkdir litellm && cd litellm
创建 config.yaml:
model_list:
- model_name: claude-sonnet-4-6
litellm_params:
model: openai/claude-sonnet-4-6
api_base: https://yotradeapi.com/v1
api_key: os.environ/UPSTREAM_KEY
- model_name: claude-opus-4-7
litellm_params:
model: openai/claude-opus-4-7
api_base: https://yotradeapi.com/v1
api_key: os.environ/UPSTREAM_KEY
- model_name: gpt-5
litellm_params:
model: openai/gpt-5
api_base: https://yotradeapi.com/v1
api_key: os.environ/UPSTREAM_KEY
- model_name: gemini-2.5-pro
litellm_params:
model: openai/gemini-2.5-pro
api_base: https://yotradeapi.com/v1
api_key: os.environ/UPSTREAM_KEY
general_settings:
master_key: os.environ/LITELLM_MASTER_KEY
database_url: os.environ/DATABASE_URL
跑起来:
docker run -d \
--name litellm \
-p 4000:4000 \
-v $(pwd)/config.yaml:/app/config.yaml \
-e UPSTREAM_KEY=sk-yo-... \
-e LITELLM_MASTER_KEY=sk-master-... \
-e DATABASE_URL=postgresql://litellm:pass@host/litellm \
ghcr.io/berriai/litellm:main-stable \
--config /app/config.yaml --port 4000 --num_workers 4
需要 Postgres 数据库存 Key、用量、预算记录。
访问 http://localhost:4000/health,返回 healthy 即可。
三、给团队成员发 Key
通过 admin API 创建 Key:
curl http://localhost:4000/key/generate \
-H "Authorization: Bearer $LITELLM_MASTER_KEY" \
-d '{
"models": ["claude-sonnet-4-6", "claude-haiku-4-5"],
"max_budget": 50.0,
"user_id": "alice",
"duration": "30d"
}'
返回:
{ "key": "sk-team-alice-xxxx", "expires": "..." }
把这个 key 发给 alice。她在 Cursor / Claude Code 里配:
base_url: http://your-server:4000
api_key: sk-team-alice-xxxx
完事。她以后用什么模型、用多少、有没有超预算,你都能在 admin 后台看到。
四、按用户 / 项目预算
# 项目预算
curl http://localhost:4000/team/new \
-H "Authorization: Bearer $LITELLM_MASTER_KEY" \
-d '{
"team_alias": "research-team",
"max_budget": 500.0,
"models": ["claude-opus-4-7", "claude-sonnet-4-6"]
}'
# 给团队成员发 Key 时绑定 team
curl http://localhost:4000/key/generate \
-d '{
"team_id": "research-team-id",
"user_id": "bob",
"max_budget": 100.0
}'
预算继承机制:
- 团队预算 = 团队下所有用户预算之和的上限
- 用户预算单独受限
- 超额 LiteLLM 自动返回 429
五、路由策略
LiteLLM 支持高级路由:
model_list:
- model_name: best-model
litellm_params:
model: openai/claude-opus-4-7
api_base: https://yotradeapi.com/v1
api_key: os.environ/UPSTREAM_1_KEY
model_info:
tpm: 100000 # 这个上游的 TPM
- model_name: best-model
litellm_params:
model: openai/claude-opus-4-7
api_base: https://backup-relay.example.com/v1
api_key: os.environ/UPSTREAM_2_KEY
router_settings:
routing_strategy: usage-based-routing-v2
fallbacks:
- best-model: ["claude-sonnet-4-6"] # 失败时降级
逻辑:
- 同
model_name多个 entry → 自动负载均衡 - 主上游挂了 → fallback 模型
- 按 TPM 智能路由(usage-based)
这样团队不感知具体上游切换,自动 high availability。
六、用量统计与告警
LiteLLM 内置 Prometheus exporter:
general_settings:
enable_prometheus: true
curl http://localhost:4000/metrics
接到 Grafana 看:
- 总请求数
- 按用户 / 团队 / 模型分布
- 错误率
- p50 / p95 延迟
- token 消耗
配 alertmanager 触发钉钉 / 企微:
- 团队日预算 80% → 提醒
- 错误率 > 5% → 紧急
七、日志与审计
litellm_settings:
set_verbose: false
json_logs: true
log_redis_response: false
drop_params: false
所有请求记录到数据库与 stdout。敏感场景关闭 prompt body 记录:
litellm_settings:
redact_user_api_key_info: true
turn_off_message_logging: true
八、跟现有工具的对接
Cursor
Custom Endpoint: http://your-litellm:4000
API Key: sk-team-xxx
Model: claude-sonnet-4-6
Claude Code
LiteLLM 默认是 OpenAI 兼容协议,Claude Code 需要 Anthropic 协议。LiteLLM 支持:
export ANTHROPIC_BASE_URL="http://your-litellm:4000"
export ANTHROPIC_AUTH_TOKEN="sk-team-xxx"
LiteLLM 自动协议转换。
CI/CD
CI 用一把独立的 LiteLLM Key,设较低预算:
env:
OPENAI_API_KEY: ${{ secrets.LITELLM_CI_KEY }}
OPENAI_API_BASE: http://litellm.internal:4000
九、生产部署注意
- 数据库高可用:用 RDS / Neon 等托管 Postgres
- 多副本:跑 3 副本前面挂 nginx,避免单点
- TLS:内部也用 HTTPS,至少 mTLS
- Master Key 严格保护:写进 secrets manager,不要文件
- 定期备份:所有 Key 与用量数据
- 监控延迟:Litellm Proxy 自身延迟应 < 100ms
十、LiteLLM vs 直接用中转
| 维度 | 直接用中转 | LiteLLM Proxy |
|---|---|---|
| 部署 | 0 | 需要服务器 + DB |
| 团队管理 | 看中转后台 | 自己控 |
| 多上游 | 不便切换 | 简单 |
| 用量审计 | 中转后台 | 完全自主 |
| 数据隐私 | 看中转 | 内部 |
| 适合规模 | 个人 / 小团队 | 中大型团队 |
简单结论:
- 个人 / 小团队:直接用中转
- 中大型团队(10+ 人):LiteLLM + 中转作为上游
十一、典型架构
团队成员(开发机)
↓
├── 内部 LiteLLM Proxy (HA × 3)
│ ↓
│ ├── 中转 A(YoTradeApi,主)
│ ├── 中转 B(backup)
│ └── 官方 API(fallback)
└── 监控(Prometheus + Grafana + 告警)
十二、相关阅读
LiteLLM 上游配 YoTradeApi,一把 Key 给整个 LiteLLM 用,团队 Key 在 LiteLLM 后台单独发。