跳至主要内容

入门教程

端到端教程,用于 LiteLLM Proxy

  • 添加 Azure OpenAI 模型
  • 成功发起 /chat/completion 调用
  • 生成虚拟密钥
  • 设置虚拟密钥的 RPM 限制

先决条件

  • 安装 LiteLLM Docker 镜像 OR LiteLLM CLI (pip 包)
docker pull docker.litellm.ai/berriai/litellm:main-latest

查看所有 docker 镜像

1. 添加模型

使用 config.yaml 文件控制 LiteLLM Proxy。

使用您的 azure 模型设置 config.yaml。

注意:当使用数据库的代理时,您也可以 仅通过 UI 添加模型 (UI 在 /ui 路由上可用)。

model_list:
- model_name: gpt-4o
litellm_params:
model: azure/my_azure_deployment
api_base: os.environ/AZURE_API_BASE
api_key: "os.environ/AZURE_API_KEY"
api_version: "2025-01-01-preview" # [OPTIONAL] litellm uses the latest azure api_version by default

模型列表规范

您可以在 模型配置 部分了解更多关于模型解析的工作方式。

  • model_name (str) - 此字段应包含收到的模型名称。
  • litellm_params (dict) 查看所有 LiteLLM 参数
    • model (str) - 指定要发送到 litellm.acompletion / litellm.aembedding 等的型号名称。这是 LiteLLM 用于在后端路由到正确的模型 + 提供程序逻辑的标识符。
    • api_key (str) - 身份验证所需的 API 密钥。可以使用 os.environ/ 从环境变量中检索它。
    • api_base (str) - 您的 azure 部署的 API 基本地址。
    • api_version (str) - 调用 Azure 的 OpenAI API 时使用的 API 版本。在 此处 获取最新的推理 API 版本。


2. 发起成功的 /chat/completion 调用

LiteLLM Proxy 与 OpenAI 完全兼容。通过 /chat/completions 路由测试您的 azure 模型。

2.1 启动 Proxy

将步骤 1 中的 config.yaml 保存为 litellm_config.yaml

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

# RUNNING on http://0.0.0.0:4000

确认您的 config.yaml 已正确挂载

Loaded config YAML (api_key and environment_variables are not shown):
{
"model_list": [
{
"model_name ...

2.2 发起调用

curl -X POST 'http://0.0.0.0:4000/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk-1234' \
-d '{
"model": "gpt-4o",
"messages": [
{
"role": "system",
"content": "You are an LLM named gpt-4o"
},
{
"role": "user",
"content": "what is your name?"
}
]
}'

预期响应

{
"id": "chatcmpl-BcO8tRQmQV6Dfw6onqMufxPkLLkA8",
"created": 1748488967,
"model": "gpt-4o-2024-11-20",
"object": "chat.completion",
"system_fingerprint": "fp_ee1d74bde0",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "My name is **gpt-4o**! How can I assist you today?",
"role": "assistant",
"tool_calls": null,
"function_call": null,
"annotations": []
}
}
],
"usage": {
"completion_tokens": 19,
"prompt_tokens": 28,
"total_tokens": 47,
"completion_tokens_details": {
"accepted_prediction_tokens": 0,
"audio_tokens": 0,
"reasoning_tokens": 0,
"rejected_prediction_tokens": 0
},
"prompt_tokens_details": {
"audio_tokens": 0,
"cached_tokens": 0
}
},
"service_tier": null,
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
]
}

3. 生成虚拟密钥

通过虚拟密钥跟踪支出并控制代理的模型访问权限

3.1 设置数据库

要求

  • 需要一个 postgres 数据库(例如 SupabaseNeon 等)
model_list:
- model_name: gpt-4o
litellm_params:
model: azure/my_azure_deployment
api_base: os.environ/AZURE_API_BASE
api_key: "os.environ/AZURE_API_KEY"
api_version: "2025-01-01-preview" # [OPTIONAL] litellm uses the latest azure api_version by default

general_settings:
master_key: sk-1234
database_url: "postgresql://<user>:<password>@<host>:<port>/<dbname>" # 👈 KEY CHANGE

