LiteLLM Proxy:统一多模型的LLM代理网关运维最佳实践¶
1. 简介¶
LiteLLM Proxy 是一个强大的代理网关,可以统一管理和调用多个大语言模型(LLM)。它提供了一个统一的接口,使得在不同的 LLM 之间切换变得简单,同时提供了负载均衡、监控、日志记录等企业级功能。
1.1 主要特性¶
- 统一的 OpenAI 兼容 API
- 支持多种 LLM 模型(OpenAI, Anthropic, Azure, HuggingFace 等)
- 内置负载均衡和故障转移
- 详细的请求日志和监控
- 支持模型路由和回退策略
- 企业级安全特性
2. 部署准备¶
2.1 系统要求¶
- Python 3.8+
- Docker (可选)
- 至少 4GB RAM
- 稳定的网络连接
- 各 LLM 服务的 API 密钥
2.2 依赖安装¶
pip install litellm
pip install litellm[proxy]
pip install python-dotenv
2.3 环境配置¶
创建 .env
文件:
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
AZURE_API_KEY=...
HUGGINGFACE_API_KEY=...
3. 部署方案¶
3.1 Docker 部署(推荐)¶
- 创建 Dockerfile:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["litellm", "--port", "8000"]
- 创建 docker-compose.yml:
version: '3'
services:
litellm-proxy:
build: .
ports:
- "8000:8000"
volumes:
- ./.env:/app/.env
environment:
- PORT=8000
restart: always
- 启动服务:
docker-compose up -d
3.2 直接部署¶
litellm --port 8000
3.3 使用 Kubernetes 部署¶
- 创建 ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: litellm-config
data:
config.yaml: |
model_list:
- model_name: gpt-4
litellm_params:
model: gpt-4
api_key: ${OPENAI_API_KEY}
- 创建 Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: litellm-proxy
spec:
replicas: 3
selector:
matchLabels:
app: litellm-proxy
template:
metadata:
labels:
app: litellm-proxy
spec:
containers:
- name: litellm-proxy
image: litellm-proxy:latest
ports:
- containerPort: 8000
volumeMounts:
- name: config
mountPath: /app/config
volumes:
- name: config
configMap:
name: litellm-config
4. 配置管理¶
4.1 基础配置¶
创建 config.yaml
:
model_list:
- model_name: gpt-4
litellm_params:
model: gpt-4
api_key: ${OPENAI_API_KEY}
- model_name: claude-2
litellm_params:
model: claude-2
api_key: ${ANTHROPIC_API_KEY}
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/gpt-35-turbo
api_key: ${AZURE_API_KEY}
api_base: ${AZURE_API_BASE}
router_settings:
timeout: 30
retry_count: 3
fallbacks: [{"gpt-4": "claude-2"}, {"claude-2": "gpt-3.5-turbo"}]
4.2 高级配置¶
负载均衡配置¶
model_list:
- model_name: gpt-4
litellm_params:
model: gpt-4
api_key: ${OPENAI_API_KEY_1}
weight: 0.6
- model_name: gpt-4
litellm_params:
model: gpt-4
api_key: ${OPENAI_API_KEY_2}
weight: 0.4
请求限制配置¶
router_settings:
max_tokens: 4096
rpm: 10000
max_budget: 100
5. 监控和日志¶
5.1 Prometheus 监控¶
- 启用 Prometheus 指标:
litellm --port 8000 --metrics
- 配置 Prometheus scrape config:
scrape_configs:
- job_name: 'litellm'
static_configs:
- targets: ['localhost:8000']
5.2 日志配置¶
logging:
level: INFO
handlers:
- type: file
filename: litellm.log
max_bytes: 10485760
backup_count: 5
- type: console
6. 安全最佳实践¶
6.1 API 密钥管理¶
- 使用环境变量存储密钥
- 定期轮换密钥
- 使用密钥管理服务(如 HashiCorp Vault)
6.2 访问控制¶
- 启用认证:
litellm --port 8000 --api_key your-secret-key
- 配置 CORS:
server_settings:
cors_allow_origins: ["https://your-domain.com"]
cors_allow_methods: ["GET", "POST"]
6.3 网络安全¶
- 使用 HTTPS
- 配置防火墙规则
- 启用请求速率限制
7. 性能优化¶
7.1 缓存配置¶
cache_settings:
type: redis
host: localhost
port: 6379
ttl: 3600
7.2 并发处理¶
server_settings:
num_workers: 4
max_concurrent_requests: 100
8. 故障排除¶
8.1 常见问题¶
- 连接超时
- 检查网络连接
- 增加超时时间
-
验证 API 密钥
-
负载均衡问题
- 检查权重配置
- 验证模型可用性
-
查看负载均衡日志
-
内存问题
- 调整并发设置
- 检查内存使用情况
- 考虑使用内存限制
8.2 调试方法¶
- 启用调试模式:
litellm --port 8000 --debug
- 查看详细日志:
tail -f litellm.log
9. 维护和更新¶
9.1 更新流程¶
-
备份配置:
cp config.yaml config.yaml.backup
-
更新 LiteLLM:
pip install --upgrade litellm
-
测试新版本:
litellm --port 8001 --test
9.2 备份策略¶
- 定期备份配置文件
- 保存日志文件
- 导出指标数据
10. 生产环境最佳实践¶
10.1 高可用配置¶
- 使用多个实例
- 配置负载均衡器
- 实现自动故障转移
10.2 扩展建议¶
- 使用容器编排
- 实现自动扩缩容
- 监控系统资源
10.3 成本优化¶
- 实施模型路由策略
- 使用缓存减少请求
- 监控使用情况
11. 参考资源¶
12. 更新日志¶
- 2024-03-01: 初始版本
- 2024-03-15: 添加 Kubernetes 部署说明
- 2024-03-20: 更新安全最佳实践