Budget-Routing
LiteLLM unterstützt das Festlegen der folgenden Budgets
- Anbieter-Budget - 100 $/Tag für OpenAI, 100 $/Tag für Azure.
- Modell-Budget - 100 $/Tag für gpt-4 https://api-base-1, 100 $/Tag für gpt-4o https://api-base-2
- Tag-Budget - 10 $/Tag für tag=
product:chat-bot, 100 $/Tag für tag=product:chat-bot-2
Anbieter-Budgets
Verwenden Sie dies, um Budgets für LLM-Anbieter festzulegen – z. B. 100 $/Tag für OpenAI, 100 $/Tag für Azure.
Schnellstart
Legen Sie Anbieter-Budgets in Ihrer proxy_config.yaml-Datei fest
Proxy-Konfigurations-Setup
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: openai/gpt-3.5-turbo
api_key: os.environ/OPENAI_API_KEY
router_settings:
provider_budget_config:
openai:
budget_limit: 0.000000000001 # float of $ value budget for time period
time_period: 1d # can be 1d, 2d, 30d, 1mo, 2mo
azure:
budget_limit: 100
time_period: 1d
anthropic:
budget_limit: 100
time_period: 10d
vertex_ai:
budget_limit: 100
time_period: 12d
gemini:
budget_limit: 100
time_period: 12d
# OPTIONAL: Set Redis Host, Port, and Password if using multiple instance of LiteLLM
redis_host: os.environ/REDIS_HOST
redis_port: os.environ/REDIS_PORT
redis_password: os.environ/REDIS_PASSWORD
general_settings:
master_key: sk-1234
Machen Sie eine Testanfrage
Wir erwarten, dass die erste Anfrage erfolgreich ist und die zweite fehlschlägt, da wir das Budget für openai überschreiten
Langchain, OpenAI SDK Anwendungsbeispiele
- Erfolgreicher Aufruf
- Fehlgeschlagener Aufruf
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is test request"}
]
}'
Erwarten Sie, dass dies fehlschlägt, da wir das Budget für den Anbieter openai überschreiten
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is test request"}
]
}'
Erwartete Antwort bei Fehler
{
"error": {
"message": "No deployments available - crossed budget for provider: Exceeded budget for provider openai: 0.0007350000000000001 >= 1e-12",
"type": "None",
"param": "None",
"code": "429"
}
}
Wie das Routing von Anbieter-Budgets funktioniert
Budget-Tracking:
- Verwendet Redis, um die Ausgaben für jeden Anbieter zu verfolgen
- Verfolgt Ausgaben über angegebene Zeiträume (z. B. "1d", "30d")
- Setzt die Ausgaben nach Ablauf des Zeitraums automatisch zurück
Routing-Logik:
- Leitet Anfragen an Anbieter unter deren Budgetgrenzen weiter
- Überspringt Anbieter, die ihr Budget überschritten haben
- Wenn alle Anbieter ihr Budget überschreiten, wird ein Fehler ausgelöst
Unterstützte Zeiträume:
- Sekunden: "Xs" (z. B. "30s")
- Minuten: "Xm" (z. B. "10m")
- Stunden: "Xh" (z. B. "24h")
- Tage: "Xd" (z. B. "1d", "30d")
- Monate: "Xmo" (z. B. "1mo", "2mo")
Anforderungen:
- Redis ist für die Verfolgung von Ausgaben über Instanzen hinweg erforderlich
- Anbieternamen müssen LiteLLM-Anbieternamen sein. Siehe Unterstützte Anbieter
Überwachung des verbleibenden Anbieter-Budgets
Budget und Ausgabendetails abrufen
Verwenden Sie diesen Endpunkt, um das aktuelle Budget, die Ausgaben und die Zeit für die Budgetrücksetzung für einen Anbieter zu überprüfen
Beispielanfrage
curl -X GET https://:4000/provider/budgets \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234"
Beispielantwort
{
"providers": {
"openai": {
"budget_limit": 1e-12,
"time_period": "1d",
"spend": 0.0,
"budget_reset_at": null
},
"azure": {
"budget_limit": 100.0,
"time_period": "1d",
"spend": 0.0,
"budget_reset_at": null
},
"anthropic": {
"budget_limit": 100.0,
"time_period": "10d",
"spend": 0.0,
"budget_reset_at": null
},
"vertex_ai": {
"budget_limit": 100.0,
"time_period": "12d",
"spend": 0.0,
"budget_reset_at": null
}
}
}
Prometheus-Metrik
LiteLLM wird die folgende Metrik auf Prometheus ausgeben, um das verbleibende Budget für jeden Anbieter zu verfolgen
Diese Metrik gibt das verbleibende Budget für einen Anbieter in Dollar (USD) an
litellm_provider_remaining_budget_metric{api_provider="openai"} 10
Modell-Budgets
Verwenden Sie dies, um Budgets für Modelle festzulegen – z. B. 10 $/Tag für openai/gpt-4o, 100 $/Tag für openai/gpt-4o-mini
Schnellstart
Legen Sie Modell-Budgets in Ihrer proxy_config.yaml-Datei fest
model_list:
- model_name: gpt-4o
litellm_params:
model: openai/gpt-4o
api_key: os.environ/OPENAI_API_KEY
max_budget: 0.000000000001 # (USD)
budget_duration: 1d # (Duration. can be 1s, 1m, 1h, 1d, 1mo)
- model_name: gpt-4o-mini
litellm_params:
model: openai/gpt-4o-mini
api_key: os.environ/OPENAI_API_KEY
max_budget: 100 # (USD)
budget_duration: 30d # (Duration. can be 1s, 1m, 1h, 1d, 1mo)
Machen Sie eine Testanfrage
Wir erwarten, dass die erste Anfrage erfolgreich ist und die zweite fehlschlägt, da wir das Budget für openai/gpt-4o überschreiten
Langchain, OpenAI SDK Anwendungsbeispiele
- Erfolgreicher Aufruf
- Fehlgeschlagener Aufruf
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is test request"}
]
}'
Erwarten Sie, dass dies fehlschlägt, da wir das Budget für openai/gpt-4o überschreiten
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is test request"}
]
}'
Erwartete Antwort bei Fehler
{
"error": {
"message": "No deployments available - crossed budget: Exceeded budget for deployment model_name: gpt-4o, litellm_params.model: openai/gpt-4o, model_id: dbe80f2fe2b2465f7bfa9a5e77e0f143a2eb3f7d167a8b55fb7fe31aed62587f: 0.00015250000000000002 >= 1e-12",
"type": "None",
"param": "None",
"code": "429"
}
}
✨ Tag-Budgets
✨ Dies ist eine Funktion nur für Enterprise-Kunden. Hier geht's zum Enterprise-Angebot
Verwenden Sie dies, um Budgets für Tags festzulegen – z. B. 10 $/Tag für tag=product:chat-bot, 100 $/Tag für tag=product:chat-bot-2
Schnellstart
Legen Sie Tag-Budgets fest, indem Sie tag_budget_config in Ihrer proxy_config.yaml-Datei festlegen
model_list:
- model_name: gpt-4o
litellm_params:
model: openai/gpt-4o
api_key: os.environ/OPENAI_API_KEY
litellm_settings:
tag_budget_config:
product:chat-bot: # (Tag)
max_budget: 0.000000000001 # (USD)
budget_duration: 1d # (Duration)
product:chat-bot-2: # (Tag)
max_budget: 100 # (USD)
budget_duration: 1d # (Duration)
Machen Sie eine Testanfrage
Wir erwarten, dass die erste Anfrage erfolgreich ist und die zweite fehlschlägt, da wir das Budget für openai/gpt-4o überschreiten
Langchain, OpenAI SDK Anwendungsbeispiele
- Erfolgreicher Aufruf
- Fehlgeschlagener Aufruf
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is test request"}
],
"metadata": {"tags": ["product:chat-bot"]}
}'
Erwarten Sie, dass dies fehlschlägt, da wir das Budget für tag=product:chat-bot überschreiten
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is test request"}
],
"metadata": {"tags": ["product:chat-bot"]}
}
Erwartete Antwort bei Fehler
{
"error": {
"message": "No deployments available - crossed budget: Exceeded budget for tag='product:chat-bot', tag_spend=0.00015250000000000002, tag_budget_limit=1e-12",
"type": "None",
"param": "None",
"code": "429"
}
}
Multi-Instanz-Setup
Wenn Sie ein Multi-Instanz-Setup verwenden, müssen Sie den Redis-Host, -Port und das -Passwort in der Datei proxy_config.yaml festlegen. Redis wird verwendet, um die Ausgaben über LiteLLM-Instanzen hinweg zu synchronisieren.
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: openai/gpt-3.5-turbo
api_key: os.environ/OPENAI_API_KEY
router_settings:
provider_budget_config:
openai:
budget_limit: 0.000000000001 # float of $ value budget for time period
time_period: 1d # can be 1d, 2d, 30d, 1mo, 2mo
# 👇 Add this: Set Redis Host, Port, and Password if using multiple instance of LiteLLM
redis_host: os.environ/REDIS_HOST
redis_port: os.environ/REDIS_PORT
redis_password: os.environ/REDIS_PASSWORD
general_settings:
master_key: sk-1234
Spezifikation für provider_budget_config
Die provider_budget_config ist ein Wörterbuch, bei dem
- Schlüssel: Anbietername (Zeichenkette) – Muss ein gültiger LiteLLM-Anbietername sein
- Wert: Budget-Konfigurationsobjekt mit den folgenden Parametern
budget_limit: Gleitkommawert, der das Budget in USD darstellttime_period: Dauerzeichenkette in einem der folgenden Formate- Sekunden:
"Xs"(z. B. "30s") - Minuten:
"Xm"(z. B. "10m") - Stunden:
"Xh"(z. B. "24h") - Tage:
"Xd"(z. B. "1d", "30d") - Monate:
"Xmo"(z. B. "1mo", "2mo")
- Sekunden:
Beispielstruktur
provider_budget_config:
openai:
budget_limit: 100.0 # $100 USD
time_period: "1d" # 1 day period
azure:
budget_limit: 500.0 # $500 USD
time_period: "30d" # 30 day period
anthropic:
budget_limit: 200.0 # $200 USD
time_period: "1mo" # 1 month period
gemini:
budget_limit: 50.0 # $50 USD
time_period: "24h" # 24 hour period