Zum Hauptinhalt springen

Erste Schritte - E2E Tutorial

End-to-End-Tutorial für LiteLLM Proxy, um

  • ein Azure OpenAI-Modell hinzuzufügen
  • einen erfolgreichen /chat/completion-Aufruf zu tätigen
  • einen virtuellen Schlüssel zu generieren
  • RPM-Limit für virtuellen Schlüssel festzulegen

Voraussetzungen

  • LiteLLM Docker Image **ODER** LiteLLM CLI (pip-Paket) installieren
docker pull ghcr.io/berriai/litellm:main-latest

Alle Docker-Images anzeigen

1. Ein Modell hinzufügen

LiteLLM Proxy mit einer config.yaml-Datei steuern.

Konfigurieren Sie Ihre config.yaml mit Ihrem Azure-Modell.

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

Modelllisten-Spezifikation

  • model_name (str) - Dieses Feld sollte den Namen des Modells enthalten, wie er empfangen wird.
  • litellm_params (dict) Alle LiteLLM-Parameter anzeigen
    • model (str) - Gibt den Modellnamen an, der an litellm.acompletion / litellm.aembedding usw. gesendet werden soll. Dies ist der von LiteLLM verwendete Identifikator, um die richtige Modell- + Anbieterlogik im Backend zu routen.
    • api_key (str) - Der für die Authentifizierung erforderliche API-Schlüssel. Er kann aus einer Umgebungsvariablen mit os.environ/ abgerufen werden.
    • api_base (str) - Die API-Basis für Ihre Azure-Bereitstellung.
    • api_version (str) - Die API-Version, die bei der Anrufung der Azure OpenAI API verwendet werden soll. Holen Sie sich die neueste Inference API-Version hier.

2. Einen erfolgreichen /chat/completion-Aufruf tätigen

LiteLLM Proxy ist 100% OpenAI-kompatibel. Testen Sie Ihr Azure-Modell über die Route /chat/completions.

2.1 Proxy starten

Speichern Sie Ihre config.yaml aus Schritt 1. als 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 \
ghcr.io/berriai/litellm:main-latest \
--config /app/config.yaml --detailed_debug

# RUNNING on http://0.0.0.0:4000

Bestätigen Sie, dass Ihre config.yaml korrekt eingehängt wurde

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

2.2 Aufruf tätigen

curl -X POST 'http://0.0.0.0:4000/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk-1234' \
-d '{
"model": "gpt-3.5-turbo",
"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"
}
]
}'

Erwartete Antwort

{
"id": "chatcmpl-2076f062-3095-4052-a520-7c321c115c68",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "I am gpt-3.5-turbo",
"role": "assistant",
"tool_calls": null,
"function_call": null
}
}
],
"created": 1724962831,
"model": "gpt-3.5-turbo",
"object": "chat.completion",
"system_fingerprint": null,
"usage": {
"completion_tokens": 20,
"prompt_tokens": 10,
"total_tokens": 30
}
}

3. Einen virtuellen Schlüssel generieren

Ausgaben verfolgen und Modellzugriff über virtuelle Schlüssel für den Proxy steuern

3.1 Datenbank einrichten

Anforderungen

  • Benötigt eine Postgres-Datenbank (z. B. Supabase, Neon, etc.)
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/my_azure_deployment
api_base: os.environ/AZURE_API_BASE
api_key: "os.environ/AZURE_API_KEY"
api_version: "2024-07-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

Speichern Sie config.yaml als litellm_config.yaml (verwendet in 3.2).


Was ist general_settings?

Dies sind Einstellungen für den LiteLLM Proxy Server.

