Loading...

文章背景图

LiteLLM:统一 100+ 大模型 API 的网关与代理(OpenAI 兼容)|部署与使用全指南

2026-10-26
1
- 字
- 分钟
|

LiteLLM:统一 100+ 大模型 API 的网关与代理(OpenAI 兼容)|部署与使用全指南

适用版本:基于 LiteLLM 官方仓库(BerriAI/litellm)与官方文档(docs.litellm.ai)在 2025 年末至 2026 年初的真实状态撰写。项目当前非常活跃(发布线已到 v1.80.x 系列,每日均有提交与 nightly/rc 构建),并以每月多次的稳定版节奏发布。

一句话定位:用统一的 OpenAI 格式调用 100+ 大模型(OpenAI / Anthropic / Gemini / Bedrock / Azure / 本地模型等)的网关与代理,提供负载均衡、成本统计、限流与密钥管理。

LiteLLM AI Gateway 官方架构示意

一、项目简介与适用场景

1.1 它是什么

LiteLLM 是一个开源 AI 网关(AI Gateway)。它把 100+ 家大模型供应商(OpenAI、Anthropic、Google Gemini、AWS Bedrock、Azure OpenAI、Vertex AI、Groq、Ollama 本地模型等)统一封装成同一个 OpenAI 兼容的接口。你只需要面向一套 /v1/chat/completions 等端点写代码,LiteLLM 在背后负责把请求翻译成各家供应商的格式、再把响应翻译回 OpenAI 格式。

它有两种使用形态:

形态

说明

适合

Python SDK(litellm)

在代码里 from litellm import completion,直接调用

单应用、库级集成、快速原型

AI Gateway(代理服务 / Proxy Server)

独立部署成一个中心化网关服务,提供虚拟密钥、预算、限流、日志、管理后台

团队 / 企业级、统一管控、多应用共享

1.2 核心收益

  • 统一 API:100+ 模型一个接口,告别各家 SDK、鉴权、请求/响应格式的差异。

  • OpenAI 兼容(drop-in):无需改代码即可在不同供应商之间切换,任何支持 OpenAI 格式的工具(OpenWebUI、LangChain、Cursor 等)都能直接对接。

  • 生产级网关能力:虚拟密钥(Virtual Keys)、用量与成本统计(Spend Tracking)、预算与限流(Budgets & Rate Limits)、负载均衡、失败回退(Fallbacks)、管理后台开箱即用。

  • 高性能:官方基准在 1k RPS 下 P95 延迟约 8ms。

1.3 典型适用场景

场景

说明

多模型统一接入

一个端点同时暴露 GPT、Claude、Gemini、本地 Ollama,前端无需关心供应商

成本与用量治理

按 key / user / team / 组织维度统计花费,设置预算上限与告警

限流与配额

给不同团队、应用、用户发放带速率限制(RPM/TPM)和预算的虚拟密钥

高可用与弹性

同一模型挂多个部署做负载均衡,单点失败自动回退

本地 + 云端混合

敏感数据走本地 Ollama,复杂任务走云端旗舰模型

合规与审计

企业版提供 SSO、SCIM、审计日志、分团队管理员


二、核心功能逐条拆解

功能

说明

统一 OpenAI 格式

/chat/completions、/responses、/embeddings、/images、/audio、/batches、/rerank、/a2a、/messages 等端点统一为 OpenAI 风格

100+ 供应商

OpenAI、Anthropic、Gemini、Bedrock、Azure、Vertex、Groq、Together、Ollama、Sagemaker、Mistral 等(完整列表见 models.litellm.ai 与官方 Providers 文档)

负载均衡

同一 model_name 下挂多个部署,支持 simple-shuffle / least-busy / usage-based-routing / latency-based-routing 路由策略,并按 rpm/tpm 加权

失败回退(Fallback)

主模型失败后自动切到备用模型;支持上下文窗口超限回退(context_window_fallbacks)

虚拟密钥(Virtual Keys)

