Likmes ierobežojumu apzinošas AI API vārtejas: formas RPM, TPM, sērijveidā un īrnieka godīgums pirms 429 s.
Praktiska vārtejas arhitektūra LLM API 429 kaskādes novēršanai: normalizējiet pakalpojumu sniedzēju ierobežojumus, aprēķiniet pilnvaru spiedienu pirms nosūtīšanas, rezervējiet kvotu nomniekam, vienmērīgi veiciet satiksmes rampas un padariet droseles pārbaudāmu.
429 no LLM pakalpojumu sniedzēja nav tikai signāls, lai mēģinātu mēģināt. Ražošanā bieži vien ir pierādījums, ka jūsu lietojumprogramma jau ir zaudējusi kontroli pār uzņemšanu, īrnieka godīgumu, latentumu vai pakalpojumu sniedzējam specifisku kvotu uzskaiti.
Kopējais labojums — eksponenciāla atkāpšanās — ir nepieciešams, taču nav pilnīgs. Atkāpšanās reaģē pēc tam, kad pakalpojumu sniedzējs noraida trafiku. Likmes ierobežojumu apzinošai AI API vārtejai ir jāveido datplūsma, pirms pieprasījumi tiek atstāti jūsu sistēmā: aprēķiniet pilnvaru spiedienu, rezervējiet kvotu, izolējiet nomniekus, iestatiet pareizo darbu rindā, noraidiet nepareizo darbu un pielāgojieties, kad mainās pakalpojumu sniedzēja ierobežojumi.
Šajā rakstā ir aprakstīts praktisks vārtejas kvotas pārvaldnieks komandām, kas nosūta ražošanas darba slodzi vairākiem LLM nodrošinātājiem, izmantojot vienotu API.
Lasītāja problēma: 429s ir daudzdimensionāli
Daudzas komandas uztver ātruma ierobežojumus tā, it kā tie būtu viens pieprasījumu minūtē skaitlis. Šis pieņēmums ātri tiek pārtraukts, izmantojot LLM API.
Fakti no pašreizējās pakalpojumu sniedzēja dokumentācijas:
- OpenAI dokumenti ar ierobežojumiem var tikt piemēroti īsākiem logiem nekā reklamētais minūtes ierobežojums, tāpēc īsas sērijas var neizdoties pat tad, ja vidējā minūte šķiet droša.
- Azure OpenAI kvota tiek piešķirta pēc abonementa, reģiona, modeļa un izvietošanas veida marķieros minūtē. Piešķirot TPM izvietošanai, tiek noteikti arī piespiedu izsecināšanas RPM ierobežojumi, un RPM un TPM attiecības atšķiras atkarībā no modeļa.
- Azure OpenAI arī atzīmē, ka likmes ierobežojuma pilnvaras aprēķini tiek aprēķināti, kad tiek saņemts pieprasījums, un tie nav vienādi ar galīgo norēķinu pilnvaru skaitu.
- Antropiskie dokumenti nošķir pieprasījumu minūtē, ievades marķieru minūtē un izvades marķieru minūtē ierobežojumus. Pārsniedzot ierobežojumus, tiek atgriezts 429 ar galveni “atkārtoti pēc mēģinājuma”.
- Anthropic brīdina, ka straujš satiksmes pieaugums var sasniegt paātrinājuma ierobežojumus, un iesaka pakāpeniski palielināt ātrumu.
- Lielākajai daļai Claude modeļu Antropiskie dokumenti, kas kešatmiņā nolasa ievades pilnvaras, netiek ņemti vērā ievades marķiera minūtē ierobežojumiem, kas nozīmē, ka tūlītēja kešatmiņa var mainīt faktisko brīvību.
- Google Gemini API likmes ierobežojumi ir saistīti ar projekta lietojuma līmeņiem ar augstākiem līmeņiem atkarībā no norēķinu iestatījumiem, kumulatīviem tēriņiem un laika, kas pagājis pēc maksājuma atskaites punktiem.
Darbības mācība ir skaidra: ar OpenAI saderīga pieprasījuma forma nenozīmē ar OpenAI saderīgu kvotu darbību. Vairāku pakalpojumu sniedzēju vārtejai ir nepieciešams iekšējās kvotas modelis, kas ir bagātāks par “mēģināt vēlreiz, ja 429”.
Izstrādājuma mērķis: padarīt ieejas kontroli par vārtejas pienākumu
Vārtejai, kas apzinās tarifu ierobežojumus, pirms pieprasījuma nosūtīšanas ir jāatbild uz pieciem jautājumiem:
- Kurs pakalpojumu sniedzējs, modelis, izvietošana, reģions, projekts vai darbvieta saņems pieprasījumu?
- Cik daudz pieprasījuma, ievades pilnvaras, izvades pilnvaras un vienlaicības jaudas tas varētu patērēt?
- No kura nomnieka, komandas, API atslēgas, klienta vai darba slodzes klases jāiekasē maksa par koplietoto jaudu?
- Vai pieprasījums ir jāpieņem tagad, īslaicīgi jāievieto rindā, jāsamazina, jānovirza citur vai jānoraida?
- Kā jāsaskaņo rezervācija pēc tam, kad pakalpojumu sniedzējs atgriež faktisko lietojumu?
Vārteja kļūst par kvotu pārvaldnieku. Tas neaizstāj pakalpojumu sniedzēja ierobežojumus. Tas padara pakalpojumu sniedzēju ierobežojumus redzamus, paredzamus un godīgus jūsu sistēmā.
Izveidojiet normalizētu kvotas modeli
Sāciet ar iekšējo ierobežotāju dimensiju definēšanu, kas var pārstāvēt galvenos pakalpojumu sniedzējus, neliekot tos vienā maldinošā segmentā.
Ieteicamie ierobežotāja izmēri
- IPT: pieprasījumi minūtē.
- Ievades TPM: uzvedne, ziņojums, rīks un konteksta pilnvaras minūtē.
- Izvades TPM: pabeigšanas marķieri minūtē, rezervēti atsevišķi straumēšanai un ilgām paaudzēm.
- Kopējais TPM: noderīga pakalpojumu sniedzējiem vai izvietojumiem, kas pakļauj kombinētu pilnvaru spiedienu.
- Vienlaicīgums: aktīvi pieprasījumi, aktīvas straumes vai uzdevumi lidojuma laikā.
- Straumēšanas ilgums: ilgstošas straumes var aizņemt savienojumu un izvades marķieri pat tad, ja RPM ir zems.
- Pakalpojumu sniedzējam noteiktais tvērums: Azure abonements/reģions/izvietošana, antropiskā darbvieta/modeļa klase, Google projekts/līmenis vai OpenAI organizācija/projekts/modeļu grupa.
Neslēpt pakalpojumu sniedzējam raksturīgās dimensijas. Normalizējiet tos kopējā shēmā, taču saglabājiet pietiekami daudz detaļu, lai vēlāk izskaidrotu noraidījumu.
{
"provider": "provider_a",
"model_profile": "ātrā tērzēšana",
"provider_scope": {
"projekts": "prod",
"reģions": "us-austrumi",
"izvietošana": "chat-large-01"
},
"limits": {
"apgr./min.": 1200,
"input_tpm": 800000,
"output_tpm": 250000,
"vienlaikus": 200
}
}Šis iekšējais objekts ir jākonfigurē skaidri, nevis tikai no modeļu nosaukumiem. Pakalpojumu sniedzēja informācijas paneļi, kontu līmeņi, reģionālie izvietojumi un darbvietas iestatījumi var mainīt vienas un tās pašas modeļu saimes faktisko jaudu.
Aprēķiniet marķiera spiedienu pirms nosūtīšanas
Pakalpojumu sniedzēja puses tarifu ierobežošana bieži notiek, pirms ir zināms galīgais norēķinu lietojums. Pirms datplūsmas nosūtīšanas vārtejai ir jāveic tāda paša veida piesardzīgs aprēķins.
Pirmslidojuma rezervācijas ievades
- Serializēta uzvedne un ziņojuma garums.
- Modelim specifiska pilnvarošana un pieskaitāmās izmaksas lomām, rīkiem, attēliem vai strukturētas izvades instrukcijām.
max_completion_tokensvai līdzvērtīgs izvades ierobežojums.- Vēsturiskā pabeigšanas attiecība šim galapunktam, nomniekam, modeļa profilam un pieprasījuma klasei.
- Paredzamie kešatmiņas lasīšanas pilnvari, ja tūlītēja kešatmiņa ir pieejama un izmērāma.
- Straumēšanas karodziņš un paredzamais straumes ilgums.
Lai sāktu, bieži pietiek ar vienkāršu rezervēšanas noteikumu:
estimated_input_tokens = tokenize(request_messages) + model_overhead
aptuvenais_izejas_tokens = min(
max_completion_tokens,
p95_historical_output_tokens_for_route
)
reserved_total_tokens = aprēķinātie_ievades_tokeni + aprēķinātie_izvades_tokeni
Nezināmiem maršrutiem izmantojiet konservatīvu noklusējuma iestatījumu. Lai nodrošinātu stabilus ražošanas maršrutus, aprēķinus pastāvīgi atjauniniet no faktiskā lietojuma.
Rezervēt, pēc tam saskaņot
Kvotu rezervācijām nevajadzētu kļūt par pastāvīgām maksām. Izturieties pret tiem kā aizturētiem:
- Citāts: novērtējiet ieejas un izejas spiedienu.
- Rezerve: pirms nosūtīšanas atņemiet no attiecīgajām marķieru grupām.
- Nokārtot: aizstājiet aprēķinu ar pakalpojumu sniedzēja ziņotu lietojumu, ja tas ir pieejams.
- Atmaksa vai debets: atgrieziet neizmantoto rezervēto jaudu vai iekasējiet pārsniegumu nākamajā logā, ja nepieciešams.
Tas ir vissvarīgākais gariem konteksta un straumēšanas zvaniem. Ja pirms nosūtīšanas pārbaudāt tikai ievades TPM, straume var veiksmīgi sākt un pēc tam vēlāk saskarties ar izvades marķiera spiedienu. Izvades telpas rezervēšana atsevišķi samazina vidējas straumes atteices un apstāšanās risku.
Nomnieka godīguma nodrošināšanai izmantojiet hierarhisku marķieru kopas
Viens globālais ierobežotājs aizsargā pakalpojumu sniedzēja kontu, bet neaizsargā īrniekus vienu no otra. Viens gara konteksta pakešdarbs var patērēt koplietotu TPM un izraisīt citu komandu interaktīvo pieprasījumu neveiksmi.
Izmantojiet hierarhiskas pilnvaru grupas:
organizācija
└── īrnieks
└── komanda
└── api_key
└── modeļa_profils
└── nodrošinātāja_izvietošana
Pieprasījumam ir jānokārto katrs attiecīgais segments. Tas ļauj vienlaikus ieviest vairākas politikas:
- Organizācija nedrīkst pārsniegt nodrošinātāja kapacitāti.
- Īrnieks nevar patērēt vairāk par savu līgumā noteikto daļu.
- API atslēga nedrīkst pārsniegt tai paredzēto vides vai lietojumprogrammas ierobežojumu.
- Pakešmodeļa profils nevar izskaust interaktīvu modeļa profilu.
- Pakalpojumu sniedzēja izvietošanu nevar pārslogot pat tad, ja citai izvietošanai ir rezerves kvota.
Godīga sadale salīdzinājumā ar izmantošanu
Ieteikums: izmantojiet svērtu godīgu dalīšanu ar kontrolētu sērijveida aizņemšanos.
Stingrus ierobežojumus katram īrniekam ir viegli izskaidrot, taču tie var zaudēt neizmantotu jaudu. Sērijveida aizņemšanās uzlabo izmantošanu, ļaujot īrniekam īslaicīgi izmantot dīkstāves kvotu no koplietotā pūla. Kompromiss ir sarežģītība: informācijas paneļos ir jāparāda, kas tika garantēts, kas tika aizņemts un kad aizņēmums tika atsaukts.
Praktisks noteikums:
- Piešķiriet katram nomniekam garantētu bāzes līniju.
- Atļaut sērijveida aizņemšanos no neizmantotās koplietotās jaudas.
- Atgūstiet aizņemto jaudu, kad parādās augstākas prioritātes vai garantēta satiksme.
- Nekad neļaujiet aizņemtai datplūsmai radīt nodrošinātāja līmeņa 429s garantētai datplūsmai.
Atdaliet satiksmes klases, pirms tās cīnās
Ne visi pieprasījumi ir pelnījuši vienādu rindas darbību. Ievietojiet trafiku modeļu profilos ar atsevišķām rindām un kvotu kopumiem.
Stādīšana rindā uzlabo panākumu līmeni, bet palielina astes latentumu. Vārtejai šis kompromiss ir skaidri jānorāda. Piemēram, interaktīvs pieprasījums var pagaidīt līdz 300 milisekundēm, lai iegūtu kvotu, pēc tam atkāpties vai neizdoties. Ikvakara pakešu darbs var pagaidīt 20 minūtes un joprojām tikt uzskatīts par veiksmīgu.
Normalizē 429s vienā kļūdu shēmā
Pat ar labu uzņemšanas kontroli, pakalpojumu sniedzēja 429s joprojām tiks rādīts. Ierobežojumi var mainīties, pakalpojumu sniedzēja aprēķini var atšķirties no jūsu aprēķiniem, un datplūsma var ieplūst straujāk, nekā paredzēts.
Normalizējiet katru nodrošinātāju 429 vārtejas kļūdas objektā:
{
"kļūda": {
"type": "rate_limited",
"limiter": "output_tpm",
"provider": "provider_a",
"model_profile": "ātrā tērzēšana",
"provider_model": "model-x",
"retry_after_ms": 2400,
"īrnieka_id": "īrnieks_123",
"api_key_id": "key_456",
"request_class": "interaktīvs",
"estimated_input_tokens": 4200,
"estimated_output_tokens": 800,
"gateway_decision": "admitted_then_provider_rejected",
"fallback_allowed": nepatiess,
"trace_id": "trace_abc"
}
}
Atslēgas lauks ir gateway_decision. 429 pēc vārtejas pieņemšanas pieprasījums atšķiras no pieprasījuma, ko vārteja noraidīja lokāli pirms nosūtīšanas. Pirmais norāda uz ierobežotāja kalibrēšanas problēmu. Otrais norāda tīšu aizsardzību.
Pielāgojiet pakalpojumu sniedzēja galvenēm, taču neesat no tām atkarīgi
Daži pakalpojumu sniedzēji atgriež noderīgas galvenes, piemēram, atkārtošanas pēc vai atlikušās jaudas indikatorus. Izmantojiet tos, kad tie ir pieejami.
Ieteikums: pakalpojumu sniedzēja galvenēm ir jāpielāgo vietējais gubernators, nevis jāaizstāj tas.
Iemesli:
- Galvenes pieejamība atšķiras atkarībā no pakalpojumu sniedzēja un galapunkta.
- Galvenes nedrīkst parādīt visas ierobežotāja dimensijas.
- Mēģināt vēlreiz pēc tam norāda, kad mēģināt vēlreiz, nevis tam, kuram nomniekam ir jāiegūst nākamā jauda.
- Pakalpojumu sniedzēja marķiera aprēķini var atšķirties no jūsu norēķinu vai iekšējās uzskaites datiem.
Izturīga ieviešana atjaunina vietējo segmentu uzpildes ātrumu un atdzišanu, pamatojoties uz galvenēm, vienlaikus ieviešot nomnieka, API atslēgas, trafika klases un nodrošinātāja izvietošanas ierobežojumus vārtejā.
Pievienojiet rampas pārvaldniekus migrācijai un plānotajiem darbiem
Plānoto izmaiņu laikā notiek daudzi tarifu ierobežojuma gadījumi: pārejot no viena modeļa uz citu, mainot pakalpojumu sniedzējus, iespējojot jaunu aģenta darbplūsmu vai uzsākot ieplānotu novērtēšanas darbību.
Ieteikums: uztveriet datplūsmas pieaugumu kā kontrolētu izlaišanu.
- Funkciju karodziņu modeļu migrācija pēc nomnieka, maršruta vai trafika procentuālās daļas.
- Iestatiet minūtē pieauguma griestus jaunu pakalpojumu sniedzēju izvietošanai.
- Stundu laikā pakāpeniski iesildiet satiksmi, nevis nekavējoties pārslēdziet visu satiksmi.
- Apturiet izlaišanu, kad 429 līmenis, pazemināšanas līmenis, rindas dziļums vai p95 latentums pārsniedz slieksni.
- Saglabājiet ārkārtas atcelšanas maršrutu ar saderības politiku, nevis tikai rezerves modeli.
Paredzēšana: tā kā pakalpojumu sniedzēja maršrutēšanas režīmi, prioritāšu līmeņi un darbvietas līmeņa vadīklas kļūst arvien izplatītākas, rampas pārvaldība kļūs par standarta vārtejas līdzekli, nevis par incidentu atbildes skriptu.
Atkāpšanās ir politisks lēmums, nevis tikai kapacitātes lēmums
Kad viens pakalpojumu sniedzējs atgriež 429, maršrutēšana citam pakalpojumu sniedzējam var būt pareizā atbilde. Tas var būt arī nedrošs.
Atkāpšanās var mainīties:
- Izvades kvalitāte un tālāk sniegtās instrukcijas.
- Konteksta garums.
- Rīka izsaukuma darbība.
- Strukturētas izvades uzticamība.
- Datu saglabāšana un dzīvesvietas pozīcija.
- Maksa un latentums.
Kvotas pārvaldītājam ir jājautā saderības slānim, vai šai pieprasījuma klasei ir atļauts izmantot atkāpšanos. Ja nē, tam vajadzētu iestāties rindā vai neizdoties ar skaidru vietējā ātruma ierobežojuma atbildi, nevis klusi mainīt semantiku.
Atklājiet kvotu informācijas paneļus, kas izskaidro lēmumus
Kvotu sistēma, ko neviens nevar saprast, tiks apieta. Veidojiet informācijas paneļus, pamatojoties uz darbības jautājumiem:
- Kuri nomnieki patērē visvairāk RPM, ievades TPM un izejas TPM?
- Kuri modeļu profili atrodas rindā, tiek noraidīti vai atkāpjas?
- Kura pakalpojumu sniedzēja darbības joma ir vājā vieta: projekts, reģions, izvietošana, darbvieta, modeļa klase vai konta līmenis?
- Cik bieži vārtejas aprēķini atšķiras no pakalpojumu sniedzēja lietojuma?
- Kas ir atkārtots mēģinājums pēc izplatīšanas pēc pakalpojumu sniedzēja un ierobežotāja veida?
- Cik lielu brīvību nodrošina tūlītēja kešatmiņas nolasīšana?
- Kuras satiksmes klases aizņem sērijveida jaudu?
Klientiem vai partneriem paredzētiem produktiem izmantojiet drošas vadības ierīces:
- Atslēgas likmes ierobežojumi.
- Komandas sēriju ierobežojumi.
- Dienas ierobežojumi uz vienu klientu.
- Īrnieka vai atslēgas ārkārtas pauze.
- Brīdinājumi par 429 smailēm, rindu pieaugumu un neparastu pilnvaru spiedienu.
- Partner API galapunkti tālākpārdevēju kvotu pārvaldībai.
Tas pārvērš ātruma ierobežošanu no noslēpumainas pakalpojumu sniedzēja kļūdas par pārbaudāmu komandas API pārvaldības daļu.
Ieviešanas kontrolsaraksts
1. fāze: novērojiet un klasificējiet
- Katra zvana žurnāla nodrošinātājs, modelis, izvietošana, reģions, darbvieta, projekts, nomnieks, API atslēga un pieprasījuma klase.
- Tveriet 429. nodrošinātāju ar atkārtojuma mēģinājumu un neapstrādātiem kļūdu metadatiem.
- Atsevišķi ierakstiet aptuvenās un faktiskās ievades/izvades pilnvaras.
- Atdaliet interaktīvo, pakešu, eval un fona trafiku telemetrijā.
2. fāze: vietējās uzņemšanas kontrole
- Izveidojiet iekšējos ierobežotāju objektus RPM, ievades TPM, izvades TPM, kopējam TPM un vienlaicīgumam.
- Pievienojiet pirmslidojuma pilnvaras aprēķinu.
- Rezervējiet kvotu pirms nosūtīšanas un saskaņojiet pēc pakalpojumu sniedzēja lietošanas.
- Noraidīt lokāli, ja pieprasījums neietilpst tā nomnieka vai nodrošinātāja segmentā.
3. fāze: godīgums un rindas
- Pievienojiet hierarhiskas grupas no organizācijas uz pakalpojumu sniedzēja izvietošanu.
- Piešķiriet garantētās īrnieka daļas un kontrolētu aizņemšanos.
- Izveidojiet atsevišķas rindas pēc satiksmes klases.
- Iestatiet katrai klasei atbilstošu maksimālo gaidīšanas laiku un atkāpšanās noteikumus.
4. fāze: pielāgošana un darbības
- Izmantojiet pakalpojumu sniedzēja galvenes, lai pielāgotu atdzišanas un papildināšanas pieņēmumus.
- Pievienojiet rampas pārvaldniekus migrācijai un plānotajiem darbiem.
- Atklājiet kvotu informācijas paneļus un brīdinājumus.
- Katru nedēļu pārskatiet aplēses kļūdu un iestrēgušo kvotu.
Lietojams secinājums
Ja jūsu vārteja mēģina tikai 429s, tā darbojas pēc kļūmes. Ražošanas līmeņa AI API vārtejai vajadzētu novērst lielāko daļu ātruma ierobežojuma kļūdu, izlemjot, kam ir atļauts ko sūtīt, kad un pret kuru pakalpojumu sniedzēja kvotu.
Sāciet ar normalizētu ierobežotāja modeli, pirmslidojuma pilnvaru rezervēšanu un satiksmes klases rindām. Pēc tam pievienojiet hierarhisku nomnieka godīgumu, pakalpojumu sniedzēja galvenes pielāgošanu un rampas pārvaldniekus. Rezultāts ir ne tikai mazāks 429s. Jūsu inženieru, finanšu un klientu atbalsta komandas var izskaidrot skaidrāku jaudas piešķiršanu, paredzamāku latentumu, drošāku migrāciju un likmes ierobežojuma uzvedību.