跳转至

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 部署(推荐)

  1. 创建 Dockerfile:
FROM python:3.9-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["litellm", "--port", "8000"]
  1. 创建 docker-compose.yml:
version: '3'
services:
  litellm-proxy:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - ./.env:/app/.env
    environment:
      - PORT=8000
    restart: always
  1. 启动服务:
docker-compose up -d

3.2 直接部署

litellm --port 8000

3.3 使用 Kubernetes 部署

  1. 创建 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}
  1. 创建 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 监控

  1. 启用 Prometheus 指标:
litellm --port 8000 --metrics
  1. 配置 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 访问控制

  1. 启用认证:
litellm --port 8000 --api_key your-secret-key
  1. 配置 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 常见问题

  1. 连接超时
  2. 检查网络连接
  3. 增加超时时间
  4. 验证 API 密钥

  5. 负载均衡问题

  6. 检查权重配置
  7. 验证模型可用性
  8. 查看负载均衡日志

  9. 内存问题

  10. 调整并发设置
  11. 检查内存使用情况
  12. 考虑使用内存限制

8.2 调试方法

  1. 启用调试模式:
litellm --port 8000 --debug
  1. 查看详细日志:
tail -f litellm.log

9. 维护和更新

9.1 更新流程

  1. 备份配置:

    cp config.yaml config.yaml.backup
    

  2. 更新 LiteLLM:

    pip install --upgrade litellm
    

  3. 测试新版本:

    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: 更新安全最佳实践
回到页面顶部