替代真实供应商 key 发放给应用/同事,每个 key 可独立设置预算、速率限制、模型白名单

成本与用量统计

每次请求按 model_prices_and_context_window.json 计费,按 key/user/team 追踪花费,可导出日志到 Langfuse、S3、GCS、OTEL 等

预算与限流

max_budget / budget_duration、key/team/user 级 rpm/tpm 限制,超预算可阻断请求并告警

密钥与供应商凭据管理

供应商 key 存于网关(数据库加密),对外只暴露虚拟密钥;LITELLM_SALT_KEY 负责加密

MCP 网关

在网关上挂载 MCP 服务器,任何 LLM 通过 /chat/completions 调用 MCP 工具;支持 Cursor 等 IDE

A2A Agent 网关

注册 Agent-to-Agent 智能体,调用同样走虚拟密钥并计入成本日志

Auto Router(附加)

按任务复杂度把请求路由到“够用且最便宜”的模型

可观测性

Prometheus 指标、Langfuse / Arize Phoenix / Langsmith / OTEL 日志集成

管理后台(Admin UI)

浏览器里增删模型、生成密钥、查看日志与用量;访问 <base_url>/ui

企业版能力

SSO、SCIM、全量审计日志、分团队管理员、多区域部署、官方支持(需企业 License Key)


三、全套官方链接

名称

地址

备注

GitHub 仓库

https://github.com/BerriAI/litellm

开源主仓库,MIT 许可(除 enterprise/ 目录)

官方文档

https://docs.litellm.ai

网关、SDK、配置、部署、排错的完整文档

模型价目与支持列表

https://models.litellm.ai

可视化查看 100+ 模型与价格

Providers 文档

https://docs.litellm.ai/docs/providers

各供应商接入细节

网关快速开始(Docker)

https://docs.litellm.ai/docs/proxy/docker_quick_start

推荐新手路线

配置参考

https://docs.litellm.ai/docs/proxy/configs

config.yaml 全参数说明

虚拟密钥文档

https://docs.litellm.ai/docs/proxy/virtual_keys

key 生成、预算、速率限制

生产部署文档

https://docs.litellm.ai/docs/proxy/deploy

Helm / Terraform / K8s

在线 Demo

无

官方未提供公开在线 Demo;请在本地按本文部署后自测

企业版

https://www.litellm.ai/enterprise

销售与功能说明

MIT 与企业版差异说明:仓库根目录 LICENSE 明确——除 enterprise/ 目录外的所有内容均以 MIT 许可发布;enterprise/ 目录(若存在)遵循其自身的 enterprise/LICENSE。在 MIT 部分之上,企业版(Enterprise Tier)通过 License Key 解锁额外能力:单点登录(SSO)、SCIM 用户同步、全量管理员审计日志、分团队管理员、多区域部署以及官方工程支持。这些能力不开源、不在默认镜像内,需要商业授权。普通自托管、网关、负载均衡、虚拟密钥、成本统计、限流等核心功能全部在 MIT 开源部分,可免费商用。


四、硬件与环境前置要求

LiteLLM 本质是一个 API 网关/代理,本身不做模型推理,因此不需要 GPU;真正消耗算力的是被它转发的上游供应商或你自建的本地模型服务。

项目

要求 / 建议

操作系统

Windows 10/11、Linux(x86_64 / arm64)、macOS(Intel / Apple Silicon)均可;生产推荐 Linux

Python

3.8 及以上(推荐使用 3.10+);注意:v1.0.0 起要求 openai>=1.0.0,v1.40.14+ 要求 pydantic>=2.0.0

Docker(推荐)

任意较新版本;官方镜像发布在 ghcr.io/berriai/litellm 并镜像到 docker.litellm.ai/berriai,如 docker.litellm.ai/berriai/litellm:latest;稳定版带 -stable 后缀(经 12 小时压测)

内存 / CPU

