Zum Hauptinhalt springen

Alarmierung / Webhooks

Benachrichtigungen für

KategorieAlarmtyp
LLM-LeistungHängende API-Aufrufe, Langsame API-Aufrufe, Fehlgeschlagene API-Aufrufe, Benachrichtigungen bei Modell-Ausfällen
Budget & AusgabenBudgetverfolgung pro Schlüssel/Benutzer, Sanfte Budget-Benachrichtigungen, Wöchentliche & Monatliche Ausgabenberichte pro Team/Tag
SystemzustandFehlgeschlagene Datenbank-Lese-/Schreibvorgänge
Tägliche BerichteDie 5 langsamsten LLM-Bereitstellungen, Die 5 LLM-Bereitstellungen mit den meisten fehlgeschlagenen Anfragen, Wöchentliche & Monatliche Ausgaben pro Team/Tag

Funktioniert über

Schnellstart

Richten Sie einen Slack-Alarmkanal ein, um Benachrichtigungen vom Proxy zu erhalten.

Schritt 1: Fügen Sie eine Slack-Webhook-URL zur Umgebungsvariable hinzu

Holen Sie sich eine Slack-Webhook-URL von https://api.slack.com/messaging/webhooks

Sie können auch Discord-Webhooks verwenden, siehe hier

Setzen Sie SLACK_WEBHOOK_URL in Ihrer Proxy-Umgebungsvariable, um Slack-Benachrichtigungen zu aktivieren.

export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/<>/<>/<>"

Schritt 2: Proxy einrichten

general_settings: 
alerting: ["slack"]
alerting_threshold: 300 # sends alerts if requests hang for 5min+ and responses take 5min+
spend_report_frequency: "1d" # [Optional] set as 1d, 2d, 30d .... Specify how often you want a Spend Report to be sent

# [OPTIONAL ALERTING ARGS]
alerting_args:
daily_report_frequency: 43200 # 12 hours in seconds
report_check_interval: 3600 # 1 hour in seconds
budget_alert_ttl: 86400 # 24 hours in seconds
outage_alert_ttl: 60 # 1 minute in seconds
region_outage_alert_ttl: 60 # 1 minute in seconds
minor_outage_alert_threshold: 5
major_outage_alert_threshold: 10
max_outage_alert_list_size: 1000
log_to_console: false

Proxy starten

$ litellm --config /path/to/config.yaml

Schritt 3: Testen!

curl -X GET 'http://0.0.0.0:4000/health/services?service=slack' \
-H 'Authorization: Bearer sk-1234'

Erweitert

Nachrichten aus Benachrichtigungen ausblenden

Standardmäßig zeigen Benachrichtigungen die an messages/input, die an das LLM übergeben wurden. Wenn Sie dies aus Slack-Benachrichtigungen ausblenden möchten, setzen Sie die folgende Einstellung in Ihrer Konfiguration

general_settings:
alerting: ["slack"]
alert_types: ["spend_reports"]

litellm_settings:
redact_messages_in_exceptions: True

Sanfte Budget-Benachrichtigungen für virtuelle Schlüssel

Verwenden Sie dies, um eine Benachrichtigung zu senden, wenn ein Schlüssel/Team kurz vor dem Aufbrauchen seines Budgets steht

Schritt 1. Erstellen Sie einen virtuellen Schlüssel mit einem sanften Budget

Setzen Sie soft_budget auf 0,001

curl -X 'POST' \
'https://:4000/key/generate' \
-H 'accept: application/json' \
-H 'x-goog-api-key: sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"key_alias": "prod-app1",
"team_id": "113c1a22-e347-4506-bfb2-b320230ea414",
"soft_budget": 0.001
}'

Schritt 2. Senden Sie eine Anfrage an den Proxy mit dem virtuellen Schlüssel

curl http://0.0.0.0:4000/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-Nb5eCf427iewOlbxXIH4Ow" \
-d '{
"model": "openai/gpt-4",
"messages": [
{
"role": "user",
"content": "this is a test request, write a short poem"
}
]
}'

Schritt 3. Prüfen Sie Slack auf erwartete Benachrichtigung

Metadaten zu Benachrichtigungen hinzufügen

Fügen Sie Benachrichtigungsmetadaten zu Proxy-Aufrufen für das Debugging hinzu.

import openai
client = openai.OpenAI(
api_key="anything",
base_url="http://0.0.0.0:4000"
)

# request sent to model set on litellm proxy, `litellm --model`
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages = [],
extra_body={
"metadata": {
"alerting_metadata": {
"hello": "world"
}
}
}
)

Erwartete Antwort

Spezifische Alarmtypen auswählen

