Skip to main content

🐳 Docker, 部署

你可以在这里找到构建 litellm 代理的 Dockerfile:链接

快速开始

要开始使用 Litellm,请在 shell 中运行以下命令:

# 获取代码
git clone https://github.com/BerriAI/litellm

# 进入文件夹
cd litellm

# 添加主密钥 - 你可以在设置后更改此项
echo 'LITELLM_MASTER_KEY="sk-1234"' > .env

# 添加 litellm 盐密钥 - 添加模型后你无法更改此项
# 它用于加密/解密你的 LLM API 密钥凭证
# 我们推荐使用 - https://1password.com/password-generator/
# 密码生成器来获取 litellm 盐密钥的随机哈希
echo 'LITELLM_SALT_KEY="sk-1234"' >> .env

source .env

# 启动
docker-compose up

步骤 1. 创建 config.yaml

示例 litellm_config.yaml

model_list:
- model_name: azure-gpt-3.5
litellm_params:
model: azure/<your-azure-model-deployment>
api_base: os.environ/AZURE_API_BASE # 运行 os.getenv("AZURE_API_BASE")
api_key: os.environ/AZURE_API_KEY # 运行 os.getenv("AZURE_API_KEY")
api_version: "2023-07-01-preview"

步骤 2. 运行 Docker 镜像

docker run \
-v $(pwd)/litellm_config.yaml:/app/config.yaml \
-e AZURE_API_KEY=d6*********** \
-e AZURE_API_BASE=https://openai-***********/ \
-p 4000:4000 \
ghcr.io/berriai/litellm:main-latest \
--config /app/config.yaml --detailed_debug

获取最新镜像 👉 这里

步骤 3. 测试请求

传递 model=azure-gpt-3.5,这是在步骤 1 中设置的

curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"model": "azure-gpt-3.5",
"messages": [
{
"role": "user",
"content": "你是哪个llm"
}
]
}'

就是这样!这就是部署 litellm 的快速入门

与 Langchain、OpenAI SDK、LlamaIndex、Instructor、Curl 一起使用

info

💡 前往这里 👉 进行您的第一个 LLM API 请求

LiteLLM 兼容多个 SDK,包括 OpenAI SDK、Anthropic SDK、Mistral SDK、LlamaIndex、Langchain(Js、Python)

部署 LiteLLM 的选项

文档使用时机
快速开始调用 100+ LLM + 负载均衡
带数据库部署+ 使用虚拟密钥 + 跟踪花费(注意:部署时需要提供 DATABASE_URLLITELLM_MASTER_KEY 的环境变量)
LiteLLM 容器 + Redis+ 在多个 litellm 容器之间负载均衡
LiteLLM 数据库容器 + PostgresDB + Redis+ 使用虚拟密钥 + 跟踪花费 + 在多个 litellm 容器之间负载均衡

带数据库部署

Docker、Kubernetes、Helm Chart

要求:

  • 需要一个 postgres 数据库(例如 SupabaseNeon 等)在您的环境中设置 DATABASE_URL=postgresql://<user>:<password>@<host>:<port>/<dbname>
  • 设置一个 LITELLM_MASTER_KEY,这是您的代理管理密钥 - 您可以使用此密钥创建其他密钥(🚨 必须以 sk- 开头)

我们维护了一个 单独的 Dockerfile,以减少运行连接 Postgres 数据库的 LiteLLM 代理时的构建时间

docker pull ghcr.io/berriai/litellm-database:main-latest
docker run \
-v $(pwd)/litellm_config.yaml:/app/config.yaml \
-e LITELLM_MASTER_KEY=sk-1234 \
-e DATABASE_URL=postgresql://<user>:<password>@<host>:<port>/<dbname> \
-e AZURE_API_KEY=d6*********** \
-e AZURE_API_BASE=https://openai-***********/ \
-p 4000:4000 \
ghcr.io/berriai/litellm-database:main-latest \
--config /app/config.yaml --detailed_debug

您的 LiteLLM 代理服务器现在运行在 http://0.0.0.0:4000

LiteLLM 容器 + Redis

当您需要 litellm 在多个 litellm 容器之间进行负载均衡时使用 Redis

唯一需要的更改是在 config.yaml 中设置 Redis LiteLLM 代理支持在多个 litellm 实例之间共享 rpm/tpm,传递 redis_hostredis_passwordredis_port 以启用此功能。(LiteLLM 将使用 Redis 跟踪 rpm/tpm 使用情况)

model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/<your-deployment-name>
api_base: <your-azure-endpoint>
api_key: <your-azure-api-key>
rpm: 6 # 此部署的速率限制:每分钟请求数 (rpm)
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/gpt-turbo-small-ca
api_base: https://my-endpoint-canada-berri992.openai.azure.com/
api_key: <your-azure-api-key>
rpm: 6
router_settings:
redis_host: <your redis host>
redis_password: <your redis password>
redis_port: 1992

使用配置启动 docker 容器

docker run ghcr.io/berriai/litellm:main-latest --config your_config.yaml

LiteLLM 数据库容器 + PostgresDB + Redis