将 config.yaml 保存为 litellm_config.yaml (在 3.2 中使用)。


什么是 general_settings

这些是 LiteLLM Proxy 服务器的设置。

此处 查看所有常规设置。

  1. master_key (str)

    • 描述:
      • 设置 master key,这是您的 Proxy 管理员密钥 - 您可以使用它来创建其他密钥 (🚨 必须以 sk- 开头)。
    • 用法:
      • 在 config.yaml 上设置general_settings:master_key 下设置您的 master key,例如 - master_key: sk-1234
      • 设置环境变量 设置 LITELLM_MASTER_KEY
  2. database_url (str)

    • 描述:
      • 设置 database_url,这是连接到您的 Postgres DB 的连接,litellm 用于生成密钥、用户、团队。
    • 用法:
      • 在 config.yaml 上设置general_settings:database_url 下设置您的 database_url,例如 - database_url: "postgresql://..."
      • 在您的环境变量中设置 DATABASE_URL=postgresql://<user>:<password>@<host>:<port>/<dbname>

3.2 启动 Proxy

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

3.3 创建带有 RPM 限制的密钥

创建一个带有 rpm_limit: 1 的密钥。这将仅允许每分钟 1 个请求调用带有此密钥的代理。

curl -L -X POST 'http://0.0.0.0:4000/key/generate' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"rpm_limit": 1
}'

查看完整的 API 规范

预期响应

{
"key": "sk-12..."
}

3.4 测试它!

使用步骤 3.3 中的虚拟密钥

第一次调用 - 预计会成功!

curl -X POST 'http://0.0.0.0:4000/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk-12...' \
-d '{
"model": "gpt-4o",
"messages": [
{
"role": "system",
"content": "You are a helpful math tutor. Guide the user through the solution step by step."
},
{
"role": "user",
"content": "how can I solve 8x + 7 = -23"
}
]
}'

预期响应

{
"id": "chatcmpl-2076f062-3095-4052-a520-7c321c115c68",
"choices": [
...
}

第二次调用 - 预计会失败!

为什么此调用失败了?

我们将虚拟密钥的每分钟请求数 (RPM) 限制设置为 1。现在已经超过此限制。

curl -X POST 'http://0.0.0.0:4000/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk-12...' \
-d '{
"model": "gpt-4o",
"messages": [
{
"role": "system",
"content": "You are a helpful math tutor. Guide the user through the solution step by step."
},
{
"role": "user",
"content": "how can I solve 8x + 7 = -23"
}
]
}'

预期响应

{
"error": {
"message": "LiteLLM Rate Limit Handler for rate limit type = key. Crossed TPM / RPM / Max Parallel Request Limit. current rpm: 1, rpm limit: 1, current tpm: 348, tpm limit: 9223372036854775807, current max_parallel_requests: 0, max_parallel_requests: 9223372036854775807",
"type": "None",
"param": "None",
"code": "429"
}
}

关键概念

本节解释 LiteLLM AI Gateway 的关键概念。

了解模型配置

对于此 config.yaml 示例

model_list:
- model_name: gpt-4o
litellm_params:
model: azure/my_azure_deployment
api_base: os.environ/AZURE_API_BASE
api_key: "os.environ/AZURE_API_KEY"
api_version: "2025-01-01-preview" # [OPTIONAL] litellm uses the latest azure api_version by default

模型解析的工作方式

Client Request                LiteLLM Proxy                 Provider API
────────────── ──────────────── ─────────────

POST /chat/completions
{ 1. Looks up model_name
"model": "gpt-4o" ──────────▶ in config.yaml
...
} 2. Finds matching entry:
model_name: gpt-4o

3. Extracts litellm_params:
model: azure/my_azure_deployment
api_base: https://...
api_key: sk-...

4. Routes to provider ──▶ Azure OpenAI API
POST /deployments/my_azure_deployment/...

分解 litellm_params 下的 model 参数

model_list:
- model_name: gpt-4o # What the client calls
litellm_params:
model: azure/my_azure_deployment # <provider>/<model-name>
───── ───────────────────
│ │
│ └─────▶ Model name sent to the provider API