Setzen Sie alert_types, wenn Sie sich nur für bestimmte Alarmtypen anmelden möchten. Wenn alert_types nicht gesetzt ist, sind alle Standard-Alarmtypen aktiviert.

👉 Alle möglichen Alarmtypen anzeigen

general_settings:
alerting: ["slack"]
alert_types: [
"llm_exceptions",
"llm_too_slow",
"llm_requests_hanging",
"budget_alerts",
"spend_reports",
"db_exceptions",
"daily_reports",
"cooldown_deployment",
"new_model_added",
]

Slack-Kanäle dem Alarmtyp zuordnen

Verwenden Sie dies, wenn Sie bestimmte Kanäle pro Alarmtyp festlegen möchten

Dies ermöglicht Ihnen Folgendes

llm_exceptions -> go to slack channel #llm-exceptions
spend_reports -> go to slack channel #llm-spend-reports

Setzen Sie alert_to_webhook_url in Ihrer config.yaml

model_list:
- model_name: gpt-4
litellm_params:
model: openai/fake
api_key: fake-key
api_base: https://exampleopenaiendpoint-production.up.railway.app/

general_settings:
master_key: sk-1234
alerting: ["slack"]
alerting_threshold: 0.0001 # (Seconds) set an artificially low threshold for testing alerting
alert_to_webhook_url: {
"llm_exceptions": "https://hooks.slack.com/services/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",
"llm_too_slow": "https://hooks.slack.com/services/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",
"llm_requests_hanging": "https://hooks.slack.com/services/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",
"budget_alerts": "https://hooks.slack.com/services/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",
"db_exceptions": "https://hooks.slack.com/services/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",
"daily_reports": "https://hooks.slack.com/services/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",
"spend_reports": "https://hooks.slack.com/services/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",
"cooldown_deployment": "https://hooks.slack.com/services/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",
"new_model_added": "https://hooks.slack.com/services/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",
"outage_alerts": "https://hooks.slack.com/services/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",
}

litellm_settings:
success_callback: ["langfuse"]

Testen Sie es - senden Sie eine gültige LLM-Anfrage - erwarten Sie eine llm_too_slow Benachrichtigung in ihrem eigenen Slack-Kanal

curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "Hello, Claude gm!"}
]
}'

MS Teams Webhooks

MS Teams bietet eine Slack-kompatible Webhook-URL, die Sie für Benachrichtigungen verwenden können

Schnellstart
  1. Holen Sie sich eine Webhook-URL für Ihren Microsoft Teams-Kanal

  2. Fügen Sie sie zu Ihrer .env hinzu

SLACK_WEBHOOK_URL="https://berriai.webhook.office.com/webhookb2/...6901/IncomingWebhook/b55fa0c2a48647be8e6effedcd540266/e04b1092-4a3e-44a2-ab6b-29a0a4854d1d"
  1. Fügen Sie sie zu Ihrer LiteLLM-Konfiguration hinzu
model_list: 
model_name: "azure-model"
litellm_params:
model: "azure/gpt-35-turbo"
api_key: "my-bad-key" # 👈 bad key

general_settings:
alerting: ["slack"]
alerting_threshold: 300 # sends alerts if requests hang for 5min+ and responses take 5min+
  1. Gesundheitsprüfung ausführen!

Rufen Sie den /health/services-Endpunkt des Proxys auf, um zu testen, ob Ihre Benachrichtigungsverbindung korrekt eingerichtet ist.

curl --location 'http://0.0.0.0:4000/health/services?service=slack' \
--header 'Authorization: Bearer sk-1234'

Erwartete Antwort

Discord Webhooks

Discord bietet eine Slack-kompatible Webhook-URL, die Sie für Benachrichtigungen verwenden können

Schnellstart
  1. Holen Sie sich eine Webhook-URL für Ihren Discord-Kanal

  2. Hängen Sie /slack an Ihren Discord-Webhook an - es sollte dann so aussehen

"https://discord.com/api/webhooks/1240030362193760286/cTLWt5ATn1gKmcy_982rl5xmYHsrM1IWJdmCL1AyOmU9JdQXazrp8L1_PYgUtgxj8x4f/slack"
  1. Fügen Sie sie zu Ihrer LiteLLM-Konfiguration hinzu
model_list: 
model_name: "azure-model"
litellm_params:
model: "azure/gpt-35-turbo"
api_key: "my-bad-key" # 👈 bad key

general_settings:
alerting: ["slack"]
alerting_threshold: 300 # sends alerts if requests hang for 5min+ and responses take 5min+

environment_variables:
SLACK_WEBHOOK_URL: "https://discord.com/api/webhooks/1240030362193760286/cTLWt5ATn1gKmcy_982rl5xmYHsrM1IWJdmCL1AyOmU9JdQXazrp8L1_PYgUtgxj8x4f/slack"

