Průvodce a náhled

Brány rozhraní API pro umělou inteligenci s ohledem na rychlost: RPM tvaru, TPM, shluky a férovost nájemců před zásahem 429 s

Praktická architektura brány pro prevenci kaskádových LLM API 429: normalizujte limity poskytovatelů, odhadněte tlak tokenů před odesláním, rezervujte kvóty nájemcem, plynulé náběhy provozu a zajistěte auditovatelnost omezení.

Číslo 429 od poskytovatele LLM není jen signál opakování. V produkci je to často důkaz, že vaše aplikace již ztratila kontrolu nad přístupem, spravedlností nájemců, latencí nebo účtováním kvót specifických pro poskytovatele.

Obvyklá oprava – exponenciální ústup – je nezbytná, ale neúplná. Backoff reaguje poté, co poskytovatel odmítne provoz. Brána AI API s ohledem na rychlostní limit by měla ovlivňovat provoz předtím, než požadavky opustí váš systém: odhadnout tlak tokenů, rezervovat kvótu, izolovat nájemce, zařadit do fronty správnou práci, odmítnout nesprávnou práci a přizpůsobit se, když se změní limity poskytovatele.

Tento článek popisuje praktického správce kvót brány pro týmy odesílající produkční úlohy více poskytovatelům LLM prostřednictvím jednotného rozhraní API.

Problém čtenáře: 429 jsou vícerozměrné

Mnoho týmů zachází s limity sazeb, jako by šlo o jeden počet požadavků za minutu. Tento předpoklad se s LLM API rychle rozbije.

Fakta z aktuální dokumentace poskytovatele:

  • Dokumenty OpenAI, jejichž limity mohou být vynucovány v kratších oknech, než je inzerovaný limit za minutu, takže krátké dávky mohou selhat, i když průměrná minuta vypadá bezpečně.
  • Kvóta Azure OpenAI je přiřazena podle předplatného, oblasti, modelu a typu nasazení v tokenech za minutu. Přiřazení TPM k nasazení také určuje vynucené limity RPM a poměry RPM k TPM se liší podle modelu.
  • Azure OpenAI také poznamenává, že výpočty limitu tokenů se odhadují, když je požadavek přijat, a nejsou stejné jako konečný počet fakturačních tokenů.
  • Antropické dokumenty oddělují limity požadavků za minutu, vstupních tokenů za minutu a výstupních tokenů za minutu. Překročení limitů vrátí 429 s retry-after hlavičkou.
  • Anthropic varuje, že prudký nárůst provozu může narazit na limity zrychlení, a doporučuje postupné navyšování.
  • U většiny modelů Claude, Antropické dokumenty, které vstupní tokeny čtení z mezipaměti nezapočítávají do limitů vstupních tokenů za minutu, což znamená, že rychlé ukládání do mezipaměti může změnit efektivní prostor.
  • Limity sazeb Google Gemini API jsou vázány na úrovně využití projektu, přičemž vyšší úrovně závisí na nastavení fakturace, kumulativní útratě a době, která uplynula po milnících plateb.

Provozní poučení je jasné: tvar požadavku kompatibilní s OpenAI neznamená chování kvót kompatibilní s OpenAI. Brána pro více poskytovatelů potřebuje model interní kvóty, který je bohatší než „opakovat, pokud 429“.

Cíl návrhu: učinit z řízení přístupu odpovědnost brány

Brána s ohledem na rychlostní limit by měla před odesláním požadavku zodpovědět pět otázek:

  1. Který poskytovatel, model, nasazení, region, projekt nebo pracovní prostor obdrží žádost?
  2. Kolik požadavku, vstupního tokenu, výstupního tokenu a souběžné kapacity může spotřebovat?
  3. Který tenant, tým, klíč API, zákazník nebo třída zátěže by měla být účtována ze sdílené kapacity?
  4. Měl by být požadavek nyní přijat, krátce zařazen do fronty, převeden na nižší verzi, směrován jinam nebo zamítnut?
  5. Jak by měla být rezervace odsouhlasena poté, co poskytovatel vrátí skutečné využití?

Brána se stane správcem kvót. Nenahrazuje limity poskytovatele. Díky tomu jsou limity poskytovatelů viditelné, předvídatelné a spravedlivé ve vašem vlastním systému.

Vytvoření normalizovaného modelu kvót

