Brány AI API s vedomím rýchlosti: RPM tvaru, TPM, zhluky a férovosť nájomníkov pred dosiahnutím 429 s
Praktická architektúra brány na zabránenie kaskádových LLM API 429: normalizujte limity poskytovateľov, odhadnite tlak tokenov pred odoslaním, rezervujte kvóty podľa nájomníkov, plynulé nábehy premávky a zabezpečte auditovateľnosť škrtenia.
Číslo 429 od poskytovateľa LLM nie je len signál na opätovný pokus. V produkcii je to často dôkaz, že vaša aplikácia už stratila kontrolu nad prístupom, spravodlivosťou nájomníkov, latenciou alebo účtovaním kvót špecifických pre poskytovateľa.
Spoločná oprava – exponenciálne ustupovanie – je potrebná, ale nie je úplná. Backoff reaguje potom, čo poskytovateľ odmietne prenos. Brána AI API zohľadňujúca rýchlosť by mala ovplyvniť návštevnosť predtým, ako požiadavky opustia váš systém: odhadnúť tlak tokenov, rezervovať kvótu, izolovať nájomníkov, zaradiť do frontu správnu prácu, odmietnuť nesprávnu prácu a prispôsobiť sa zmenám limitov poskytovateľa.
Tento článok popisuje praktického správcu kvót brány pre tímy, ktoré odosielajú produkčné úlohy viacerým poskytovateľom LLM prostredníctvom jednotného rozhrania API.
Problém čitateľa: 429 sú viacrozmerné
Mnoho tímov zaobchádza s limitmi sadzieb, ako keby išlo o jeden počet žiadostí za minútu. Tento predpoklad sa s LLM API rýchlo rozbije.
Fakty z aktuálnej dokumentácie poskytovateľa:
- Dokumenty OpenAI, ktorých limity môžu byť presadzované počas kratších období, než je inzerovaný limit za minútu, takže krátke série môžu zlyhať, aj keď priemerná minúta vyzerá bezpečne.
- Kvóta Azure OpenAI sa prideľuje podľa predplatného, regiónu, modelu a typu nasadenia v tokenoch za minútu. Priradenie TPM k nasadeniu tiež určuje vynútené limity RPM a pomery RPM k TPM sa líšia podľa modelu.
- Azure OpenAI tiež poznamenáva, že výpočty limitov sadzby sa odhadujú pri prijatí požiadavky a nie sú rovnaké ako konečné počty fakturačných tokenov.
- Antropické dokumenty oddeľujú limity žiadostí za minútu, vstupných tokenov za minútu a výstupných tokenov za minútu. Prekročenie limitov vráti 429 s hlavičkou opakovania.
- Anthropic varuje, že prudký nárast premávky môže naraziť na limity zrýchlenia, a odporúča postupné zvyšovanie.
- V prípade väčšiny modelov Claude sa antropické dokumenty, ktoré vstupné tokeny na čítanie z vyrovnávacej pamäte nezapočítavajú do limitov vstupných tokenov za minútu, čo znamená, že rýchle ukladanie do vyrovnávacej pamäte môže zmeniť efektívnu rezervu.
- Limity sadzieb rozhrania Google Gemini API sú viazané na úrovne využitia projektu, pričom vyššie úrovne závisia od nastavenia fakturácie, kumulatívnych výdavkov a uplynutého času po míľnikoch platieb.
Prevádzková lekcia je jasná: tvar požiadavky kompatibilný s OpenAI neznamená správanie kvóty kompatibilné s OpenAI. Brána viacerých poskytovateľov potrebuje interný model kvót, ktorý je bohatší ako „opakovať, ak 429“.
Cieľ dizajnu: urobiť z kontroly prístupu zodpovednosť brány
Brána zohľadňujúca rýchlostné limity by mala pred odoslaním žiadosti odpovedať na päť otázok:
- Ktorý poskytovateľ, model, nasadenie, región, projekt alebo pracovný priestor dostane žiadosť?
- Koľko požiadavky, vstupného tokenu, výstupného tokenu a súbežnej kapacity môže spotrebovať?
- Ktorý nájomník, tím, kľúč API, zákazník alebo trieda pracovného zaťaženia by sa mali účtovať na základe zdieľanej kapacity?
- Mala by byť žiadosť teraz prijatá, krátko zaradená do frontu, znížená úroveň, presmerovaná inam alebo zamietnutá?
- Ako by sa mala rezervácia zosúladiť potom, čo poskytovateľ vráti skutočné využitie?
Brána sa stane správcom kvót. Nenahrádza limity poskytovateľa. Vďaka tomu sú limity poskytovateľa viditeľné, predvídateľné a spravodlivé vo vašom vlastnom systéme.
Vytvorte normalizovaný model kvót
Začnite definovaním interných rozmerov obmedzovačov, ktoré môžu reprezentovať hlavných poskytovateľov bez toho, aby ste ich nútili do jedného zavádzajúceho segmentu.
Odporúčané rozmery obmedzovačov
- RPM: požiadavky za minútu.
- Vstup TPM: tokeny výzvy, správy, nástroja a kontextu za minútu.
- Výstupné TPM: tokeny dokončenia za minútu, vyhradené samostatne pre streamovanie a dlhé generácie.
- Celkový TPM: užitočné pre poskytovateľov alebo nasadenia, ktoré vystavujú kombinovaný tlak tokenov.
- Súbežnosť: aktívne požiadavky, aktívne streamy alebo úlohy počas letu.
- Trvanie streamovania: streamy s dlhou životnosťou môžu zaberať priestor na pripojenie a výstupný token, aj keď sú otáčky nízke.
- Rozsah špecifický pre poskytovateľa: Predplatné/región/nasadenie Azure, antropický pracovný priestor/trieda modelu, projekt/vrstva Google alebo organizácia/projekt/modelová skupina OpenAI.
Neskrývajte dimenzie špecifické pre poskytovateľa. Normalizujte ich do spoločnej schémy, ale zachovajte dostatok podrobností na to, aby ste mohli neskôr vysvetliť odmietnutie.
{
"provider": "poskytovateľ_a",
"model_profile": "rýchly rozhovor",
"provider_scope": {
"project": "prod",
"región": "us-východ",
"deployment": "chat-large-01"
},
"limity": {
"rpm": 1200,
"input_tpm": 800 000,
"output_tpm": 250 000,
"súbežnosť": 200
}
}Tento interný objekt by mal byť nakonfigurovaný explicitne a nemal by byť odvodený iba z názvov modelov. Panely poskytovateľa, úrovne účtov, regionálne nasadenia a nastavenia pracovného priestoru môžu zmeniť efektívnu kapacitu rovnakej rodiny modelov.
Odhadnite tlak tokenu pred odoslaním
K obmedzeniu sadzieb na strane poskytovateľa často dochádza ešte predtým, ako je známe konečné využitie fakturácie. Vaša brána by mala pred odoslaním návštevnosti vykonať rovnaký druh konzervatívneho odhadu.
Vstupy predletovej rezervácie
- Serializovaná výzva a dĺžka správy.
- Tokenizácia špecifická pre model a režijné náklady pre roly, nástroje, obrázky alebo pokyny pre štruktúrovaný výstup.
max_completion_tokensalebo ekvivalentný limit výstupu.- Historický pomer dokončenia pre tento koncový bod, nájomníka, profil modelu a triedu požiadaviek.
- Očakávané tokeny čítania z vyrovnávacej pamäte, ak je rýchle ukladanie do vyrovnávacej pamäte dostupné a merateľné.
- Príznak streamovania a očakávané trvanie streamu.
Na začiatok často stačí jednoduché pravidlo rezervácie:
estimated_input_tokens = tokenize(request_messages) + model_overhead
odhadované_výstupné_tokens = min(
max_completion_tokens,
p95_historical_output_tokens_for_route
)
Reserved_total_tokens = odhadované_vstupné_tokeny + odhadované_výstupné_tokeny
Pre neznáme trasy použite konzervatívne predvolené nastavenie. V prípade stabilných produkčných trás priebežne aktualizujte odhady zo skutočného používania.
Rezervujte, potom zosúlaďte
Rezervácie kvóty by sa nemali stať trvalými poplatkami. Zaobchádzajte s nimi ako s držaním:
- Citácia: odhadnite vstupný a výstupný tlak.
- Rezerva: pred odoslaním odpočítajte z príslušných skupín tokenov.
- Vyrovnať: nahraďte odhad použitím nahláseným poskytovateľom, keď bude k dispozícii.
- Vrátenie peňazí alebo debet: v prípade potreby vráťte nevyužitú rezervovanú kapacitu alebo účtujte prekročenia do ďalšieho okna.
To je najdôležitejšie pri hovoroch s dlhým kontextom a streamovaných hovoroch. Ak pred odoslaním skontrolujete iba vstupné TPM, stream sa môže úspešne spustiť a neskôr sa môže spustiť tlak výstupného tokenu. Samostatné rezervovanie priestoru na výstupe znižuje riziko zlyhania a zaseknutia v strednom prúde.
Používajte hierarchické skupiny tokenov pre spravodlivosť nájomníkov
Jeden globálny obmedzovač chráni účet poskytovateľa, ale nechráni nájomníkov navzájom. Jedna dávková úloha s dlhým kontextom môže spotrebovať zdieľaný modul TPM a spôsobiť zlyhanie interaktívnych požiadaviek iných tímov.
Použite hierarchické skupiny tokenov:
organizácia
└── nájomca
└── tím
└── api_key
└── profil_modelu
└── nasadenie_poskytovateľa
Žiadosť musí prejsť každým relevantným segmentom. To vám umožní presadzovať niekoľko pravidiel naraz:
- Organizácia nemôže prekročiť kapacitu poskytovateľa.
- Nájomca nemôže spotrebovať viac, než je jeho zmluvný podiel.
- Kľúč API nemôže prekročiť limit prostredia alebo aplikácie.
- Profil dávkového modelu nemôže vyhladzovať profil interaktívneho modelu.
- Nasadenie poskytovateľa nemôže byť preťažené, aj keď iné nasadenie má rezervnú kvótu.
Spravodlivé zdieľanie verzus využitie
Odporúčanie: používajte vážené spravodlivé zdieľanie s riadeným nárazovým požičiavaním.
Prísne obmedzenia na jedného nájomníka sa dajú ľahko vysvetliť, ale môžu spôsobiť stratu nevyužitej kapacity. Nárazové požičiavanie zlepšuje využitie tým, že umožňuje nájomcovi dočasne využívať nečinnú kvótu zo zdieľaného fondu. Kompromisom je zložitosť: informačné panely musia zobrazovať, čo bolo zaručené, čo bolo požičané a kedy bolo požičanie odvolané.
Praktické pravidlo:
- Poskytnite každému nájomníkovi zaručený základ.
- Povoliť hromadné pôžičky z nevyužitej zdieľanej kapacity.
- Získajte späť vypožičanú kapacitu, keď sa objaví návštevnosť s vyššou prioritou alebo zaručenou návštevnosťou.
- Nikdy nedovoľte, aby vypožičaná návštevnosť vytvárala 429 na úrovni poskytovateľa pre zaručenú návštevnosť.
Oddeľte triedy premávky skôr, ako budú bojovať
Nie všetky požiadavky si zaslúžia rovnaké správanie v poradí. Vložte návštevnosť do modelových profilov so samostatnými frontami a kvótami.
Zaradenie do poradia zvyšuje úspešnosť, ale zvyšuje latenciu. Brána by mala tento kompromis jasne uviesť. Interaktívna požiadavka môže napríklad čakať až 300 milisekúnd na kvótu, potom sa vráti späť alebo zlyhá. Nočná dávková úloha môže čakať 20 minút a stále sa považuje za úspešnú.
Normalizácia 429 do jedinej chybovej schémy
Aj pri dobrej kontrole prístupu sa stále vyskytnú chyby poskytovateľa 429. Limity sa môžu zmeniť, odhady poskytovateľov sa môžu líšiť od vašich a návštevnosť môže prísť v ostrejších dávkach, než sa očakávalo.
Normalizujte každého poskytovateľa 429 na chybový objekt brány:
{
"chyba": {
"type": "rate_limited",
"limiter": "output_tpm",
"provider": "poskytovateľ_a",
"model_profile": "rýchly rozhovor",
"provider_model": "model-x",
"retry_after_ms": 2400,
"tenant_id": "tenant_123",
"api_key_id": "key_456",
"request_class": "interaktívne",
"estimated_input_tokens": 4200,
"estimated_output_tokens": 800,
"gateway_decision": "admitted_then_provider_rejected",
"fallback_allowed": nepravda,
"trace_id": "trace_abc"
}
}
Kľúčové pole je gateway_decision. 429 potom, čo brána pripustila, že požiadavka sa líši od požiadavky, ktorú brána lokálne zamietla pred odoslaním. Prvý naznačuje problém s kalibráciou obmedzovača. Druhý označuje úmyselnú ochranu.
Prispôsobte sa hlavičkám poskytovateľa, ale nie sú od nich závislé
Niektorí poskytovatelia vracajú užitočné hlavičky, ako napríklad indikátory opätovného pokusu po alebo zostávajúcej kapacity. Použite ich, keď sú k dispozícii.
Odporúčanie: hlavičky poskytovateľa by mali vyladiť vášho miestneho guvernéra, nie ho nahradiť.
Dôvody:
- Dostupnosť hlavičky sa líši podľa poskytovateľa a koncového bodu.
- Hlavičky nemusia odhaľovať každý rozmer obmedzovača.
- Retry-after vám povie, kedy to skúsiť znova, nie ktorý nájomca by mal získať kapacitu ako ďalší.
- Odhady tokenov na strane poskytovateľa sa môžu líšiť od vášho fakturačného alebo interného účtovníctva.
Robustná implementácia aktualizuje miery dopĺňania miestnych segmentov a chladenia na základe hlavičiek, pričom stále presadzuje nájomníka, kľúč API, triedu návštevnosti a limity nasadenia poskytovateľa v rámci brány.
Pridajte regulátory rampy pre migrácie a plánované úlohy
Mnoho incidentov s rýchlostným limitom sa vyskytuje počas plánovaných zmien: prechod z jedného modelu na druhý, zmena poskytovateľov, umožnenie nového pracovného postupu agenta alebo spustenie plánovaného testovania.
Odporúčanie: považujte rast návštevnosti za riadené zavádzanie.
- Migrácie modelu s príznakom funkcie podľa nájomníka, trasy alebo percenta návštevnosti.
- Nastavte limity rastu za minútu pre nasadenia nových poskytovateľov.
- Zohrievajte premávku postupne v priebehu hodín namiesto okamžitého prepínania celej premávky.
- Pozastavte zavádzanie, keď rýchlosť 429, rýchlosť prechodu na nižšiu verziu, hĺbka frontu alebo latencia p95 prekročí prah.
- Udržiavajte núdzovú trasu vrátenia pomocou zásad kompatibility, nielen náhradného modelu.
Predpoveď: keďže režimy smerovania poskytovateľa, úrovne priorít a ovládacie prvky na úrovni pracovného priestoru budú čoraz bežnejšie, riadenie rampy sa stane štandardnou funkciou brány a nie skriptom reakcie na incident.
Záložné rozhodnutie je politické rozhodnutie, nielen rozhodnutie o kapacite
Keď jeden poskytovateľ vráti číslo 429, správnou odpoveďou môže byť smerovanie k inému poskytovateľovi. Môže to byť aj nebezpečné.
Záložná reklama sa môže zmeniť:
- Kvalita výstupu a nasledujúce pokyny.
- Dĺžka kontextu.
- Správanie pri volaní nástroja.
- Štruktúrovaná výstupná spoľahlivosť.
- Postoj uchovávania údajov a trvalého pobytu.
- Cena a latencia.
Generátor kvót by sa mal opýtať vrstvy kompatibility, či je pre túto triedu žiadostí povolená záložná reklama. Ak nie, mal by sa zaradiť do frontu alebo zlyhať s jasnou odozvou miestneho rýchlostného limitu a nie tichou zmenou sémantiky.
Zobrazenie informačných panelov kvót, ktoré vysvetľujú rozhodnutia
Systém kvót, ktorému nikto nerozumie, bude obídený. Vytvorte informačné panely týkajúce sa prevádzkových otázok:
- Ktorí nájomníci spotrebúvajú najviac RPM, vstupných TPM a výstupných TPM?
- Ktoré modelové profily sú zaradené do poradia, odmietajú sa alebo ustupujú?
- Ktorý rozsah poskytovateľa je prekážkou: projekt, región, nasadenie, pracovný priestor, trieda modelu alebo úroveň účtu?
- Ako často sa odhady brány líšia od používania poskytovateľa?
- Aká je distribúcia po opakovanom pokuse podľa poskytovateľa a typu obmedzovača?
- Aká efektívna rezerva je vytvorená rýchlym čítaním vyrovnávacej pamäte?
- Ktoré dopravné triedy si požičiavajú kapacitu?
Pri produktoch orientovaných na zákazníkov alebo partnerov vystavte bezpečné ovládacie prvky:
- Limity sadzieb na kľúč.
- Limity počtu zhlukov na tím.
- Denné limity na zákazníka.
- Núdzové pozastavenie pre nájomníka alebo kľúč.
- Upozornenia na 429 špičiek, nárast v rade a abnormálny tlak tokenu.
- Koncové body rozhrania API partnera pre správu kvót predajcu.
Obmedzenie rýchlosti sa tak zmení zo záhadnej chyby poskytovateľa na auditovateľnú súčasť tímového riadenia API.
Kontrolný zoznam implementácie
1. fáza: pozorovanie a klasifikácia
- Poskytovateľ denníka, model, nasadenie, región, pracovný priestor, projekt, nájomník, kľúč API a trieda požiadaviek pre každé volanie.
- Zachyťte poskytovateľa záznamu 429 s opakovaným pokusom a nespracovanými metadátami chýb.
- Oddelene zaznamenávajte odhadované a skutočné vstupné/výstupné tokeny.
- Oddeľte interaktívnu, dávkovú, vyhodnocovaciu a prenosovú prevádzku na pozadí v telemetrii.
Fáza 2: lokálna kontrola vstupu
- Vytvorte interné objekty obmedzovača pre RPM, vstupné TPM, výstupné TPM, celkové TPM a súbežnosť.
- Pridajte odhad tokenu pred výstupom.
- Rezervujte kvótu pred odoslaním a zosúlaďte ju po tom, ako ju poskytovateľ využije.
- Odmietnite lokálne, keď žiadosť nevyhovuje jej skupine nájomníkov alebo poskytovateľov.
Fáza 3: spravodlivosť a fronty
- Pridajte hierarchické segmenty od organizácie k nasadeniu poskytovateľa.
- Priraďte zaručené podiely nájomníkov a riadené nárazové pôžičky.
- Vytvorte samostatné fronty podľa triedy premávky.
- Nastavte maximálne doby čakania a pravidlá pre záložné reklamy pre jednotlivé triedy.
Fáza 4: prispôsobenie a prevádzka
- Použite hlavičky poskytovateľa na úpravu predpokladov ochladzovania a doplňovania.
- Pridajte regulátory rampy pre migrácie a plánované úlohy.
- Zobraziť informačné panely a upozornenia kvóty.
- Týždenne skontrolujte chybu odhadu a uviaznutú kvótu.
Uplatniteľný záver
Ak vaša brána zopakuje iba 429 s, funguje aj po zlyhaní. Brána AI API na produkčnej úrovni by mala zabrániť väčšine zlyhaní rýchlostného limitu tým, že určí, kto môže čo posielať, kedy a proti ktorému kvóte poskytovateľa.
Začnite s normalizovaným modelom obmedzovača, rezerváciou tokenu pred letom a frontami triedy premávky. Potom pridajte hierarchickú spravodlivosť nájomníka, prispôsobenie hlavičky poskytovateľa a regulátory rampy. Výsledkom nie je len menej 429. Je to jasnejšie prideľovanie kapacity, predvídateľnejšia latencia, bezpečnejšie migrácie a správanie pri obmedzení sadzieb, ktoré môžu vaše tímy inžinierov, financií a zákazníckej podpory skutočne vysvetliť.