Übersicht
Mit Budgets legen Sie Ausgabenlimits für einenuser_path-Teilbaum, ein
Request-Label oder einen Provider fest. GoModel wertet sie
anhand der erfassten Kostendatensätze der Nutzung aus und blockiert passende
Requests, wenn ein Limit bereits ausgeschöpft ist.
Jedes Budget hat einen Scope, der benennt, was es begrenzt:
Verwenden Sie Budgets für Limits wie diese:
/team/alphadarf$10pro Tag ausgeben/team/alphadarf$50pro Woche ausgeben/hat ein globales Monatslimit- alles mit dem Label
Mobile-App-iOSdarf$500pro Monat ausgeben - der Provider
openai-proddarf$100pro Tag ausgeben, über alle Benutzer hinweg
Die Budget-Durchsetzung läuft nur, wenn Budgets global aktiviert sind und im
aktiven Workflow Budget aktiviert ist. Die Workflow-Steuerung Budget ist
standardmäßig aktiviert, wenn das globale Budget-Feature eingeschaltet ist.
Budgets aktivieren
Budgets sind standardmäßig aktiviert:Budgets erstellen
Sie können Budgets im Dashboard erstellen:
label- bzw. provider-Chip. Im
Dashboard erstellte Budgets sind als manual gekennzeichnet. Aus YAML oder
Umgebungsvariablen geladene Budgets sind als config gekennzeichnet.
Sie können Budgets auch per YAML vorbelegen:
SET_BUDGET_ wird zu einem User-Path. Verwenden Sie doppelte
Unterstriche (__) zwischen Pfadsegmenten; einfache Unterstriche bleiben Teil eines
Segments:
SET_BUDGET_TEAM__ALPHA->/team/alphaSET_BUDGET_USER_123->/user_123SET_BUDGET_->/
__ benötigt.
Provider-Budgets verwenden ein eigenes Präfix, SET_PROVIDER_BUDGET_<NAME>, analog zu
SET_PROVIDER_RATE_LIMIT_<NAME>. Unterstriche im Suffix werden zu Bindestrichen,
sodass SET_PROVIDER_BUDGET_OPENAI_PROD den Provider openai-prod begrenzt.
Für Label-Budgets gibt es keine Form als Umgebungsvariable. Labels werden exakt
abgeglichen, einschließlich Groß- und Kleinschreibung, und können Zeichen
enthalten, die sich in Namen von Umgebungsvariablen nicht ausdrücken lassen.
Deklarieren Sie sie in YAML unter
budgets.labels oder legen Sie sie im Dashboard
oder über die Admin API an.
Die Spalte Sekunden ist der interne Bezeichner des Zeitraums. Standardzeiträume
verwenden die konfigurierte Logik für Reset-Anker;
monthly wird beispielsweise als
2592000 gespeichert, aber an Kalendermonats-Ankern zurückgesetzt, wobei der
Reset-Tag bei kürzeren Monaten begrenzt wird. Nur benutzerdefinierte
period_seconds-Werte verhalten sich als Fenster mit fester Sekundenzahl.
Für benutzerdefinierte Fenster setzen Sie period_seconds in YAML:
Funktionsweise des Abgleichs
Budget-Pfade gelten für den konfigurierten Pfad und seine Nachfahren:- Budget-Pfad
/team - Request-Pfad
/team/app - Ergebnis: Budget gilt
- Budget-Pfad
/team - Request-Pfad
/team-alpha - Ergebnis: Budget gilt nicht
-
Budget-Label
Mobile-App-iOS -
Request-Labels
["Mobile-App-iOS", "prod"] - Ergebnis: Budget gilt
-
Budget-Label
Mobile-App-iOS -
Request-Labels
["mobile-app-ios"] - Ergebnis: Budget gilt nicht
LITELLM_TAGS_ENABLED=false, wenn ein Client nicht das Label-Budget eines
anderen Teams belasten darf.
Provider-Budgets gleichen die konfigurierte Provider-Instanz ab, die den Request
bedient, ohne Berücksichtigung der Groß- und Kleinschreibung. Ein Provider-Budget
begrenzt die Gesamtausgaben dieses Providers über alle User-Paths und Labels hinweg;
es schränkt kein User-Path- oder Label-Budget ein. Requests, deren Provider bei der
Zulassung nicht bekannt ist, etwa Batch-Übermittlungen und MCP-Aufrufe, werden nicht
gegen Provider-Budgets geprüft.
Passen mehrere Budgets auf einen Request, prüft GoModel alle passenden Limits in
einem einzigen Lookup. Der Request wird abgelehnt, wenn irgendein passendes Limit
ausgeschöpft ist.
Provider-Budgets und Failover
Ist ein Provider-Budget ausgeschöpft und hat der Request Failover-Ziele, überspringt GoModel den ausgeschöpften Provider und versucht die Failover-Ziele, statt den Request abzulehnen. Das Failover überspringt außerdem jedes Ziel, dessen eigenes Provider-Budget ausgeschöpft ist. Bleibt kein Ziel übrig, erhält der Client den ursprünglichen Fehlerbudget_exceeded. User-Path- und Label-Budgets lehnen immer ab: Ein Wechsel des
Providers kann sie nicht entlasten.
Dynamische Budgets pro Kind
Dynamische Budgets pro Kind sind in GoModel Pro verfügbar und erfordern die
Lizenzberechtigung
quota_templates. Ohne sie werden Schreibzugriffe über die
Admin API mit 403 quota_templates_not_entitled abgelehnt, und
per_child: true in der Konfiguration bricht den Start ab — GoModel fällt nie
stillschweigend auf ein gemeinsames Teilbaum-Budget zurück, da dies die Semantik
der Durchsetzung verändern würde.per_child: true an einem User-Path-Eintrag, wenn sein Limit eine
Vorlage für direkte Kinder sein soll statt eines gemeinsamen Teilbaum-Budgets. Für
eine Vorlage auf /customers gilt:
/customers/aliceund/customers/alice/appgeben aus Alices Budget aus/customers/bobgibt aus einem unabhängigen Budget für Bob aus/customersselbst passt nicht auf die Vorlage, da es kein Kind hat
per child-Vorlage, statt einen aggregierten
Nutzungswert zu erfinden. Verwenden Sie GET /v1/usage mit dem effektiven User-Path
eines Kindes, um das aufgelöste Budget dieses Kindes einzusehen. Das Zurücksetzen der
Vorlage startet für alle ihre Kinder einen neuen Zeitraum.
Durchsetzung über Workflows
Der aktive Workflow steuert, ob für einen Request Budget-Prüfungen laufen. In einem Workflow-Payload:user_path-Teilbaum ein- oder auszuschalten. Zur Rangfolge beim
Abgleich siehe Workflows.
Treffer im Response-Cache können vor der Budget-Durchsetzung zurückgegeben werden.
Existiert eine gecachte Response, kann GoModel sie ausliefern, ohne zusätzliche
Provider-Kosten zu verursachen.
Reset-Fenster
Die Reset-Anker für Budgets werden im Dashboard konfiguriert unter:31 greift
beispielsweise am 30. April und am 28. bzw. 29. Februar.
Das Bearbeiten eines Budgets ändert das Limit, setzt den aktuellen Zeitraum aber
nicht zurück. Verwenden Sie die Aktion Reset in der jeweiligen Zeile, um für ein
einzelnes Budget einen neuen Zeitraum zu starten, oder
Settings -> Reset All Budgets, um alle Budgets zurückzusetzen.
Admin API
Die Budgetverwaltung ist auch über die Admin API verfügbar:scope, subject und
Zeitraum identifiziert; bei User-Path-Budgets wird user_path als Kurzschreibweise
für das Subjekt akzeptiert:
"scope": "provider" mit einem Provider-Namen als Subjekt):