仅做网关时非常轻量(几百 MB 即可跑起来);生产建议每个 worker 1 vCPU + 4Gi 内存,按 worker 数线性扩展

GPU

不需要(除非你另跑本地推理服务如 Ollama/vLLM)

数据库

若要启用虚拟密钥、预算、用量统计、管理后台,需要 PostgreSQL(如 Supabase / Neon / 自建);纯转发可用文件配置、不连库

Redis

多实例部署、跨实例限流/路由状态/缓存时需要;单实例可省略

网络

网关需能访问上游供应商 API(或本地模型服务);生产建议放在负载均衡器(ALB / Ingress)之后,健康检查路径 /health/readiness

稳定版提示:生产环境务必固定版本标签(如 :v1.90.2 或 :v1.90.2-stable),不要长期用 :latest 或滚动标签,以便回滚可复现。所有镜像均经签名(cosign)。


五、多平台部署实战

下面给出三条路线:Docker(推荐)、pip 安装、源码安装。三种方式最终都启动同一个代理服务(默认端口 4000)。

5.1 Docker 一键部署(推荐,含 Postgres + 后台)

这是官方推荐的新手路线,自动拉起网关与 Postgres(用于存模型、密钥、用量)。

# 1) 下载官方快速开始 compose 文件
curl -sSLO https://github.com/BerriAI/litellm/raw/main/docker/docker-compose.quickstart.yml

# 2) 生成主密钥与加密盐(务必保存 .env,SALT_KEY 不可更改)
printf 'LITELLM_MASTER_KEY=sk-%s\nLITELLM_SALT_KEY=sk-%s\n' \
  "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env

# 3) 后台启动
docker compose -f docker-compose.quickstart.yml up -d

启动后访问 http://localhost:4000/ui:用户名 admin,密码即你 .env 里的 LITELLM_MASTER_KEY。在 Models + Endpoints → Add Model 添加供应商与模型,Virtual Keys 生成虚拟密钥,Playground 直接发请求测试。

5.2 Docker 纯代理(无数据库,仅 OpenAI 兼容转发)

适合只想做统一转发、不需要密钥/预算/后台的场景:

# litellm_config.yaml
model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY
docker run \
  -v $(pwd)/litellm_config.yaml:/app/config.yaml \
  -e OPENAI_API_KEY=<your-openai-key> \
  -e LITELLM_MASTER_KEY=sk-<paste-a-long-random-key> \
  -p 4000:4000 \
  docker.litellm.ai/berriai/litellm:latest \
  --config /app/config.yaml

⚠️ 无数据库时预算不生效:litellm_settings.max_budget 等全局预算依赖数据库;不连库时即便配了 max_budget: 100 也会继续放行、且无预算告警(启动仅打一行警告)。需要预算管控务必按 5.1 连 Postgres。

5.3 pip 安装(Python 环境)

# 安装含代理(proxy)额外依赖的版本
pip install 'litellm[proxy]'
# 或使用 uv
uv tool install 'litellm[proxy]'

# 准备 config.yaml 后用配置启动
litellm --config /path/to/config.yaml

若只做库级 SDK 调用(不启代理),直接 pip install litellm 即可,代码中 from litellm import completion。

5.4 源码安装(开发 / 自定义)

git clone https://github.com/BerriAI/litellm.git
cd litellm
python -m venv .venv && source .venv/bin/activate
pip install -e '.[proxy]'      # 可编辑安装含 proxy 依赖

# 启动代理
litellm --config config.yaml

另有一个独立的 litellm-core 发行包(import litellm 同款 API、无 CLI/后台/可选依赖),用于纯 SDK 环境;同一环境不要同时装 litellm 与 litellm-core。

5.5 验证启动

curl http://localhost:4000/v1/chat/completions \
  -H 'Authorization: Bearer sk-<your-virtual-key-or-master-key>' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "Say hello in five words."}]
  }'