唯一需要的更改是在 config.yaml 中设置 Redis LiteLLM 代理支持在多个 litellm 实例之间共享 rpm/tpm,传递 redis_hostredis_passwordredis_port 以启用此功能。(LiteLLM 将使用 Redis 跟踪 rpm/tpm 使用情况)

model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/<your-deployment-name>
api_base: <your-azure-endpoint>
api_key: <your-azure-api-key>
rpm: 6 # 此部署的速率限制:每分钟请求数 (rpm)
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/gpt-turbo-small-ca
api_base: https://my-endpoint-canada-berri992.openai.azure.com/
api_key: <your-azure-api-key>
rpm: 6
router_settings:
redis_host: <your redis host>
redis_password: <your redis password>
redis_port: 1992

使用配置启动 litellm-database docker 容器

docker run --name litellm-proxy \
-e DATABASE_URL=postgresql://<用户>:<密码>@<主机>:<端口>/<数据库名> \
-p 4000:4000 \
ghcr.io/berriai/litellm-database:main-latest --config your_config.yaml

无互联网连接的LiteLLM

默认情况下,prisma generate会下载prisma的引擎二进制文件。在没有互联网连接的情况下运行时可能会导致错误。

使用此Docker镜像部署带有预生成prisma二进制文件的litellm。

docker pull ghcr.io/berriai/litellm-non_root:main-stable

发布的Docker镜像链接

高级部署设置

1. 自定义服务器根路径(自定义代理基础URL)