Začněte definováním vnitřních omezovacích rozměrů, které mohou reprezentovat hlavní poskytovatele, aniž byste je nutili do jednoho zavádějícího segmentu.

Doporučené rozměry omezovače

  • RPM: požadavky za minutu.
  • Vstupní TPM: tokeny výzvy, zprávy, nástroje a kontextu za minutu.
  • Výstupní TPM: tokeny dokončení za minutu, vyhrazené zvlášť pro streamování a dlouhé generace.
  • Celkový TPM: užitečné pro poskytovatele nebo nasazení, která vystavují kombinovaný tlak tokenů.
  • Souběh: aktivní požadavky, aktivní streamy nebo úlohy za letu.
  • Délka streamování: dlouhotrvající streamy mohou zabírat prostor pro připojení a výstupní token, i když jsou otáčky nízké.
  • Rozsah specifický pro poskytovatele: Předplatné/oblast/nasazení Azure, pracovní prostor/třída modelu Antropický, projekt/vrstva Google nebo organizace/projekt/modelová skupina OpenAI.

Neskrývejte dimenze specifické pro poskytovatele. Normalizujte je do společného schématu, ale zachovejte dostatek podrobností, aby bylo možné později vysvětlit odmítnutí.

{
  "provider": "poskytovatel_a",
  "model_profile": "rychlý chat",
  "provider_scope": {
    "project": "prod",
    "region": "us-východ",
    "deployment": "chat-large-01"
  },
  "limity": {
    "ot./min": 1200,
    "input_tpm": 800 000,
    "output_tpm": 250 000,
    "souběh": 200
  }
}

Tento interní objekt by měl být nakonfigurován explicitně, nikoli odvozen pouze z názvů modelů. Řídicí panely poskytovatelů, úrovně účtů, regionální nasazení a nastavení pracovního prostoru mohou změnit efektivní kapacitu stejné rodiny modelů.

Před odesláním odhadněte tlak tokenu

K omezení sazeb na straně poskytovatele často dochází ještě předtím, než je známo konečné využití fakturace. Vaše brána by měla před odesláním provozu provést stejný konzervativní odhad.

Vstupy předletové rezervace

  • Serializovaná výzva a délka zprávy.
  • Tokenizace specifická pro model a režie pro role, nástroje, obrázky nebo pokyny pro strukturovaný výstup.
  • max_completion_tokens nebo ekvivalentní omezení výstupu.
  • Historický poměr dokončení pro tento koncový bod, tenanta, profil modelu a třídu požadavků.
  • Očekávané tokeny čtení z mezipaměti, pokud je rychlé ukládání do mezipaměti dostupné a měřitelné.
  • Příznak streamování a očekávaná délka streamu.

Pro začátek často stačí jednoduché pravidlo rezervace:

estimated_input_tokens = tokenize(request_messages) + model_overhead
odhadované_výstupní_tokeny = min(
  max_completion_tokens,
  p95_historical_output_tokens_for_route
)
Reserved_total_tokens = odhadované_vstupní_tokeny + odhadované_výstupní_tokeny

Pro neznámé trasy použijte konzervativní výchozí nastavení. U stabilních produkčních tras průběžně aktualizujte odhady ze skutečného využití.

Rezervujte a poté odsouhlaste

Rezervace kvót by se neměly stát trvalými poplatky. Zacházejte s nimi jako s držadlem:

  1. Citace: odhad vstupního a výstupního tlaku.
  2. Rezerva: před odesláním odečtete z příslušných skupin tokenů.
  3. Vyrovnat: nahraďte odhad používáním nahlášeným poskytovatelem, bude-li k dispozici.
  4. Vrácení peněz nebo debet: v případě potřeby vraťte nevyužitou rezervovanou kapacitu nebo naúčtovejte přebytky do dalšího okna.

To je nejdůležitější u hovorů s dlouhým kontextem a streamování. Pokud před odesláním zkontrolujete pouze vstupní TPM, stream se může úspěšně spustit a později naběhnout na tlak výstupního tokenu. Samostatné vyhrazení výstupního prostoru snižuje riziko selhání a zablokování středního proudu.

Používejte hierarchické skupiny tokenů pro spravedlivost nájemců