预期返回标准 OpenAI 格式的 choices 与 usage。控制台出现 LiteLLM: Proxy initialized with Config, Set models: 表明 config.yaml 已正确加载。


六、配置文件参数全解(config.yaml)

config.yaml 是代理服务的核心。下面逐段解释关键参数。

6.1 model_list —— 模型与部署定义

参数

说明

model_name

对外暴露的模型名(客户端请求时填这个)

litellm_params.model

实际传给 litellm.completion() 的模型串,如 openai/gpt-4o、azure/gpt-4o、bedrock/us.anthropic.claude-...、ollama/llama3

litellm_params.api_key

供应商 key;建议用 os.environ/OPENAI_API_KEY 从环境变量读取,避免明文

litellm_params.api_base

自定义端点(如本地 Ollama / vLLM / 兼容 OpenAI 的服务)

litellm_params.rpm

该部署每分钟速率上限(用于加权负载均衡)

litellm_params.tpm

该部署每分钟 Token 上限

litellm_params.aws_region_name

Bedrock 等需指定区域

model_info

附加元信息(如 version)

示例:同一模型名挂两个 Azure 部署做负载均衡

model_list:
  - model_name: gpt-4o                # 客户端用的名字
    litellm_params:
      model: azure/gpt-4o-eu
      api_base: https://xxx.openai.azure.com/
      api_key: os.environ/AZURE_API_KEY_EU
      rpm: 6
  - model_name: gpt-4o
    litellm_params:
      model: azure/gpt-4o-ca
      api_base: https://yyy.openai.azure.com/
      api_key: os.environ/AZURE_API_KEY_CA
      rpm: 6
  - model_name: local-llama
    litellm_params:
      model: ollama/llama3
      api_base: http://host.docker.internal:11434
      api_key: none

通配模型:- model_name: "*" + litellm_params.model: "*" 可让所有供应商默认模型无需逐个声明即可用(依赖 .env 里的默认供应商凭据)。

6.2 router_settings —— 路由与容错

参数

说明

routing_strategy

路由策略:simple-shuffle(默认)、least-busy、usage-based-routing、latency-based-routing

num_retries

路由层重试次数

timeout

路由超时(秒)

redis_host / redis_password / redis_port

多实例部署时把负载均衡/限流状态存入 Redis

model_group_alias

模型别名映射,如 {"gpt-5.6": "gpt-4o"}

6.3 litellm_settings —— 模块级设置

参数

说明

drop_params

True 时丢弃供应商不支持的参数,提升兼容性

num_retries

每个模型部署的重试次数

request_timeout

单次请求超时(秒)

fallbacks

失败回退,如 [{"gpt-4o": ["gpt-4o-mini"]}]

context_window_fallbacks

上下文超限时的回退

allowed_fails

某部署在 1 分钟内失败超过该值则冷却

overwrite_user_with_key_hash

True 时把发出给供应商的 user 强制设为虚拟密钥哈希,防篡改(v1.95.0+)

6.4 general_settings —— 服务级设置

参数

说明

master_key

网关管理员密钥(建议 os.environ/LITELLM_MASTER_KEY,必须以 sk- 开头)

database_url

Postgres 连接串,启用密钥/预算/后台必须

environment

运行环境标识

telemetry

是否开启遥测(默认开启,可关闭)

litellm_key_header_name

自定义虚拟密钥请求头(默认用 Authorization)

disable_env_credential_login

True 关闭 UI 环境变量登录(生产建议开启)

store_model_in_db

True 后模型可由后台/API 管理,数据库为权威来源

user_header_mappings

把自定义请求头映射为 LiteLLM 用户角色(如对接 OpenWebUI 用户信息)

6.5 一个较完整的示例

model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY
      rpm: 100
  - model_name: claude
    litellm_params:
      model: bedrock/us.anthropic.claude-sonnet-5
      aws_region_name: us-east-1

litellm_settings:
  drop_params: True
  num_retries: 3
  request_timeout: 30
  fallbacks: [{"gpt-4o": ["claude"]}]