└─────────────────▶ Provider that LiteLLM routes to

可视化分解

model: azure/my_azure_deployment
└─┬─┘ └─────────┬─────────┘
│ │
│ └────▶ The actual model identifier that gets sent to Azure
│ (e.g., your deployment name, or the model name)

└──────────────────▶ Tells LiteLLM which provider to use
(azure, openai, anthropic, bedrock, etc.)

关键概念

  • model_name:您的客户端用来调用模型的别名。这是您在 API 请求中发送的内容(例如,gpt-4o)。

  • model (在 litellm_params 中):格式为 <provider>/<model-identifier>

    • 提供程序(在 / 之前):路由到正确的 LLM 提供程序(例如,azureopenaianthropicbedrock
    • 模型标识符(在 / 之后):发送到该提供程序 API 的实际模型/部署名称

高级配置示例

对于自定义 OpenAI 兼容端点(例如,vLLM、Ollama、自定义部署)

model_list:
- model_name: my-custom-model
litellm_params:
model: openai/nvidia/llama-3.2-nv-embedqa-1b-v2
api_base: http://my-service.svc.cluster.local:8000/v1
api_key: "sk-1234"

分解复杂的模型路径

model: openai/nvidia/llama-3.2-nv-embedqa-1b-v2
└─┬──┘ └────────────┬────────────────┘
│ │
│ └────▶ Full model string sent to the provider API
│ (in this case: "nvidia/llama-3.2-nv-embedqa-1b-v2")

└──────────────────────▶ Provider (openai = OpenAI-compatible API)

关键点:在第一个 / 之后的所有内容都按原样传递给提供程序的 API。

常见模式

model_list:
# Azure deployment
- model_name: gpt-4
litellm_params:
model: azure/gpt-4-deployment
api_base: https://my-azure.openai.azure.com

# OpenAI
- model_name: gpt-4
litellm_params:
model: openai/gpt-4
api_key: os.environ/OPENAI_API_KEY

# Custom OpenAI-compatible endpoint
- model_name: my-llama-model
litellm_params:
model: openai/meta/llama-3-8b
api_base: http://my-vllm-server:8000/v1
api_key: "optional-key"

# Bedrock
- model_name: claude-3
litellm_params:
model: bedrock/anthropic.claude-3-sonnet-20240229-v1:0
aws_region_name: us-east-1

故障排除

非 root docker 镜像?

如果您需要以非 root 用户身份运行 docker 镜像,请使用 此镜像

SSL 验证问题 / 连接错误。

如果您看到

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)

或者

Connection Error.

您可以使用以下方法禁用 ssl 验证

model_list:
- model_name: gpt-4o
litellm_params:
model: azure/my_azure_deployment
api_base: os.environ/AZURE_API_BASE
api_key: "os.environ/AZURE_API_KEY"
api_version: "2025-01-01-preview"

litellm_settings:
ssl_verify: false # 👈 KEY CHANGE

(DB) 所有连接尝试均失败

如果您看到

httpx.ConnectError: All connection attempts failed                                                                        

ERROR: Application startup failed. Exiting.
3:21:43 - LiteLLM Proxy:ERROR: utils.py:2207 - Error getting LiteLLM_SpendLogs row count: All connection attempts failed

这可能是 DB 权限问题。

  1. 验证 db 用户权限问题

尝试创建一个新的数据库。

STATEMENT: CREATE DATABASE "litellm"

如果您收到

ERROR: permission denied to create 

这表明您存在权限问题。

  1. 授予您的 DB 用户权限

它应该如下所示

psql -U postgres
CREATE DATABASE litellm;

在 CloudSQL 上,这是

GRANT ALL PRIVILEGES ON DATABASE litellm TO your_username;

什么是 litellm_settings

LiteLLM Proxy 使用 LiteLLM Python SDK 处理 LLM API 调用。

litellm_settings 是 LiteLLM Python SDK 的模块级参数(相当于执行 litellm.<some_param> 在 SDK 上)。您可以在 此处 查看所有参数

支持 & 与创始人交流

Chat on WhatsApp Chat on Discord