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
- LiteLLM CLI (pip-Paket)
docker pull ghcr.io/berriai/litellm:main-latest
$ pip install 'litellm[proxy]'
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 anzeigenmodel(str) - Gibt den Modellnamen an, der anlitellm.acompletion/litellm.aembeddingusw. 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 mitos.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.
Nützliche Links
- Alle unterstützten LLM-API-Anbieter (OpenAI/Bedrock/Vertex/etc.)
- Vollständige config.yaml-Spezifikation
- Anbieterspezifische Parameter übergeben
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
- LiteLLM CLI (pip-Paket)
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
$ litellm --config /app/config.yaml --detailed_debug
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
}
}
Nützliche Links
- Alle unterstützten LLM-API-Anbieter (OpenAI/Bedrock/Vertex/etc.)
- LiteLLM Proxy über OpenAI SDK, Langchain, etc. aufrufen
- Alle API-Endpunkte Swagger
- Andere/Nicht-Chat-Completion-Endpunkte
- Weiterleitung für VertexAI, Bedrock, etc.
3. Einen virtuellen Schlüssel generieren
Ausgaben verfolgen und Modellzugriff über virtuelle Schlüssel für den Proxy steuern
3.1 Datenbank einrichten
Anforderungen
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.
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 mitsk-beginnen).
- Setzen Sie einen
- 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
- Auf config.yaml setzen setzen Sie Ihren Master-Schlüssel unter
- Beschreibung:
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.
- Setzen Sie eine
- 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
- Auf config.yaml setzen setzen Sie Ihren Master-Schlüssel unter
- Beschreibung:
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
}'
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"
}
}
Nützliche Links
- Erstellung virtueller Schlüssel
- API-Endpunkte für Schlüsselverwaltung Swagger
- Budgets / Ratenbegrenzungen pro Schlüssel/Benutzer/Team festlegen
- Dynamische TPM/RPM-Limits für Schlüssel
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.
- 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.
- 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
Unsere E-Mails ✉️ ishaan@berri.ai / krrish@berri.ai