Skip to main content

Przegląd

Budżety pozwalają ustawić limity wydatków dla poddrzewa user_path, etykiety requestu lub providera. GoModel ocenia je na podstawie śledzonych rekordów kosztów użycia i blokuje pasujące requesty, gdy limit został już wyczerpany. Każdy budżet ma scope, który określa, co ogranicza: Używaj budżetów, gdy potrzebujesz limitów takich jak:
  • /team/alpha może wydać $10 dziennie
  • /team/alpha może wydać $50 tygodniowo
  • / ma globalny limit miesięczny
  • wszystko z etykietą Mobile-App-iOS może wydać $500 miesięcznie
  • provider openai-prod może wydać $100 dziennie, łącznie dla wszystkich użytkowników
Egzekwowanie budżetów działa tylko wtedy, gdy budżety są włączone globalnie, a aktywny workflow ma włączony Budget. Kontrolka Budget w workflow jest domyślnie włączona, gdy globalna funkcja budżetów jest włączona.

Włącz budżety

Budżety są domyślnie włączone:
Budżety zależą od śledzenia użycia, ponieważ wydatki są wyliczane z rekordów kosztów użycia:
Jeśli śledzenie użycia jest wyłączone, GoModel uruchamia się z wyłączonym zarządzaniem budżetami i zapisuje ostrzeżenie w logach.

Utwórz budżety

Budżety możesz tworzyć w dashboardzie:
Strona Budgets w dashboardzie GoModel z listą miesięcznych, tygodniowych i dziennych budżetów dla ścieżek użytkownika, z paskami wydatków i pozostałymi kwotami W formularzu ustaw scope, subject (ścieżkę użytkownika, etykietę lub providera), period oraz amount. Każdy wiersz na stronie Budgets pokazuje wtedy wydatki jako procent limitu, wydaną kwotę w porównaniu z limitem oraz pozostałe saldo dla bieżącego okresu. Budżety etykiet i providerów mają obok okresu znacznik label lub provider. Budżety utworzone w dashboardzie są oznaczone jako manual. Budżety wczytane z YAML lub zmiennych środowiskowych są oznaczone jako config. Budżety możesz też zainicjować z YAML:
Albo użyj zmiennych środowiskowych:
Sufiks po SET_BUDGET_ staje się ścieżką użytkownika. Między segmentami ścieżki używaj podwójnych podkreśleń (__); pojedyncze podkreślenia pozostają częścią segmentu:
  • SET_BUDGET_TEAM__ALPHA -> /team/alpha
  • SET_BUDGET_USER_123 -> /user_123
  • SET_BUDGET_ -> /
Nie ma sposobu na zapisanie dosłownego podwójnego podkreślenia wewnątrz segmentu ścieżki. Dla ścieżek, które wymagają segmentu z __, użyj YAML lub dashboardu. Budżety providerów mają własny prefiks, SET_PROVIDER_BUDGET_<NAME>, podobnie jak SET_PROVIDER_RATE_LIMIT_<NAME>. Podkreślenia w sufiksie zamieniają się w myślniki, więc SET_PROVIDER_BUDGET_OPENAI_PROD ogranicza providera openai-prod.
Budżety etykiet nie mają formy zmiennej środowiskowej. Etykiety są dopasowywane dosłownie, łącznie z wielkością liter, i mogą zawierać znaki, których nie da się wyrazić w nazwach zmiennych środowiskowych. Zadeklaruj je w budgets.labels w YAML albo utwórz w dashboardzie lub przez Admin API.
Obsługiwane standardowe okresy: Kolumna Sekundy to wewnętrzny identyfikator okresu. Standardowe okresy korzystają ze skonfigurowanej logiki punktów resetu; na przykład monthly jest przechowywany jako 2592000, ale resetuje się według punktów miesiąca kalendarzowego i przycina dzień resetu w krótszych miesiącach. Tylko niestandardowe wartości period_seconds działają jako okna o stałej liczbie sekund. Dla niestandardowych okien ustaw period_seconds w YAML:

Jak działa dopasowywanie

Ścieżki budżetów dotyczą skonfigurowanej ścieżki i jej potomków:
  • ścieżka budżetu /team
  • ścieżka requestu /team/app
  • wynik: budżet obowiązuje
Ścieżki równoległe nie pasują:
  • ścieżka budżetu /team
  • ścieżka requestu /team-alpha
  • wynik: budżet nie obowiązuje
Budżety etykiet dopasowują etykietę dokładnie, bez poddrzew i bez ignorowania wielkości liter:
  • etykieta budżetu Mobile-App-iOS
  • etykiety requestu ["Mobile-App-iOS", "prod"]
  • wynik: budżet obowiązuje
  • etykieta budżetu Mobile-App-iOS
  • etykiety requestu ["mobile-app-ios"]
  • wynik: budżet nie obowiązuje