router_settings:
  routing_strategy: simple-shuffle
  timeout: 30

general_settings:
  master_key: os.environ/LITELLM_MASTER_KEY
  database_url: os.environ/DATABASE_URL

config.yaml vs 数据库:开启 store_model_in_db 后,后台/API 对 general_settings、router_settings、litellm_settings、environment_variables 的修改会写入数据库并在每次启动/刷新时覆盖 YAML 同名键(深合并,数据库优先);model_list 不在其列,仍与数据库中的模型并列、参与负载均衡。改这些键请以 UI/API 为准或删除对应库表行。


七、启动 / 后台常驻 / 开机自启 / 改端口

7.1 改端口

部署方式

改端口做法

pip / 源码

启动时加 --port:litellm --port 4001 --config config.yaml

Docker

用 -p 映射宿主机端口:docker run -p 4001:4000 ...(容器内固定 4000,宿主机用 4001)

Docker Compose

在 ports: 里写 "4001:4000"

7.2 systemd 后台常驻 + 开机自启(Linux 服务器推荐)

创建 /etc/systemd/system/litellm.service:

[Unit]
Description=LiteLLM Proxy
After=network.target

[Service]
User=litellm
WorkingDirectory=/opt/litellm
Environment=OPENAI_API_KEY=xxx
Environment=LITELLM_MASTER_KEY=sk-xxx
Environment=DATABASE_URL=postgresql://user:pass@host:5432/litellm
ExecStart=/opt/litellm/.venv/bin/litellm --config /opt/litellm/config.yaml --port 4000
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now litellm      # 开机自启并立即启动
sudo systemctl status litellm
sudo journalctl -u litellm -f            # 看日志

7.3 pm2 后台常驻(Node 风格进程管理,跨平台友好)

npm install -g pm2
pm2 start "litellm --config config.yaml --port 4000" --name litellm
pm2 save
pm2 startup                          # 生成开机自启脚本(按提示执行)
pm2 logs litellm

7.4 Docker 后台与开机自启

# 已在 5.1 用 docker compose up -d 后台运行
# 开机自启:在 compose 文件中给服务加
#   restart: unless-stopped
# 或 Docker Desktop / systemd 的 docker.service 开机启动即可
docker compose -f docker-compose.quickstart.yml ps
docker logs -f <container-name>

八、功能实操教程

8.1 配置多模型并统一调用

在 config.yaml 的 model_list 中分别定义 OpenAI、Anthropic(Bedrock)、本地 Ollama 等,对外各给一个 model_name。客户端统一用 OpenAI SDK 指向网关:

import openai
client = openai.OpenAI(api_key="sk-<虚拟密钥>", base_url="http://localhost:4000")
# 切换模型只需改 model 字符串
resp = client.chat.completions.create(
    model="gpt-4o",                       # 或 "claude" / "local-llama"
    messages=[{"role": "user", "content": "你好"}]
)

8.2 负载均衡

把同一个 model_name 指向多个部署(不同 api_base 或不同区域),并设置 rpm/tpm,再选 router_settings.routing_strategy:

model_list:
  - model_name: zephyr
    litellm_params: { model: huggingface/.../zephyr-7b-beta, api_base: http://0.0.0.0:8001, rpm: 60 }
  - model_name: zephyr
    litellm_params: { model: huggingface/.../zephyr-7b-beta, api_base: http://0.0.0.0:8002, rpm: 600 }
router_settings:
  routing_strategy: simple-shuffle   # 配合 rpm/tpm 加权,吞吐最佳

官方压测结论:给所有部署设置 tpm/rpm + simple-shuffle 可最大化吞吐;多 LiteLLM 实例/ K8s 时再配置 Redis。

8.3 虚拟密钥(Virtual Key)

虚拟密钥是发给应用/同事的“替身钥匙”,替代真实供应商 key,并自带预算、限流、模型白名单。

生成密钥(需连 Postgres):

curl -X POST 'http://localhost:4000/key/generate' \
  -H 'Authorization: Bearer <your-master-key>' \
  -H 'Content-Type: application/json' \
  -d '{
    "models": ["gpt-4o", "claude"],
    "max_budget": 20,
    "budget_duration": "1mo",
    "rpm_limit": 60,
    "tpm_limit": 100000,
    "metadata": {"user": "team-a@corp.com"}
  }'

响应里的 key 只显示一次,妥善保存。随后用该 key 调用:

curl http://localhost:4000/v1/chat/completions \
  -H "Authorization: Bearer sk-<生成的虚拟密钥>" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-4o","messages":[{"role":"user","content":"hi"}]}'

预算/用量查询:GET /key/info?key=<虚拟密钥>(返回该 key 的 spend 等);封禁/解封:POST /key/block、POST /key/unblock。还可用 aliases 在 key 上做模型升级/降级映射(如把请求里的 gpt-4 映射到便宜的 my-free-tier)。

8.4 成本与日志

  • 自动计费:每次 /chat/completions 等调用后,按内置价目表(model_prices_and_context_window.json)累加花费,分别写入 LiteLLM_VerificationTokenTable(key)、LiteLLM_UserTable(user)、LiteLLM_TeamTable(team)。

  • 查看:管理后台 Logs 与 Usage 页;或用 /key/info、/user/info、/team/info API。

  • 导出/可观测:通过 success_callback 接入 Langfuse、Arize Phoenix、Langsmith、OTEL,或把日志写进 S3/GCS(litellm_settings 里配置)。

8.5 与 OpenWebUI 集成

OpenWebUI 是流行的自托管聊天界面,可把它指向 LiteLLM 网关,从而在一个界面里访问 100+ 模型并统一统计成本。

步骤:

  1. 启动 LiteLLM(见第五、七章),确保已生成虚拟密钥并连了数据库。

  2. 在 LiteLLM 后台建团队与虚拟密钥:访问 http://localhost:4000/ui → 新建 Team → 在 Virtual Keys 为该团队生成密钥,并在 models 字段限定该密钥可访问的模型。

  3. 把 OpenWebUI 指向 LiteLLM:在 OpenWebUI 中 Settings → Connections → OpenAI API,填写: - URL:http://<litellm-host>:4000(你的 LiteLLM 代理基地址) - Key:上一步生成的虚拟密钥(不要复用 LITELLM_MASTER_KEY)

  4. 测试:左上角选模型时只会看到该密钥被授权的模型;发送消息即可。

  5. 用量追踪:请求后到 LiteLLM 后台 Logs 查看模型、用量与成本。

按用户追踪(可选):在 OpenWebUI 侧设置环境变量 ENABLE_FORWARD_USER_INFO_HEADERS=True;在 LiteLLM config.yaml 加:

general_settings:
  user_header_mappings:
    - header_name: X-OpenWebUI-User-Id
      litellm_user_role: internal_user
    - header_name: X-OpenWebUI-User-Email
      litellm_user_role: customer

(可用请求头:X-OpenWebUI-User-Id / X-OpenWebUI-User-Email / X-OpenWebUI-User-Name。)

Docker Compose 直连示例(OpenWebUI 与 LiteLLM 同网络):

services:
  litellm:
    image: docker.litellm.ai/berriai/litellm:latest
    ports: ["4000:4000"]
    environment:
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY}
      - DATABASE_URL=${DATABASE_URL}
    volumes: ["${PWD}/config.yaml:/app/config.yaml"]
    command: ["--config", "/app/config.yaml"]

  open-webui:
    image: ghcr.io/open-webui/open-webui:latest
    ports: ["3000:8080"]
    environment:
      - OPENAI_API_BASE_URLS=http://litellm:4000/v1
      - OPENAI_API_KEYS=${LITELLM_VIRTUAL_KEY}
    depends_on: [litellm]

九、全套报错故障排查(10 条)