Jediný globální omezovač chrání účet poskytovatele, ale nechrání tenanty před sebou navzájem. Jedna dávková úloha s dlouhým kontextem může spotřebovat sdílený modul TPM a způsobit selhání interaktivních požadavků jiných týmů.

Používejte hierarchické skupiny tokenů:

organizace
  └── nájemce
      └── tým
          └── api_key
              └── profil_modelu
                  └── provider_deployment

Požadavek musí projít každým relevantním segmentem. To vám umožní vynutit několik zásad najednou:

  • Organizace nemůže překročit kapacitu poskytovatele.
  • Nájemník nemůže spotřebovat více, než je jeho smluvní podíl.
  • Klíč API nesmí překročit zamýšlený limit prostředí nebo aplikace.
  • Profil dávkového modelu nemůže vyhladovět profil interaktivního modelu.
  • Nasazení poskytovatele nemůže být přetíženo, i když má jiné nasazení náhradní kvótu.

Spravedlivé sdílení versus využití

Doporučení: použijte vážené spravedlivé sdílení s řízeným shlukovým výpůjčkami.

Přísné limity pro jednotlivé nájemce se snadno vysvětlují, ale mohou narušit nevyužitou kapacitu. Nárazové půjčování zlepšuje využití tím, že tenantovi umožňuje dočasně používat nečinnou kvótu ze sdíleného fondu. Kompromisem je složitost: řídicí panely musí ukazovat, co bylo zaručeno, co bylo vypůjčeno a kdy bylo vypůjčení odvoláno.

Praktické pravidlo:

  • Poskytněte každému nájemníkovi zaručený základ.
  • Povolit nárazové půjčování z nevyužité sdílené kapacity.
  • Získejte zpět vypůjčenou kapacitu, když se objeví provoz s vyšší prioritou nebo zaručený provoz.
  • Nikdy nedovolte, aby vypůjčený provoz vytvořil 429 na úrovni poskytovatele pro zaručený provoz.

Oddělte třídy provozu, než se utkají

Ne všechny požadavky si zaslouží stejné chování ve frontě. Umístěte provoz do modelových profilů se samostatnými frontami a fondy kvót.

Třída dopravy Typické zásady Proč Interaktivní chat Krátká fronta, nízký rozpočet na latenci, rychlé selhání nebo kompatibilní záložní řešení Uživatelé si rychle všimnou latence ocasu Agentní pracovní postupy Střední fronta, rozpočty s ohledem na nástroje, prostor pro výstup Volání ve více krocích mohou zvýšit tlak tokenu Dávkové úlohy Delší fronta, plánované vyhlazování, nižší priorita Obvykle toleruje latenci a je náročný na token EvalsVyhrazená kvóta, pauza během incidentů Může vytvořit náhlé umělé špičky Shrnutí pozadí Zařadit do fronty nebo odložit, přísné omezení TPM Užitečné, ale zřídka naléhavé

Řazení do fronty zlepšuje úspěšnost, ale zvyšuje latenci. Brána by měla tento kompromis jasně vyjádřit. Interaktivní požadavek může například čekat až 300 milisekund na přidělení kvóty, pak se vrátí zpět nebo selže. Noční dávková úloha může počkat 20 minut a přesto může být považována za úspěšnou.

Normalizace 429 do jediného chybového schématu

I při dobré kontrole přístupu se stále budou vyskytovat signály poskytovatele 429. Limity se mohou změnit, odhady poskytovatelů se mohou lišit od vašich a návštěvnost může přicházet v ostřejších dávkách, než se očekávalo.

Normalizujte každého poskytovatele 429 na objekt chyby brány:

{
  "chyba": {
    "type": "rate_limited",
    "limiter": "output_tpm",
    "provider": "poskytovatel_a",
    "model_profile": "rychlý chat",
    "provider_model": "model-x",
    "retry_after_ms": 2400,
    "tenant_id": "tenant_123",
    "api_key_id": "key_456",
    "request_class": "interaktivní",
    "estimated_input_tokens": 4200,
    "estimated_output_tokens": 800,
    "gateway_decision": "admitted_then_provider_rejected",
    "fallback_allowed": nepravda,
    "trace_id": "trace_abc"
  }
}

Pole klíče je gateway_decision. 429 poté, co brána připustila požadavek, se liší od požadavku, který brána lokálně odmítla před odesláním. První indikuje problém s kalibrací omezovače. Druhý označuje záměrnou ochranu.

