在 Windows11 下搭建 LiteLLM 的过程

5 阅读4分钟

在 Windows11 下搭建 LiteLLM 的过程

记录在 Windows11 下搭建一套完整的、生产可用的 LiteLLM 代理服务搭建指南。

用Docker部署一个高可用的代理服务,通过 PostgreSQL 统一管理密钥和用量,并为每个员工生成独立的管控密钥

第一步:环境准备与安装

生产环境推荐使用 Docker 运行,以获得最好的隔离性和稳定性。

  1. 安装 Docker:确保你的服务器上已安装 Docker 和 Docker Compose。
  2. 准备 PostgreSQL:LiteLLM 需要使用数据库来持久化存储密钥、用量和日志数据。你可以使用云数据库(如阿里云RDS、AWS RDS),或通过 Docker 启动一个。为了方便测试,下面我们将在 docker-compose.yml 中一并启动。
  3. 选择稳定版本:根据官方建议,生产环境应使用带有 -stable 标签的 Docker 镜像,这些镜像经过了严格的负载测试 。当前稳定版本为 v1.73.6-stable

第二步:编写核心配置文件 (config.yaml)

这是整个代理服务的“大脑”,定义了可以访问哪些模型、后端地址、以及全局安全设置。

创建一个名为 config.yaml 的文件,内容如下:

# config.yaml
model_list:
  # 定义第一个模型组:OpenAI 的 GPT-4
  - model_name: gpt-4-team-a  # 给员工看的“友好名称”
    litellm_params:
      model: openai/gpt-4o     # 实际调用的模型
      api_key: os.environ/OPENAI_API_KEY # 从环境变量读取,更安全
    model_info:
      mode: completion
      access_groups: ["team-a", "product"] # 用于权限分组

  # 定义第二个模型组:接入百炼平台的模型 
  - model_name: qwen-plus
    litellm_params:
      model: openai/qwen-plus
      api_key: os.environ/BAILIAN_API_KEY
      api_base: https://dashscope.aliyuncs.com/compatible-mode/v1 # 关键:指定百炼的base_url
    model_info:
      supports_vision: true # 支持图片输入
      mode: completion
      access_groups: ["team-b", "research"]
      # 关键设置:让 1 个 Token 的成本显示为 1 块钱
      input_cost_per_token: 0.00002 
      output_cost_per_token: 0.00012

# 通用设置
general_settings:
  # 主密钥,用于管理所有子密钥 (必须以 sk- 开头) 
  master_key: sk-your-strong-master-key-here 
  # 数据库连接URL,将从环境变量读取
  database_url: postgresql://user:password@postgres:5432/litellm
  # 允许在请求头中传递自定义密钥字段,增加灵活性 
  litellm_key_header_name: "Authorization" 

# 可选:设置内部用户的自助服务默认预算 
litellm_settings:
  max_internal_user_budget: 10 # 每个用户默认最多10美元
  internal_user_budget_duration: "1mo" # 预算按月重置

核心要点

  • model_name 是暴露给员工的模型名,你可以起任何名字,比如把 gpt-4o 命名为 gpt-4-team-a,实现模型与消费端的解耦。
  • api_key 建议通过 os.environ/KEY_NAME 从环境变量读取,避免硬编码在配置文件里 。
  • master_key 作为管理员的最高权限凭证,务必妥善保管 。

第三步:使用 Docker Compose 一键启动

创建一个 docker-compose.yml 文件,将 LiteLLM 代理和 PostgreSQL 服务一起启动。

# docker-compose.yml
version: '3.8'

services:
  postgres:
    image: postgres:15
    container_name: litellm-db
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: litellm
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U user -d litellm"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped

  litellm-proxy:
    # 使用经过测试的稳定版本 
    image: ghcr.io/berriai/litellm:v1.73.6-stable 
    container_name: litellm-proxy
    ports:
      - "4000:4000" # 代理服务端口
    environment:
      # 从环境变量或 .env 文件读取真实密钥
      BAILIAN_API_KEY: ${BAILIAN_API_KEY}
      OPENAI_API_KEY: ${OPENAI_API_KEY}
      ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
      DATABASE_URL: postgresql://user:password@postgres:5432/litellm
      LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} # 与 config.yaml 中的 master_key 一致
      LITELLM_SALT_KEY: ${LITELLM_SALT_KEY} # 用于加密数据库中的密钥,随机生成一个长字符串
    volumes:
      - ./config.yaml:/app/config.yaml # 挂载本地配置文件
    command: ["--config", "/app/config.yaml", "--port", "4000"]
    depends_on:
      postgres:
        condition: service_healthy
    restart: unless-stopped

volumes:
  postgres_data:

docker-compose.yml 同级目录下,创建一个 .env 文件存放敏感信息:

# .env
BAILIAN_API_KEY=sk-xxxxxxxxx # 百炼平台的API密钥
OPENAI_API_KEY=sk-xxxxxxxxxxxxx
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxx
LITELLM_MASTER_KEY=sk-your-strong-master-key-here
LITELLM_SALT_KEY=a-very-long-random-string-for-encryption

然后运行 docker-compose up -d 即可启动服务。

第四步:生成员工子密钥 (企业管控核心)

服务启动后,可以使用主密钥来为每个员工生成独立的子密钥,并精细控制其权限和预算 。

  • WEB页面:http://localhost:4000/ui
  • API文档:http://localhost:4000

第五步:员工IDE配置与测试

员工拿到自己的子密钥后,只需在 IDE 的 AI 插件中修改三个地方:

  1. 请求地址 (Base URL):修改为 http://你的代理服务器IP:4000 (如果是云端,则使用公网IP或域名)。
  2. API 密钥:使用你为他生成的那个子密钥。
  3. 模型名称:根据 config.yaml 中定义的 model_name 填写,比如 gpt-4-team-a
VSCode Cline 插件配置如下图

image.png

CONTINUE 插件配置如下
# continue.yaml
name: Local Config
version: 1.0.0
schema: v1
models:
  # 使用 LiteLLM 代理的模型
  - name: Qwen-Plus
    provider: openai  # 使用 OpenAI 兼容接口
    model: qwen-plus      # 这是 LiteLLM 中配置的 model_name
    apiBase: http://localhost:4000/v1  # LiteLLM 地址
    apiKey: sk-sEjuOhsUB5CAJVrw2OWVag  # LiteLLM 生成的 API Key
    roles:
      - chat
      - edit
      - apply
      - autocomplete
      - summarize

验证一下: 员工可以使用命令行快速测试连通性 :

curl -X POST 'http://localhost:4000/chat/completions' \
  -H 'Authorization: Bearer 员工子密钥' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gpt-4-team-a", # 注意:这里用的是 config.yaml 中的 model_name
    "messages": [{"role": "user", "content": "Hello, world!"}]
  }'

如果一切顺利,你将看到来自大模型的成功响应。