Alle allgemeinen Einstellungen finden Sie hier.

  1. master_key (str)

    • Beschreibung:
      • Setzen Sie einen master key, dies ist Ihr Proxy-Admin-Schlüssel - Sie können ihn zum Erstellen anderer Schlüssel verwenden (🚨 muss mit sk- beginnen).
    • Verwendung:
      • Auf config.yaml setzen setzen Sie Ihren Master-Schlüssel unter general_settings:master_key, Beispiel - master_key: sk-1234
      • Umgebungsvariable setzen setzen Sie LITELLM_MASTER_KEY
  2. database_url (str)

    • Beschreibung:
      • Setzen Sie eine database_url, dies ist die Verbindung zu Ihrer Postgres-DB, die von LiteLLM zur Generierung von Schlüsseln, Benutzern und Teams verwendet wird.
    • Verwendung:
      • Auf config.yaml setzen setzen Sie Ihren Master-Schlüssel unter general_settings:database_url, Beispiel - database_url: "postgresql://..."
      • Setzen Sie DATABASE_URL=postgresql://<user>:<password>@<host>:<port>/<dbname> in Ihrer Umgebung

3.2 Proxy starten

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.3 Schlüssel mit RPM-Limit erstellen

Erstellen Sie einen Schlüssel mit rpm_limit: 1. Dies erlaubt nur 1 Anfrage pro Minute für Aufrufe an den Proxy mit diesem Schlüssel.

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-Spezifikation anzeigen

Erwartete Antwort

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

3.4 Testen!

Verwenden Sie Ihren virtuellen Schlüssel aus Schritt 3.3

1. Aufruf - Erwartungsgemäß erfolgreich!

curl -X POST 'http://0.0.0.0:4000/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk-12...' \
-d '{
"model": "gpt-3.5-turbo",
"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"
}
]
}'

Erwartete Antwort

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

2. Aufruf - Erwartungsgemäß fehlgeschlagen!

Warum ist dieser Aufruf fehlgeschlagen?

Wir haben das RPM-Limit (Anfragen pro Minute) des virtuellen Schlüssels auf 1 gesetzt. Dies wurde nun überschritten.

curl -X POST 'http://0.0.0.0:4000/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk-12...' \
-d '{
"model": "gpt-3.5-turbo",
"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"
}
]
}'

Erwartete Antwort

{
"error": {
"message": "Max parallel request limit reached. Hit limit for api_key: daa1b272072a4c6841470a488c5dad0f298ff506e1cc935f4a181eed90c182ad. tpm_limit: 100, current_tpm: 29, rpm_limit: 1, current_rpm: 2.",
"type": "None",
"param": "None",
"code": "429"
}
}

Fehlerbehebung

Nicht-Root-Docker-Image?

Wenn Sie das Docker-Image als Nicht-Root-Benutzer ausführen müssen, verwenden Sie dieses.

SSL-Verifizierungsproblem / Verbindungsfehler.

Wenn Sie sehen

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

ODER

Connection Error.

Sie können die SSL-Verifizierung deaktivieren mit

model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/my_azure_deployment
api_base: os.environ/AZURE_API_BASE
api_key: "os.environ/AZURE_API_KEY"
api_version: "2024-07-01-preview"

litellm_settings:
ssl_verify: false # 👈 KEY CHANGE

(DB) Alle Verbindungsversuche fehlgeschlagen

Wenn Sie sehen

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

Dies könnte ein DB-Berechtigungsproblem sein.

  1. DB-Benutzerberechtigungsproblem validieren

Versuchen Sie, eine neue Datenbank zu erstellen.

STATEMENT: CREATE DATABASE "litellm"

Wenn Sie Folgendes erhalten

ERROR: permission denied to create 

Dies deutet auf ein Berechtigungsproblem hin.

  1. Erteilen Sie Berechtigungen für Ihren DB-Benutzer

Es sollte ungefähr so aussehen

psql -U postgres
CREATE DATABASE litellm;

Auf CloudSQL ist dies

GRANT ALL PRIVILEGES ON DATABASE litellm TO your_username;

Was sind litellm_settings?

LiteLLM Proxy verwendet das LiteLLM Python SDK zur Verarbeitung von LLM-API-Aufrufen.

litellm_settings sind Modul-Parameter für das LiteLLM Python SDK (entspricht dem Aufruf von litellm.<some_param> im SDK). Alle Parameter finden Sie hier

Support & Sprechen Sie mit den Gründern

Chat on WhatsApp Chat on Discord