Přizpůsobte se hlavičkám poskytovatele, ale nezávisejte na nich

Někteří poskytovatelé vracejí užitečná záhlaví, jako jsou indikátory opakování nebo zbývající kapacity. Použijte je, když jsou k dispozici.

Doporučení: Záhlaví poskytovatele by měla ladit vašeho místního guvernéra, nikoli jej nahrazovat.

Důvody:

  • Dostupnost záhlaví se liší podle poskytovatele a koncového bodu.
  • Záhlaví nemusí odhalovat každý rozměr omezovače.
  • Retry-after vám řekne, kdy to zkusit znovu, nikoli který tenant by měl získat kapacitu jako další.
  • Odhady tokenů na straně poskytovatele se mohou lišit od vašeho fakturačního nebo interního účetnictví.

Robustní implementace aktualizuje míru doplňování místního segmentu a ochlazování na základě hlaviček, přičemž stále vynucuje limity nasazení tenanta, klíče API, třídy provozu a poskytovatele uvnitř brány.

Přidejte regulátory ramp pro migrace a plánované úlohy

K mnoha incidentům s omezením rychlosti dochází během plánovaných změn: přechod z jednoho modelu na druhý, změna poskytovatelů, povolení nového pracovního postupu agenta nebo spuštění plánovaného zkušebního běhu.

Doporučení: považujte růst návštěvnosti za řízené zavádění.

  • Migrace modelu s příznakem funkce podle tenanta, trasy nebo procenta provozu.
  • Nastavte limity růstu za minutu pro nasazení nových poskytovatelů.
  • Zahřívejte provoz postupně v průběhu hodin namísto okamžitého přepínání veškerého provozu.
  • Pozastavit vydávání, když rychlost 429, rychlost přechodu na nižší verzi, hloubka fronty nebo latence p95 překročí prahovou hodnotu.
  • Udržujte si nouzovou trasu vrácení pomocí zásad kompatibility, nikoli pouze náhradní model.

Předpověď: Jak se režimy směrování poskytovatele, prioritní úrovně a ovládací prvky na úrovni pracovního prostoru stanou běžnějšími, stane se řízení rampy spíše standardní funkcí brány než skriptem odezvy na incident.

Záložní opatření je politické rozhodnutí, nikoli pouze rozhodnutí o kapacitě

Když jeden poskytovatel vrátí číslo 429, správnou odpovědí může být směrování k jinému poskytovateli. Může to být také nebezpečné.

Záložní reklama se může změnit:

  • Kvalita výstupu a následující pokyny.
  • Délka kontextu.
  • Chování při volání nástroje.
  • Spolehlivost strukturovaného výstupu.
  • Uchovávání údajů a trvalé bydliště.
  • Cena a latence.

Správce kvóty by se měl zeptat vrstvy kompatibility, zda je pro tuto třídu požadavků povolena záložní. Pokud ne, měl by se zařadit do fronty nebo selhat s jasnou odezvou místního limitu rychlosti, spíše než tiše měnit sémantiku.

Vystavte panely kvót, které vysvětlují rozhodnutí

Systém kvót, kterému nikdo nerozumí, bude vynechán. Vytvářejte řídicí panely týkající se provozních otázek:

  • Kteří nájemci spotřebovávají nejvíce RPM, vstupního TPM a výstupního TPM?
  • Které modelové profily jsou zařazeny do fronty, odmítají se nebo ustupují?
  • Který rozsah poskytovatele je úzkým hrdlem: projekt, region, nasazení, pracovní prostor, třída modelu nebo úroveň účtu?
  • Jak často se liší odhady brány od využití poskytovatele?
  • Jaká je distribuce opakování-po podle poskytovatele a typu omezovače?
  • Jaká efektivní rezerva je vytvořena rychlým čtením mezipaměti?
  • Které třídy provozu si vypůjčují maximální kapacitu?

U produktů pro zákazníky nebo partnery vystavte bezpečné ovládací prvky:

  • Limity sazby za klíč.
  • Limity počtu shluků na tým.
  • Denní limity na zákazníka.
  • Nouzové pozastavení pro nájemce nebo klíč.
  • Upozornění na 429 špiček, nárůst fronty a abnormální tlak tokenu.
  • Koncové body Partner API pro správu kvót pro distributory.

