Service-tier routing in een AI API Gateway: snel, standaard, ingericht en batchgewijs zonder hard-coding providers
Een praktische architectuur voor het blootleggen van provider-neutrale AI-werklastlagen bij de gateway, en het vervolgens toewijzen van elk verzoek aan snelle, standaard-, ingerichte of batchcapaciteit met tenantcontroles, analyses en factureringsgegevens.
Routing op serviceniveau is de beleidslaag die beslist of een AI-verzoek premium capaciteit met lage latentie, normale on-demand capaciteit, gereserveerde doorvoer of asynchrone verwerking met korting verdient. Zonder die laag coderen applicatieteams doorgaans providerspecifieke vlaggen, implementatienamen en batcheindpunten rechtstreeks in productcode. Dat maakt het lastig om latentie, kosten, quota en factureringsgedrag van huurders te controleren.
De gateway moet de intentie van de werkbelasting blootleggen, en niet de mechanismen van de provider. Een productteam zou moeten kunnen zeggen "dit is een interactief ondersteuningsantwoord" of "dit is een nachtelijke verrijkingsopdracht", terwijl de gateway deze intentie in kaart brengt voor de juiste upstream-capaciteitsoptie en registreert wat er feitelijk is gebeurd.
Het lezersprobleem: capaciteitsklassen worden applicatielogica
Teams die meer dan één modelprovider gebruiken, beginnen vaak met eenvoudige modelrouting: stuur deze model-ID naar deze provider. De routering wordt moeilijker wanneer providers verschillende capaciteitsklassen aanbieden:
- Premium verwerking van verzoeken met lage latentie voor gebruikersgerichte paden.
- Standaard gedeelde capaciteit voor gewoon synchroon verkeer.
- Speciale of ingerichte capaciteit voor voorspelbare doorvoer.
- Batch- of asynchrone API's voor latentietolerante productietaken.
- Overloopgedrag wanneer de gereserveerde capaciteit is uitgeput.
Als elke applicatie deze keuzes zelf afhandelt, verliest de organisatie de controle over vier dingen: wie premium-capaciteit mag gebruiken, hoeveel het kost, wat er gebeurt als er geen capaciteit beschikbaar is, en of het gekozen niveau het product voldoende heeft verbeterd om de uitgaven te rechtvaardigen.
Het praktische patroon is om een provider-neutrale quality-of-service-laag in de AI API-gateway te plaatsen.
Feiten om op voort te bouwen
De details variëren per provider, maar verschillende waarneembare feiten ondersteunen een ontwerp op gatewayniveau.
- Feit: sommige providers bieden een servicelaag per aanvraag aan voor premiumverwerking. OpenAI beschrijft de snelle modus als een optie per verzoek met behulp van de parameter
service_tieren zegt dat hiervoor een premie wordt gefactureerd ten opzichte van de standaardverwerking. OpenAI vermeldt ook dat Prioriteitsverwerking op 30 juli 2026 is hernoemd naar de Snelle modus, terwijl zowelservice_tier=priorityalsservice_tier=fastworden geaccepteerd voor API verzoeken. - Feit: De verwerking van premiumverzoeken is mogelijk geen afzonderlijk quota-universum. OpenAI merkt op dat snelheidslimieten in de snelle modus worden gedeeld met andere serviceniveaus, en dat snelle toename van het verkeer een stijging van de snelheid kan veroorzaken, waarbij een deel van het verkeer in plaats daarvan naar de standaardverwerking kan worden gestuurd.
- Feit: Serviceniveau kan een rapportage- en factureringsdimensie zijn. OpenAI zegt dat API klanten de gegevens van het gebruiksdashboard kunnen groeperen op serviceniveau en regelitem. Anthropic documenten
standard,priorityenbatchals servicelaagwaarden in API gebruiksrapportage. - Feit: Batch-API's kunnen de kosten voor asynchrone werkzaamheden aanzienlijk verlagen. Volgens de prijsdocumentatie van Anthropic ondersteunt batch API asynchrone verwerking van grote volumes met een korting van 50% op invoer- en uitvoertokens. De Gemini Batch API-documentatie van Google beschrijft grote asynchrone productietaken tegen 50% van de standaardkosten, met compromissen op het gebied van de doorlooptijd, zoals tot 24 uur voor sommige opdrachten met een hoog volume.
- Feit: De geleverde doorvoer is een afzonderlijk capaciteitsmodel. Microsoft documenteert door Azure OpenAI ingerichte doorvoer als toegewezen capaciteit, in tegenstelling tot standaardimplementaties waarbij de capaciteit wordt gedeeld en de doorvoer kan variëren afhankelijk van de vraag. Microsoft documenteert ook de overloop van ingerichte implementaties naar standaardimplementaties in dezelfde Azure OpenAI-bron.
De aanbeveling is om niet elke providerterm in de applicatiecode te spiegelen. De aanbeveling is om deze mechanismen te normaliseren in bedrijfsgerichte gatewaylagen.
Definieer providerneutrale gatewayniveaus
Begin met het benoemen van niveaus voor het werklastgedrag, niet voor de terminologie van de leverancier. Een nuttige eerste taxonomie is:
| Gatewaylaag | Typische werklast | Latentieverwachting | Kostenhouding | Standaard downgradegedrag |
|---|---|---|---|---|
interactive_fast |
Spraaklussen, livechat, waardevolle gebruikersacties | Laagste praktische latentie | Premium toegestaan | Ga standaard door of faal snel, afhankelijk van de workflow |
interactive_standard |
Normale chat, ondersteuning bij het opstellen, interne copiloten | Synchroon | Standaardkosten | Opnieuw proberen, terugvallen of een gecontroleerde fout retourneren |
reserved_capacity |
Voorspelbaar productieverkeer met stabiel gebruik | Voorspelbare doorvoer | Voorafbetaalde of vastgelegde capaciteit | Overloop alleen als het beleid dit toestaat |
background_discount |
Evaluaties, verrijking, samenvatting, insluitingen, rapporten | Asynchroon | Korting heeft de voorkeur | Wachtrij totdat er een batchpad beschikbaar is |
emergency_fallback |
Reactie op incidenten of tijdelijke escalatie van klanten | Beleidsafhankelijk | Gecontroleerde uitzondering | Automatisch verlopen na goedkeuringsperiode |
Deze lijst met niveaus is opzettelijk klein. Als je twintig lagen maakt, zullen ontwikkelaars het systeem omzeilen. De gateway kan nog steeds één neutrale laag intern toewijzen aan verschillende providerspecifieke mechanismen.
Gevraagd niveau scheiden van geselecteerd niveau
De beller moet een aangevraagd niveau verzenden, maar de gateway moet zowel het aangevraagde niveau als het feitelijk geselecteerde niveau registreren. Die zijn niet altijd hetzelfde.
Voorbeeld metadata van verzoek:
{
"model": "support-chat-default",
"messages": [...],
"metadata": {
"workflow": "customer_support_reply",
"tenant_id": "tenant_123",
"requested_gateway_tier": "interactive_fast",
"end_user_id": "u_789"
}
}
Voorbeeld verzendrecord:
{
"request_id": "req_abc",
"tenant_id": "tenant_123",
"api_key_id": "key_live_456",
"workflow": "customer_support_reply",
"model_alias": "support-chat-default",
"requested_gateway_tier": "interactive_fast",
"selected_provider": "provider_a",
"selected_provider_tier": "fast",
"tier_outcome": "selected_as_requested",
"downgrade_reason": null,
"input_tokens": 1840,
"output_tokens": 420,
"latency_ms": 1420,
"estimated_cost_usd": "0.0312",
"settled_cost_usd": "0.0308"
}
Als een premiumverzoek naar de standaardverwerking wordt gestuurd vanwege ramplimieten of huurderbudgetregels, moet dit zichtbaar zijn:
{
"requested_gateway_tier": "interactive_fast",
"selected_provider_tier": "standard",
"tier_outcome": "downgraded",
"downgrade_reason": "tenant_premium_budget_exhausted"
}
Dit onderscheid voorkomt misleidende analyses. Als dashboards alleen laten zien wat de beller heeft gevraagd, ziet de financiële afdeling de premium intentie, maar niet de premium uitvoering. Als dashboards alleen het upstream-resultaat weergeven, weten productteams niet wanneer hun latentiegevoelige workflow premiumcapaciteit werd geweigerd.
Stel een mogelijkhedenmatrix samen voordat u routert
Een router op serviceniveau heeft een mogelijkhedenmatrix nodig. De matrix moet het volgende beantwoorden: welke capaciteitsmechanismen zijn beschikbaar voor een bepaald model, regio, tenant en workflow?
Minimale velden:
providermodel_or_deploymentregionssupports_syncsupports_batchsupports_premium_tiersupports_provisioned_capacitysupports_spilloverprovider_tier_valuesbilling_line_itemsknown_downgrade_behaviortenant_allowlist
Een vereenvoudigd voorbeeld:
gateway_tier_map:
interactive_fast:
preferred:
- provider: openai
request_params:
service_tier: fast
- provider: anthropic
request_params:
service_tier: priority
fallback:
- gateway_tier: interactive_standard
allowed_when: policy.allows_standard_downgrade
background_discount:
preferred:
- provider: anthropic
mode: batch
- provider: gemini
mode: batch
fallback:
- queue: delayed_retry
allowed_when: true
reserved_capacity:
preferred:
- provider: azure_openai
deployment_class: provisioned
fallback:
- provider: azure_openai
deployment_class: standard
allowed_when: policy.allows_spillover
Deze matrix moet configuratie zijn, geen verspreide code. Naamswijzigingen van providers, regionale beschikbaarheid en factureringsbehandeling zullen in de loop van de tijd veranderen. Het updaten van een gatewaybeleid is veiliger dan het opnieuw implementeren van elke applicatie die API.
aanroeptClassificeer productietaken voordat u capaciteit kiest
Het moeilijkste deel is niet het in kaart brengen van de provider. Het bepaalt welke verzoeken welk niveau verdienen.
Goede kandidaten voor interactive_fast
- Stemassistenten waarbij vertraging het gesprek onderbreekt.
- Klantgerichte chat over waardevolle conversie- of retentiepaden.
- Human-in-the-loop-operaties waarbij een agent actief wacht.
- Productie-incidenten waarbij de latentie rechtstreeks van invloed is op de mitigatie.
Goede kandidaten voor interactive_standard
- Interne copiloten.
- Ondersteun het opstellen van teksten waarbij een mens een normale responstijd kan tolereren.
- Productfuncties waarbij de responstijd belangrijk is, maar niet cruciaal.
Goede kandidaten voor background_discount
- Nachtelijke samenvatting.
- Verrijking van grote documenten.
- Offline evaluaties.
- Bulkvernieuwingen voor insluiten.
- Analytics-labeling en genereren van rapporten.
Goede kandidaten voor reserved_capacity
- Constante productieworkloads met grote volumes.
- Gecontracteerde productietaken voor klanten met voorspelbare doorvoerverplichtingen.
- Verkeer dat geen luidruchtige variatie van de buren kan tolereren en voldoende benut wordt om speciale capaciteit te rechtvaardigen.
Een eenvoudige beleidsregel is: sta bellers niet toe premiumcapaciteit te kiezen alleen maar omdat ze de voorkeur geven aan snelheid. Vereist een gedeclareerde workflow, tenanttoestemming en budgetenvelop.
Tenant- en API-sleutelrechten afdwingen
Voor elke tenant en API sleutel moet een toegestane laag zijn ingesteld. Nieuwe sleutels moeten standaard de standaard- en achtergrondniveaus gebruiken, en niet de premiumniveaus.
Voorbeeld van huurdersbeleid:
{
"tenant_id": "tenant_123",
"allowed_gateway_tiers": [
"interactive_standard",
"background_discount"
],
"premium_tier": {
"enabled": false,
"monthly_budget_usd": "0.00",
"approval_required": true
},
"reserved_capacity": {
"enabled": true,
"deployment_pool": "support-prod-ptu",
"allow_spillover_to_standard": true,
"spillover_monthly_budget_usd": "500.00"
}
}
Voorbeeld van overschrijven op sleutelniveau:
{
"api_key_id": "key_voice_prod",
"allowed_gateway_tiers": ["interactive_fast"],
"workflow_allowlist": ["voice_control_loop"],
"premium_daily_budget_usd": "75.00",
"max_premium_traffic_percent": 15
}
Het beleid op sleutelniveau voorkomt onbedoelde uitbreiding. Een ontwikkelaar kan een sleutel die bedoeld is voor spraakverkeer niet gebruiken voor een bulksamenvattingsscript, tenzij de workflow ook is toegestaan.
Ontwerp expliciet downgrade- en overloopgedrag
Downgradegedrag is een productbeslissing, niet alleen een infrastructuurbeslissing. Wanneer premium of ingerichte capaciteit niet beschikbaar is, moet de gateway een van de vier paden kiezen:
- Ga door op standaard: Handig als beschikbaarheid belangrijker is dan consistentie van de latentie.
- Wachtrij: Handig voor achtergrondtaken en batchproducties.
- Faal snel: Handig wanneer een trage reactie erger zou zijn dan geen reactie, zoals strakke realtime loops.
- Vraag de beller om het opnieuw te proberen: Handig als de client het veilig opnieuw kan proberen met een uitstel en een behouden idempotentiesleutel.
Voorbeeldbeleid:
downgrade_policy:
voice_control_loop:
requested_tier: interactive_fast
if_fast_unavailable: fail_fast
error_code: tier_capacity_unavailable
customer_support_reply:
requested_tier: interactive_fast
if_fast_unavailable: proceed_on_standard
record_outcome: downgraded
nightly_document_enrichment:
requested_tier: background_discount
if_batch_unavailable: queue
max_queue_delay_hours: 24
contracted_api_customer:
requested_tier: reserved_capacity
if_reserved_exhausted: spillover_to_standard
require_spillover_budget: true
Verberg de overloop niet. Spillover kan de beschikbaarheid verbeteren, maar verandert de kosten en de SLO-interpretatie. Facturen en analyses moeten het verzoek om gereserveerde capaciteit, de overloopgebeurtenis, de daadwerkelijk gebruikte standaardcapaciteit en de reden ervan weergeven.
Verbind routering op serviceniveau met facturering
Een gateway kan de premium-uitgaven niet controleren als de niveaukeuze geen deel uitmaakt van het grootboek. Bewaar deze velden voor elk verzoek of elke taak:
- Aangevraagde gatewaylaag.
- Geselecteerd providerniveau of capaciteitsklasse.
- Niveauresultaat: geselecteerd, gedowngraded, geüpgraded, in de wachtrij geplaatst, overloop, afgewezen.
- Reden voor resultaat.
- Tenant-, API sleutel-, gebruiker- en workflow-ID's.
- Modelalias en upstream-model of implementatie.
- Geschatte kosten vóór verzending.
- Verrekende kosten nadat het gebruik van de provider bekend is.
- Latentie en aantal nieuwe pogingen voor synchrone verzoeken.
- Batchverzendingstijd, voltooiingstijd en status van resultaatopname voor asynchrone taken.
Met deze velden kan de gateway de vragen beantwoorden die Finance en Engineering zullen stellen:
- Welke huurders hebben deze week premiumcapaciteit gebruikt?
- Welke workflows hebben de hoogste uitgaven veroorzaakt?
- Hoe vaak zijn premiumverzoeken gedowngraded naar de standaard?
- Heeft
interactive_fastde p95-latentie voldoende verbeterd om de premie te rechtvaardigen? - Hoeveel heeft batchverwerking op de achtergrond bespaard vergeleken met synchrone standaardverwerking?
- Hoeveel standaard-spillover heeft de ingerichte capaciteit gegenereerd?
De belangrijke aanbeveling: factureer het feitelijk gebruikte niveau, terwijl u ook het aangevraagde niveau weergeeft voor operationele context. Anders zullen huurders verrast worden door de kosten of misleid worden over de servicekwaliteit.
Voeg vangrails toe zodat premium niet de standaard wordt
Zodra teams een sneller niveau ontdekken, kunnen ze dit te veel gebruiken. Stel limieten in de gateway in vóór een brede implementatie.
- Premiumbudget per huurder: Harde maandelijkse en dagelijkse plafonds.
- Workflowgoedkeuring: Premium alleen toegestaan voor benoemde workflows.
- Verkeersaandeellimiet: Niet meer dan 10% van de synchrone verzoeken van een tenant mag bijvoorbeeld
interactive_fastgebruiken zonder goedkeuring. - Waarschuwing van standaard naar premium: Waarschuw wanneer een workflow die normaal gesproken de standaard gebruikt, wordt geüpgraded.
- Waarschuwing voor premiumverbrandingspercentage: Waarschuwing wanneer de verwachte uitgaven het goedgekeurde budget overschrijden.
- Automatisch verlopen: Tijdelijke noodoverschrijvingen moeten verlopen zonder handmatig opschonen.
- Batch-geschiktheidscontroles: Blokkeer bulktaken van synchrone premiumniveaus wanneer ze voldoen aan batchcriteria.
Relingen moeten omkeerbaar zijn. Tijdens een incident kan het nodig zijn dat een geautoriseerde exploitant een tijdelijke premieoverschrijding verleent. Die overschrijving moet een reden, goedkeurder, budget, vervaltijd en auditrecord hebben.
Implementatievolgorde
Een veilige implementatie begint niet met het overal inschakelen van premium routing. Begin met meten.
1. Schaduwlaagclassificatie toevoegen
Classificeer elk verzoek in een voorgestelde gatewaylaag, maar wijzig de routering nog niet. Leg de voorgestelde laag vast naast de bestaande latentie-, kosten- en workflow-metagegevens. Hieruit blijkt hoeveel verkeer zou worden verplaatst naar premium-, batch- of gereserveerde capaciteit als het beleid zou worden afgedwongen.
2. Maak de mogelijkhedenmatrix
Geef een overzicht van de mechanismen van de provider, ondersteunde modellen, regio's, limieten, rapportagevelden en bekend downgradegedrag. Behandel onbekend downgradegedrag als een risico totdat het wordt getest.
3. Tenantmachtigingen afdwingen in de testmodus
Log of elk verzoek wordt toegestaan, gedowngraded, in de wachtrij geplaatst of afgewezen. Deel de resultaten met producteigenaren voordat u tot handhaving overgaat.
4. Schakel één niveau in voor één cohort
Kies een beperkte workflow, zoals een live ondersteuningsantwoordpad of een nachtelijke samenvattingstaak. Schakel de relevante gatewaylaag in voor een klein tenantcohort. Meet p50-latentie, p95-latentie, kosten, downgradepercentage, foutenpercentage en gebruikersgerichte bedrijfsstatistieken, indien beschikbaar.
5. Alleen uitbreiden als de gegevens dit ondersteunen
Als de premiumlaag de latentie verbetert, maar niet de productresultaten, houd deze dan beperkt. Als batchverwerking de kosten verlaagt zonder het productgedrag te schaden, breid dit dan uit. Als de ingerichte capaciteit inactief is, bekijk dan de verplichting opnieuw of stuur er meer voorspelbaar verkeer naartoe.
Afwegingen om expliciet te maken
- Premium lagen met lage latentie kunnen de responsiviteit verbeteren, maar ze kunnen snelheidslimieten delen of rampbeperkingen veroorzaken. Ze zijn geen vervanging voor het vormgeven van tarieflimieten.
- De ingerichte capaciteit verbetert de voorspelbaarheid, maar kan geld verspillen als het gebruik laag is. Standaard- of batchcapaciteit kan beter zijn voor piekerig of latentietolerant verkeer.
- Batchverwerking kan de tokenkosten verlagen, maar het verandert het productgedrag omdat reacties asynchroon zijn en veel later kunnen arriveren.
- Provider-neutrale laagnamen vereenvoudigen de applicatiecode, maar de gateway moet een up-to-date mogelijkhedenmatrix onderhouden omdat providers verschillende namen, limieten, factureringsregels en downgradegedrag gebruiken.
- Automatische downgrade verbetert de beschikbaarheid, maar kan de SLO- en factureringsverwachtingen vervagen, tenzij de gateway het feitelijk gebruikte niveau registreert.
- Strikte tenantcontroles voorkomen onverwachte uitgaven, maar te rigide beleid kan urgente productieworkflows blokkeren, tenzij er een gecontroleerd overschrijvingspad is.
Voorspelling: de servicelaag wordt een eersteklas routeringsdimensie
Voorspelling: Naarmate model-API's volwassener worden, zal de servicelaag net zo belangrijk worden voor AI-routering als modelkeuze, regio en contextvenster. Teams zullen niet alleen vragen: “welk model moet dit beantwoorden?” Ze zullen vragen “welk model, onder welke capaciteitsklasse, voor welk huurdersbudget, met welk downgradebeleid?”
Aanbeveling: Ontwerp het gatewaygrootboek en het beleidsmodel nu zo dat nieuwe providercapaciteitsklassen kunnen worden toegevoegd zonder de applicatiecode te wijzigen. Zelfs als u alleen met standaard en batch begint, gebruikt u vanaf het begin velden als requested_gateway_tier, selected_provider_tier en tier_outcome.
Handige checklist
- Definieer niet meer dan vijf provider-neutrale gateway-niveaus.
- Vereisen dat elke API sleutel aangeeft welke niveaus en workflows deze mag gebruiken.
- Ontwikkel een matrix met providercapaciteiten voor premium-, standaard-, ingericht-, batch- en overloopgedrag.
- Registreer het gevraagde niveau, het geselecteerde niveau, de downgrade- of overloopresultaten, de latentie, het gebruik en de verrekende kosten.
- Standaard nieuwe sleutels voor standaard- of achtergrondlagen.
- Voeg premiumbudgetten, verkeersaandeellimieten en waarschuwingen toe.
- Maak downgradegedrag expliciet per workflow.
- Begin met schaduwstatistieken vóór handhaving.
- Routeer eerst premium of ingerichte capaciteit uit naar een klein cohort.
- Uitbreiden alleen als latentie, betrouwbaarheid of bedrijfsstatistieken de kosten rechtvaardigen.
Conclusie
Routing op serviceniveau hoort thuis in de AI API-gateway omdat het een transversale beleidsbeslissing is. Het heeft invloed op de latentie, kosten, quota, tenantmachtigingen, facturen en operationele verwachtingen. Applicatieteams mogen providerspecifieke laagnamen of implementatieklassen niet hardcoderen alleen maar om de urgentie van de werklast uit te drukken.
Een praktische gateway maakt neutrale niveaus zichtbaar, zoals interactive_fast, interactive_standard, reserved_capacity en background_discount. Het wijst deze lagen toe aan providerspecifieke mechanismen, dwingt tenantrechten af, registreert de daadwerkelijke uitkomst en maakt van premiumcapaciteit een opzettelijke uitzondering in plaats van het standaardpad.