#

现象 / 报错

原因

解决办法

1

AuthenticationError / invalid api key / 供应商返回 401

配置里 api_key 写死错误值,或 os.environ/XXX 对应的环境变量未导出

确认环境变量已 export 或在 compose environment 中设置;用真实 key 测一次;检查 .env 是否被加载

2

启动报端口被占用 / Address already in use :4000

4000 已被其他进程占用

换端口:litellm --port 4001 ...,或 Docker -p 4001:4000;用 lsof -i:4000(macOS/Linux)或 netstat 找出占用进程后释放

3

响应格式不兼容 / missing required field / 某些参数被拒

不同供应商对参数支持不同,或字段命名差异

在 litellm_settings 设 drop_params: True;以 OpenAI 格式统一收发;必要时用 model_info 标注

4

429 Too many requests / 限流

触发供应商或网关 RPM/TPM 上限

在 litellm_params 设合理的 rpm/tpm;为 key/team 设 rpm_limit/tpm_limit;调 num_retries 与退避;降低并发

5

Docker 容器间网络不通(如 OpenWebUI 连不上 litellm)

不在同一 Docker 网络,或用了错误的主机名

把相关服务放进同一 networks:;容器内用服务名(如 http://litellm:4000);宿主访问容器用 host.docker.internal;docker network ls/inspect 排查

6

请求超时 / 上游长时间无响应

供应商慢、网关 request_timeout 太小、或数据库/Redis 阻塞事件循环

调大 litellm_settings.request_timeout 与 router_settings.timeout;检查上游健康;生产按 1 vCPU/4Gi per worker 扩容;看日志是否有 Redis/DB 超时

7

依赖冲突 / 导入报错(openai 或 pydantic 版本不符)

LiteLLM v1.0+ 需 openai>=1.0.0,v1.40.14+ 需 pydantic>=2.0.0

使用虚拟环境或固定版本标签;pip install -U 'openai>=1.0';生产固定镜像 tag 避免 latest 漂移

8

No connected db. / 虚拟密钥或预算不生效

未配置 DATABASE_URL,但用到了需要数据库的功能

启动 Postgres 并在 general_settings.database_url 或 DATABASE_URL 环境变量中配置;无库时预算不会强制拦截

9

容器/进程被 OOMKilled(退出码 137)或频繁重启

内存不足或 worker 数过多

生产按 1 vCPU + 4Gi/worker 规划;调小 NUM_WORKERS;在 K8s 中提高 resources.limits.memory;排查是否多 worker 同时回收(设 MAX_REQUESTS_BEFORE_RESTART_JITTER)

10

改了 LITELLM_SALT_KEY 后所有供应商 key 不可读

SALT_KEY 用于加密库中凭据,不可原地轮换

不要更改已使用的 SALT_KEY;若已误改,只能重新在后台录入供应商 key;把 MASTER_KEY 与 SALT_KEY 存进密钥管理器,一次性生成

健康检查:GET /health/liveliness(存活)、GET /health/readiness(就绪,数据库不可达时返回 503)、GET /health/readiness/details(含版本信息),可用于负载均衡探针。


十、升级 / 回滚 / 卸载教程

10.1 升级

  • Docker:改镜像标签后重新拉取并重启,例如把 :latest 改为 :v1.90.2-stable: bash docker compose -f docker-compose.quickstart.yml pull docker compose -f docker-compose.quickstart.yml up -d

  • pip:pip install -U 'litellm[proxy]'(建议先在虚拟环境/测试机验证)。

  • 数据库迁移:官方镜像会按需执行迁移;多实例生产环境建议设 DISABLE_SCHEMA_UPDATE=true,由独立的 migrations job(Helm/K8s)统一执行,避免并发迁移冲突。

10.2 回滚

  • Docker:把镜像标签退回上一个已知良好版本(如 :v1.90.1-stable)再 up -d 即可——这正是生产必须固定版本标签的原因。

  • pip:pip install 'litellm[proxy]==<旧版本号>'。

  • 注意:若新版已执行不可逆的数据库 schema 迁移,仅回滚代码可能不兼容;回滚前确认迁移是否可向下兼容,必要时从备份恢复数据库。

10.3 卸载

  • Docker:docker compose -f docker-compose.quickstart.yml down(加 -v 可同时删除卷,会清除 Postgres 数据,谨慎!)。

  • pip:pip uninstall litellm(若用 venv 直接删 venv 目录更干净)。

  • 源码:删除克隆目录与虚拟环境;若 pip install -e 过,先 pip uninstall litellm。

  • systemd/pm2:sudo systemctl disable --now litellm / pm2 delete litellm && pm2 save。

  • 数据清理:卸载后记得清理 .env(含主密钥/盐)、config.yaml、Postgres 数据库与任何导出的日志/密钥,避免敏感信息残留。


十一、商用许可与合规风险提示

11.1 MIT 商用

仓库根 LICENSE 明确:除 enterprise/ 目录外,所有内容以 MIT 许可发布。这意味着你可以免费用于商业用途:使用、复制、修改、分发、再许可、乃至销售,只需在副本中保留版权声明与许可声明。网关、负载均衡、虚拟密钥、成本统计、限流、管理后台等核心能力全部在 MIT 部分,可自托管并商用。

11.2 企业版功能差异

enterprise/ 目录遵循其自有许可,不在 MIT 范围内。企业版通过 License Key 在同一套网关上解锁:

企业版能力

说明

SSO(单点登录)

Okta / Azure AD / Google 等对接

SCIM

用户/组自动同步

审计日志

所有管理员变更的完整审计

分团队管理员

按 team 分配管理员

多区域部署

跨区域高可用

官方支持

商业 SLA 与工程支持

这些能力不开源、不在默认镜像内,需要向官方购买企业授权。是否需要企业版取决于你的合规与组织管理诉求,纯技术网关能力无需付费。

11.3 API Key 与用量安全

  • 密钥分级:对外一律发虚拟密钥,绝不要把 LITELLM_MASTER_KEY 或供应商原始 key 交给应用/前端;虚拟密钥可设预算、限流、模型白名单并随时封禁。

  • 主密钥与盐:LITELLM_MASTER_KEY 等同 root 密码,存密钥管理器、不进源码、泄漏即轮换;LITELLM_SALT_KEY 一旦用于加密库内凭据就不可更改,改了会让已有凭据不可读。

  • 数据库与 Redis 凭据:DATABASE_URL、Redis 密码等属于敏感信息,优先用云密钥管理器(如 AWS Secrets Manager / K8s Secret / Key Vault CSI),避免明文落盘。

  • 后台访问:生产环境开启 disable_env_credential_login,改用数据库用户 + 密码或 SSO 登录;并配置 trusted_proxy_ranges 以正确识别客户端、启用登录失败限流(默认单地址 60 秒内 10 次失败封 5 分钟)。

  • 用量与成本护栏:为 key/team 设置 max_budget 与 budget_duration,并在供应商侧也设置硬上限(无数据库时 LiteLLM 预算不强制,需上游兜底)。

  • 传输安全:生产在网关前放 TLS 终止(Ingress / ALB),不要明文暴露 :4000 到公网;健康检查仅用 /health/*,管理 API 必须走鉴权。

  • 合规:用量日志可能包含提示词与内容,导出到 S3/GCS/Langfuse 等第三方时留意数据驻留与脱敏;多租户场景用 team/user 隔离与审计日志满足内部合规。


结语:LiteLLM 是当下最被广泛采用的开源 AI 网关,MIT 许可下即可免费自托管、统一接入 100+ 模型并具备生产级的成本、限流与密钥治理能力;把官方镜像固定到稳定标签、配好 Postgres/Redis 与密钥管理,就能以很低的上手成本获得一套企业级的模型接入中台。

评论交流

文章目录