To změní omezení rychlosti ze záhadné chyby poskytovatele na auditovatelnou součást správy týmového API.

Kontrolní seznam implementace

Fáze 1: pozorujte a klasifikujte

  • Poskytovatel protokolu, model, nasazení, region, pracovní prostor, projekt, tenant, klíč API a třída požadavku pro každé volání.
  • Zachyťte poskytovatele 429 s retry-after a nezpracovanými metadaty chyb.
  • Odhadované a skutečné vstupní/výstupní tokeny zaznamenávejte samostatně.
  • Oddělte interaktivní, dávkový, vyhodnocovací provoz a provoz na pozadí v telemetrii.

Fáze 2: místní kontrola přístupu

  • Vytvořte interní objekty omezovače pro RPM, vstupní TPM, výstupní TPM, celkový TPM a souběžnost.
  • Přidejte odhad tokenu před výstupem.
  • Rezervujte kvótu před odesláním a proveďte odsouhlasení poté, co dojde k využití poskytovatelem.
  • Odmítněte místně, když požadavek nevyhovuje jeho segmentu tenanta nebo poskytovatele.

Fáze 3: Spravedlnost a fronty

  • Přidejte hierarchické segmenty od organizace k nasazení poskytovatele.
  • Přiřaďte zaručené akcie nájemců a řízené náhlé výpůjčky.
  • Vytvořte samostatné fronty podle třídy provozu.
  • Nastavte maximální dobu čekání a záložní pravidla pro konkrétní třídu.

Fáze 4: přizpůsobení a provoz

  • Pomocí záhlaví poskytovatelů upravte předpoklady ochlazování a doplňování.
  • Přidejte regulátory ramp pro migrace a plánované úlohy.
  • Odhalit panely kvót a upozornění.
  • Týdně kontrolujte chybu odhadu a uvízlou kvótu.

Akční závěr

Pokud vaše brána opakuje pouze 429s, funguje po selhání. Brána AI API na produkční úrovni by měla zabránit většině selhání rychlostního limitu tím, že rozhodne, kdo může co posílat, kdy a proti jaké kvótě poskytovatele.

Začněte s normalizovaným modelem omezovače, rezervací předletového tokenu a frontami třídy provozu. Poté přidejte hierarchickou spravedlnost tenanta, přizpůsobení záhlaví poskytovatele a regulátory ramp. Výsledkem není jen méně 429s. Je to jasnější přidělování kapacity, předvídatelnější latence, bezpečnější migrace a chování při omezení rychlosti, které mohou vaše týmy inženýrů, financí a zákaznické podpory skutečně vysvětlit.

Související informace

FAQ

Často kladené otázky

Měla by brána AI API opakovat chyby poskytovatele 429?
Ano, ale opakování by měla být poslední vrstva, nikoli hlavní ovládací prvek. Použijte exponenciální backoff a retry-after hlavičky tam, kde jsou k dispozici, ale také přidejte řízení přístupu na straně brány, aby byl přetížený provoz zařazen do fronty, tvarován, směrován nebo odmítnut dříve, než vytvoří kaskádové poskytovatele 429.
Proč sledovat vstupní TPM a výstupní TPM odděleně?
Někteří poskytovatelé vystavují samostatné limity vstupních a výstupních tokenů a dlouhé generace mohou vyčerpat výstupní kapacitu, i když je vstupní kapacita dostupná. Samostatné sledování pomáhá zabránit úspěšnému spuštění streamů a následnému zastavení nebo selhání, když se zvýší tlak výstupního tokenu.
Je odhad místního tokenu dostatečně přesný pro omezení rychlosti?
Nemusí to být dokonalé. Musí být dostatečně konzervativní, aby se zabránilo přetížení, a musí být neustále sladěno se skutečným využitím poskytovatele. Příliš konzervativní odhady mohou kvótu nevyčerpat, takže produkční systémy by měly měřit chybu v odhadu a rychle vrátit nevyužité rezervace.
Kdy by měla fronta brány místo rychlého selhání selhat?
Práce s odolností vůči latenci fronty, jako jsou dávkové úlohy, hodnocení a zpracování na pozadí. U interaktivních požadavků použijte krátký rozpočet fronty a poté buď jasně selžte, nebo ustupte pouze v případě, že model náhrady splňuje požadavky na kompatibilitu trasy, náklady a zásady.