💥 当您希望在自定义基础URL路径(如https://localhost:4000/api/v1)上提供LiteLLM服务时使用此功能。

info

在Kubernetes部署中,可以通过修改虚拟服务来利用共享DNS托管多个应用程序。

自定义根路径以消除在部署期间使用多个DNS配置的需求。

步骤1. 👉 在.env中设置SERVER_ROOT_PATH,这将被设置为您的服务器根路径

export SERVER_ROOT_PATH="/api/v1"

步骤2(如果您希望代理管理UI与您的根路径一起工作,则需要使用此Dockerfile)

  • 使用下面的Dockerfile(它使用litellm作为基础镜像)
  • 👉 在Dockerfile中设置UI_BASE_PATH=$SERVER_ROOT_PATH/ui,例如UI_BASE_PATH=/api/v1/ui

Dockerfile

# 使用提供的基础镜像
FROM ghcr.io/berriai/litellm:main-latest

# 设置工作目录为/app
WORKDIR /app

# 安装Node.js和npm(根据需要调整版本)
RUN apt-get update && apt-get install -y nodejs npm

# 将UI源代码复制到容器中
COPY ./ui/litellm-dashboard /app/ui/litellm-dashboard

# 设置UI_BASE_PATH的环境变量
# 这可以在构建时被覆盖
# 将UI_BASE_PATH设置为"<您的服务器根路径>/ui"
# 👇👇 在此处输入您的UI_BASE_PATH
ENV UI_BASE_PATH="/api/v1/ui"

# 使用指定的UI_BASE_PATH构建UI
WORKDIR /app/ui/litellm-dashboard
RUN npm install
RUN UI_BASE_PATH=$UI_BASE_PATH npm run build

# 创建目标目录
RUN mkdir -p /app/litellm/proxy/_experimental/out

# 将构建的文件移动到适当的位置
# 假设构建输出在./out目录中
RUN rm -rf /app/litellm/proxy/_experimental/out/* && \
mv ./out/* /app/litellm/proxy/_experimental/out/

# 切换回主应用目录
WORKDIR /app

# 确保您的entrypoint.sh是可执行的
RUN chmod +x entrypoint.sh

# 暴露必要的端口
EXPOSE 4000/tcp

# 使用您所需的命令和参数覆盖CMD指令
# 仅在调试时使用--detailed_debug
CMD ["--port", "4000", "--config", "config.yaml"]

步骤3 构建此Dockerfile

docker build -f Dockerfile -t litellm-prod-build . --progress=plain

步骤4. 在您的环境中设置SERVER_ROOT_PATH运行代理

docker run \
-v $(pwd)/proxy_config.yaml:/app/config.yaml \
-p 4000:4000 \
-e LITELLM_LOG="DEBUG"\
-e SERVER_ROOT_PATH="/api/v1"\
-e DATABASE_URL=postgresql://<user>:<password>@<host>:<port>/<dbname> \
-e LITELLM_MASTER_KEY="sk-1234"\
litellm-prod-build \
--config /app/config.yaml

运行代理后,您可以在http://0.0.0.0:4000/api/v1/上访问它(因为我们设置了SERVER_ROOT_PATH="/api/v1"

步骤5. 验证运行在正确的路径

就是这样,这就是您在自定义根路径上运行代理所需的所有步骤

2. 设置SSL证书

如果您需要为您的本地LiteLLM代理设置SSL证书,请使用此功能。

在启动litellm代理时传递ssl_keyfile_path(SSL密钥文件路径)和ssl_certfile_path(SSL证书文件路径)

docker run ghcr.io/berriai/litellm:main-latest \
--ssl_keyfile_path ssl_test/keyfile.key \
--ssl_certfile_path ssl_test/certfile.crt

在启动litellm代理服务器时提供SSL证书

3. 使用Hypercorn运行Http/2

如果您希望使用hypercorn运行代理以支持http/2,请使用此功能。

用法 在启动代理时传递--run_hypercorn标志

docker run \
-v $(pwd)/proxy_config.yaml:/app/config.yaml \
-p 4000:4000 \
-e LITELLM_LOG="DEBUG"\
-e SERVER_ROOT_PATH="/api/v1"\
-e DATABASE_URL=postgresql://<user>:<password>@<host>:<port>/<dbname> \
-e LITELLM_MASTER_KEY="sk-1234"\
ghcr.io/berriai/litellm:main-latest \
--config /app/config.yaml
--run_hypercorn

4. 将LiteLLM config.yaml文件作为s3、GCS Bucket对象/URL提供

如果您无法在部署服务(例如AWS Fargate、Railway等)上挂载配置文件,请使用此功能。

LiteLLM代理将从s3 Bucket或GCS Bucket读取您的config.yaml

设置以下.env变量

LITELLM_CONFIG_BUCKET_TYPE = "gcs"                              # 设置为 "gcs"
LITELLM_CONFIG_BUCKET_NAME = "litellm-proxy" # 你在GCS上的存储桶名称
LITELLM_CONFIG_BUCKET_OBJECT_KEY = "proxy_config.yaml" # GCS上的对象键

使用这些环境变量启动litellm代理 - litellm将从GCS读取你的配置

docker run --name litellm-proxy \
-e DATABASE_URL=<database_url> \
-e LITELLM_CONFIG_BUCKET_NAME=<bucket_name> \
-e LITELLM_CONFIG_BUCKET_OBJECT_KEY="<object_key>> \
-e LITELLM_CONFIG_BUCKET_TYPE="gcs" \
-p 4000:4000 \
ghcr.io/berriai/litellm-database:main-latest --detailed_debug

特定平台的指南

Kubernetes - 在EKS上部署

步骤1. 使用以下规格创建EKS集群

eksctl create cluster --name=litellm-cluster --region=us-west-2 --node-type=t2.small

步骤2. 在kub集群上挂载litellm代理配置

这将把本地文件proxy_config.yaml挂载到kubernetes集群上

kubectl create configmap litellm-config --from-file=proxy_config.yaml

步骤3. 应用kub.yamlservice.yaml 克隆以下kub.yamlservice.yaml文件并在本地应用

应用kub.yaml

kubectl apply -f kub.yaml

应用service.yaml - 创建一个AWS负载均衡器以暴露代理

kubectl apply -f service.yaml

# service/litellm-service created

步骤4. 获取代理基础URL

kubectl get services

# litellm-service LoadBalancer 10.100.6.31 a472dc7c273fd47fd******.us-west-2.elb.amazonaws.com 4000:30374/TCP 63m

代理基础URL = a472dc7c273fd47fd******.us-west-2.elb.amazonaws.com:4000

就是这样,现在你可以开始使用LiteLLM代理了

额外功能

使用docker compose运行

步骤1

以下是一个示例 docker-compose.yml 文件

version: "3.9"
services:
litellm:
build:
context: .
args:
target: runtime
image: ghcr.io/berriai/litellm:main-latest
ports:
- "4000:4000" # 将容器端口映射到主机,如有必要,更改主机端口
volumes:
- ./litellm-config.yaml:/app/config.yaml # 挂载本地配置文件
# 您可以根据需要更改端口或工作线程数量,或传递任何新的支持的CLI参数。确保此处传递的端口与上面在 `ports` 值中定义的容器端口匹配
command: [ "--config", "/app/config.yaml", "--port", "4000", "--num_workers", "8" ]

# ...其余的docker-compose配置(如果有)

步骤2

创建一个 litellm-config.yaml 文件,包含您的LiteLLM配置,相对于您的 docker-compose.yml 文件。

查看配置文档 这里

步骤3

运行命令 docker-compose updocker compose up,根据您的docker安装情况。

使用 -d 标志以分离模式(后台)运行容器,例如 docker compose up -d

您的LiteLLM容器现在应该在定义的端口上运行,例如 4000

基于IAM的RDS数据库认证

  1. 设置AWS环境变量
export AWS_WEB_IDENTITY_TOKEN='/path/to/token'
export AWS_ROLE_NAME='arn:aws:iam::123456789012:role/MyRole'
export AWS_SESSION_NAME='MySession'

查看所有认证选项

  1. 添加RDS凭证到环境变量
export DATABASE_USER="db-user"
export DATABASE_PORT="5432"
export DATABASE_HOST="database-1-instance-1.cs1ksmwz2xt3.us-west-2.rds.amazonaws.com"
export DATABASE_NAME="database-1-instance-1"
export DATABASE_SCHEMA="schema-name" # 跳过以使用默认的 "public" 模式
  1. 使用iam+rds运行代理
litellm --config /path/to/config.yaml --iam_token_db_auth
优云智算