[BETA]Webhooks für Budget-Benachrichtigungen

Hinweis: Dies ist eine Beta-Funktion, daher kann sich die Spezifikation ändern.

Setzen Sie einen Webhook, um über Budget-Benachrichtigungen informiert zu werden.

  1. Konfigurieren Sie config.yaml

Fügen Sie die URL zu Ihrer Umgebung hinzu. Zum Testen können Sie einen Link von hier verwenden

export WEBHOOK_URL="https://webhook.site/6ab090e8-c55f-4a23-b075-3209f5c57906"

Fügen Sie 'webhook' zu config.yaml hinzu

general_settings: 
alerting: ["webhook"] # 👈 KEY CHANGE
  1. Proxy starten
litellm --config /path/to/config.yaml

# RUNNING on http://0.0.0.0:4000
  1. Testen Sie es!
curl -X GET --location 'http://0.0.0.0:4000/health/services?service=webhook' \
--header 'Authorization: Bearer sk-1234'

Erwartete Antwort

{
"spend": 1, # the spend for the 'event_group'
"max_budget": 0, # the 'max_budget' set for the 'event_group'
"token": "88dc28d0f030c55ed4ab77ed8faf098196cb1c05df778539800c9f1243fe6b4b",
"user_id": "default_user_id",
"team_id": null,
"user_email": null,
"key_alias": null,
"projected_exceeded_data": null,
"projected_spend": null,
"event": "budget_crossed", # Literal["budget_crossed", "threshold_crossed", "projected_limit_exceeded"]
"event_group": "user",
"event_message": "User Budget: Budget Crossed"
}

API-Spezifikation für Webhook-Ereignis

  • spend float: Der aktuelle Ausgabenbetrag für die 'event_group'.

  • max_budget float oder null: Das maximal zulässige Budget für die 'event_group'. null, wenn nicht gesetzt.

  • token str: Ein gehashter Wert des Schlüssels, der zur Authentifizierung oder Identifizierung verwendet wird.

  • customer_id str oder null: Die ID des Kunden, der mit dem Ereignis verbunden ist (optional).

  • internal_user_id str oder null: Die ID des internen Benutzers, der mit dem Ereignis verbunden ist (optional).

  • team_id str oder null: Die ID des Teams, das mit dem Ereignis verbunden ist (optional).

  • user_email str oder null: Die E-Mail des internen Benutzers, der mit dem Ereignis verbunden ist (optional).

  • key_alias str oder null: Ein Alias für den Schlüssel, der mit dem Ereignis verbunden ist (optional).

  • projected_exceeded_date str oder null: Das Datum, an dem das Budget voraussichtlich überschritten wird, zurückgegeben, wenn 'soft_budget' für den Schlüssel gesetzt ist (optional).

  • projected_spend float oder null: Der prognostizierte Ausgabenbetrag, zurückgegeben, wenn 'soft_budget' für den Schlüssel gesetzt ist (optional).

  • event Literal["budget_crossed", "threshold_crossed", "projected_limit_exceeded"]: Der Typ des Ereignisses, das den Webhook ausgelöst hat. Mögliche Werte sind

    • "spend_tracked": Wird jedes Mal ausgelöst, wenn Ausgaben für eine Kunden-ID verfolgt werden.
    • "budget_crossed": Zeigt an, dass die Ausgaben das maximale Budget überschritten haben.
    • "threshold_crossed": Zeigt an, dass die Ausgaben einen Schwellenwert überschritten haben (derzeit gesendet, wenn 85 % und 95 % des Budgets erreicht sind).
    • "projected_limit_exceeded": Nur für "Schlüssel" - Zeigt an, dass die prognostizierten Ausgaben voraussichtlich den Schwellenwert des sanften Budgets überschreiten werden.
  • event_group Literal["customer", "internal_user", "key", "team", "proxy"]: Die Gruppe, die mit dem Ereignis verbunden ist. Mögliche Werte sind

    • "customer": Das Ereignis bezieht sich auf einen bestimmten Kunden
    • "internal_user": Das Ereignis bezieht sich auf einen bestimmten internen Benutzer.
    • "key": Das Ereignis bezieht sich auf einen bestimmten Schlüssel.
    • "team": Das Ereignis bezieht sich auf ein Team.
    • "proxy": Das Ereignis bezieht sich auf einen Proxy.
  • event_message str: Eine für Menschen lesbare Beschreibung des Ereignisses.

Region-Ausfall-Benachrichtigung (✨ Enterprise-Funktion)

Richten Sie Benachrichtigungen ein, wenn eine Anbieterregion einen Ausfall hat.

general_settings:
alerting: ["slack"]
alert_types: ["region_outage_alerts"]