Etykiety pochodzą z reguł tagowania, z etykiet przypisanych do zarządzanego klucza API, który uwierzytelnił request, oraz z tagów LiteLLM wysyłanych przez klienta; zobacz Etykietowanie. Request z kilkoma etykietami jest obciążany w każdym pasującym budżecie etykiety. Tagi LiteLLM wybiera klient, więc ustaw LITELLM_TAGS_ENABLED=false, gdy klient nie może obciążać budżetu etykiety innego zespołu. Budżety providerów dopasowują skonfigurowaną instancję providera, która obsługuje request, bez rozróżniania wielkości liter. Budżet providera ogranicza łączne wydatki tego providera dla wszystkich ścieżek użytkowników i etykiet; nie zawęża budżetu ścieżki użytkownika ani etykiety. Requesty, których provider nie jest znany w momencie przyjęcia, np. zgłoszenia batchy i wywołania MCP, nie są sprawdzane względem budżetów providerów. Jeśli do requestu pasuje kilka budżetów, GoModel sprawdza wszystkie pasujące limity w jednym zapytaniu. Request jest odrzucany, jeśli którykolwiek pasujący limit jest wyczerpany.

Budżety providerów i failover

Gdy budżet providera jest wyczerpany, a request ma cele failoveru, GoModel pomija wyczerpanego providera i próbuje celów failoveru zamiast odrzucać request. Failover pomija także każdy cel, którego własny budżet providera jest wyczerpany. Jeśli nie zostaje żaden cel, klient otrzymuje pierwotny błąd budget_exceeded. Budżety ścieżek użytkowników i etykiet zawsze odrzucają request: zmiana providera nie może ich odciążyć.

Dynamiczne budżety dla każdego potomka

Dynamiczne budżety dla każdego potomka są dostępne w GoModel Pro i wymagają uprawnienia licencyjnego quota_templates. Bez niego zapisy przez Admin API są odrzucane z 403 quota_templates_not_entitled, a per_child: true w konfiguracji przerywa uruchamianie – GoModel nigdy nie przechodzi po cichu na jeden wspólny budżet poddrzewa, ponieważ zmieniłoby to semantykę egzekwowania.
Ustaw per_child: true we wpisie ścieżki użytkownika, gdy jego limit ma być szablonem dla bezpośrednich potomków, a nie jednym wspólnym budżetem poddrzewa. Dla szablonu na /customers:
  • /customers/alice i /customers/alice/app wydają z budżetu Alice
  • /customers/bob wydaje z niezależnego budżetu Boba
  • samo /customers nie pasuje do szablonu, ponieważ nie ma potomka
Dashboard pokazuje definicję jako szablon per child zamiast wymyślać zagregowaną wartość użycia. Użyj GET /v1/usage z efektywną ścieżką użytkownika potomka, aby sprawdzić rozwiązany budżet tego potomka. Zresetowanie szablonu rozpoczyna nowy okres dla wszystkich jego potomków.

Egzekwowanie w workflow

Aktywny workflow decyduje, czy dla requestu są wykonywane sprawdzenia budżetu. W payloadzie workflow:
Używaj workflow z zakresem, aby włączać lub wyłączać egzekwowanie budżetów dla providera, modelu lub poddrzewa user_path. Kolejność dopasowywania opisuje strona Workflows.
Cache hity odpowiedzi mogą zwrócić wynik przed egzekwowaniem budżetu. Jeśli istnieje odpowiedź w cache’u, GoModel może ją zwrócić bez dodatkowych kosztów u providera.

Okna resetu

Punkty resetu budżetów konfiguruje się w dashboardzie w:
Ustawienia resetu są obliczane w UTC. W przypadku budżetów miesięcznych, jeśli skonfigurowany dzień nie istnieje w danym miesiącu, reset następuje w ostatnim dniu tego miesiąca. Na przykład miesięczny dzień resetu 31 wypada 30 kwietnia oraz 28 lub 29 lutego. Edycja budżetu zmienia limit, ale nie resetuje bieżącego okresu. Użyj akcji Reset w wierszu, aby rozpocząć nowy okres dla jednego budżetu, lub Settings -> Reset All Budgets, aby zresetować wszystkie budżety.

Admin API

Zarządzanie budżetami jest dostępne także przez Admin API:
Utwórz lub zaktualizuj budżet. Budżet jest identyfikowany przez scope, subject i okres; dla budżetów ścieżek użytkowników user_path jest akceptowane jako skrócony zapis podmiotu:
To samo wywołanie dla budżetu etykiety (dla budżetu providera użyj "scope": "provider" z nazwą providera jako podmiotem):
Usuń budżet:
Listę endpointów znajdziesz na stronie Admin Endpoints.
Ostatnia modyfikacja 24 października 2026