Standardmäßig wird dies ausgelöst, wenn mehrere Modelle in einer Region 5+ Anfragen in 1 Minute fehlschlagen. Fehler mit Statuscode '400' werden nicht gezählt (d.h. BadRequestErrors).

Schwellenwerte steuern mit

general_settings:
alerting: ["slack"]
alert_types: ["region_outage_alerts"]
alerting_args:
region_outage_alert_ttl: 60 # time-window in seconds
minor_outage_alert_threshold: 5 # number of errors to trigger a minor alert
major_outage_alert_threshold: 10 # number of errors to trigger a major alert

Alle möglichen Alarmtypen

👉 Hier erfahren Sie, wie Sie bestimmte Alarmtypen einstellen

LLM-bezogene Benachrichtigungen

AlarmtypBeschreibungStandardmäßig aktiviert
llm_exceptionsBenachrichtigungen für LLM-API-Ausnahmen
llm_too_slowBenachrichtigungen für LLM-Antworten, die langsamer als der eingestellte Schwellenwert sind
llm_requests_hangingBenachrichtigungen für LLM-Anfragen, die nicht abgeschlossen werden
cooldown_deploymentBenachrichtigungen, wenn eine Bereitstellung in den "Cooldown" versetzt wird
new_model_addedBenachrichtigungen, wenn ein neues Modell über /model/new zum LiteLLM-Proxy hinzugefügt wird
outage_alertsBenachrichtigungen, wenn eine bestimmte LLM-Bereitstellung einen Ausfall hat
region_outage_alertsBenachrichtigungen, wenn eine bestimmte LLM-Region einen Ausfall hat. Beispiel: us-east-1

Budget- und Ausgabenbenachrichtigungen

AlarmtypBeschreibungStandardmäßig aktiviert
budget_alertsBenachrichtigungen im Zusammenhang mit Budgetgrenzen oder -schwellenwerten
spend_reportsPeriodische Berichte über Ausgaben in Teams oder Tags
failed_tracking_spendBenachrichtigungen, wenn die Ausgabenverfolgung fehlschlägt
daily_reportsTägliche Ausgabenberichte
fallback_reportsWöchentliche Berichte über LLM-Fallback-Vorkommnisse

Datenbank-Benachrichtigungen

AlarmtypBeschreibungStandardmäßig aktiviert
db_exceptionsBenachrichtigungen für datenbankbezogene Ausnahmen

Benachrichtigungen für Verwaltungs-Endpunkte - Virtueller Schlüssel, Team, Interner Benutzer

AlarmtypBeschreibungStandardmäßig aktiviert
new_virtual_key_createdBenachrichtigungen bei der Erstellung eines neuen virtuellen Schlüssels
virtual_key_updatedBenachrichtigungen bei Änderungen an einem virtuellen Schlüssel
virtual_key_deletedBenachrichtigungen bei der Entfernung eines virtuellen Schlüssels
new_team_createdBenachrichtigungen bei der Erstellung eines neuen Teams
team_updatedBenachrichtigungen bei Änderungen von Teamdetails
team_deletedBenachrichtigungen bei der Löschung eines Teams
new_internal_user_createdBenachrichtigungen für neue interne Benutzerkonten
internal_user_updatedBenachrichtigungen bei Änderungen von Details eines internen Benutzers
internal_user_deletedBenachrichtigungen bei der Entfernung eines internen Benutzerkontos

alerting_args Spezifikation

ParameterStandardBeschreibung
daily_report_frequency43200 (12 Stunden)Häufigkeit des Empfangs von Berichten über Bereitstellungslatenz/Ausfälle in Sekunden
report_check_interval3600 (1 Stunde)Wie oft geprüft wird, ob ein Bericht gesendet werden soll (Hintergrundprozess) in Sekunden
budget_alert_ttl86400 (24 Stunden)Cache-TTL für Budget-Benachrichtigungen zur Vermeidung von Spam, wenn das Budget überschritten wird
outage_alert_ttl60 (1 Minute)Zeitfenster zum Sammeln von Modell-Ausfallfehlern in Sekunden
region_outage_alert_ttl60 (1 Minute)Zeitfenster zum Sammeln von regionalen Ausfallfehlern in Sekunden
minor_outage_alert_threshold5Anzahl der Fehler, die eine geringfügige Ausfallbenachrichtigung auslösen (400-Fehler nicht gezählt)
major_outage_alert_threshold10Anzahl der Fehler, die eine schwerwiegende Ausfallbenachrichtigung auslösen (400-Fehler nicht gezählt)
max_outage_alert_list_size1000Maximale Anzahl von Fehlern, die pro Modell/Region im Cache gespeichert werden
log_to_consolefalseWenn true, wird die Benachrichtigungsnutzlast als .warning-Protokoll auf der Konsole ausgegeben.