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 die 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 modelroutering: stuur dit model-ID naar deze provider. De routering wordt moeilijker wanneer providers verschillende capaciteitsklassen blootleggen:
- 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.
- Spillovergedrag 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 serviceniveau 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 stelt ook dat Prioriteitsverwerking op 30 juli 2026 is omgedoopt tot 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 kan leiden tot stijgingsgedrag waarbij een deel van het verkeer in plaats daarvan naar de standaardverwerking kan worden gestuurd.
- Feit: de servicelaag kan een rapportage- en factureringsdimensie zijn. OpenAI zegt dat API-klanten gebruiksdashboardgegevens kunnen groeperen op servicelaag en regelitem. Antropische documenten
standaard,prioriteitenbatchals servicelaagwaarden in API-gebruiksrapportage. - Feit: Batch-API's kunnen de kosten voor asynchroon werk aanzienlijk verlagen. Antropische prijsdocumentatie zegt dat de Batch API asynchrone verwerking van grote volumes ondersteunt 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 zoals tot 24 uur voor sommige opdrachten met een hoog volume.
- Feit: De ingerichte 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 gateway-lagen.
Definieer providerneutrale gatewayniveaus
Begin met het benoemen van niveaus voor werklastgedrag, niet voor leveranciersterminologie. Een bruikbare eerste taxonomie is:
interactief_snelinteractieve_standaardgereserveerde_capaciteitachtergrondkortingemergency_fallbackDeze lijst met niveaus is bewust klein gehouden. Als je twintig lagen maakt, zullen ontwikkelaars het systeem omzeilen. De gateway kan nog steeds één neutrale laag intern toewijzen aan verschillende providerspecifieke mechanismen.
Scheid het aangevraagde niveau van het geselecteerde niveau
De beller moet een aangevraagde laag verzenden, maar de gateway moet zowel de aangevraagde laag als de daadwerkelijk geselecteerde laag registreren. Die zijn niet altijd hetzelfde.
Voorbeeld metadata van verzoek:
{
"model": "ondersteuning-chat-default",
"berichten": [...],
"metagegevens": {
"workflow": "customer_support_reply",
"tenant_id": "tenant_123",
"requested_gateway_tier": "interactief_snel",
"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": "ondersteuning-chat-default",
"requested_gateway_tier": "interactief_snel",
"selected_provider": "provider_a",
"selected_provider_tier": "snel",
"tier_outcome": "geselecteerd_as_requested",
"downgrade_reason": null,
"invoer_tokens": 1840,
"output_tokens": 420,
"latency_ms": 1420,
"geschatte_kosten_usd": "0,0312",
"settled_cost_usd": "0,0308"
Als een premiumverzoek naar de standaardverwerking wordt gestuurd vanwege ramplimieten of huurderbudgetregels, moet dat zichtbaar zijn:
{
"requested_gateway_tier": "interactief_snel",
"selected_provider_tier": "standaard",
"tier_outcome": "gedowngraded",
"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 gaat routeren
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:
aanbiedermodel_of_deploymentregio'sondersteunt_syncondersteunt_batchondersteunt_premium_tierondersteunt_provisioned_capacityondersteunt_spilloverprovider_tier_valuesbilling_line_itemsbekend_downgrade_gedraghuurderslijst
Een vereenvoudigd voorbeeld:
gateway_tier_map:
interactief_snel:
voorkeur:
- aanbieder: openai
verzoek_params:
service_tier: snel
- aanbieder: antropisch
verzoek_params:
service_tier: prioriteit
terugval:
- gateway_tier: interactieve_standaard
allow_when: policy.allows_standard_downgrade
achtergrondkorting:
voorkeur:
- aanbieder: antropisch
modus: batch
- aanbieder: gemini
modus: batch
terugval:
- wachtrij: vertraagde_retry
toegestaan_wanneer: waar
gereserveerde_capaciteit:
voorkeur:
-provider: azure_openai
deployment_class: ingericht
terugval:
-provider: azure_openai
implementatieklasse: standaard
allow_when: policy.allows_spillover
Deze matrix moet configuratie zijn en 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 de API aanroept.
Classificeer productietaken voordat u capaciteit kiest
Het moeilijkste deel is niet het in kaart brengen van de providers. 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.
- Grote documentverrijking.
- Offline evaluaties.
- Bulk-insluiting vernieuwd.
- Analytics-labeling en genereren van rapporten.
Goede kandidaten voor gereserveerde_capaciteit
- Constante productieworkloads met grote volumes.
- Gecontracteerde klantworkloads met voorspelbare doorvoerverplichtingen.
- Verkeer dat geen luidruchtige burenvariatie kan tolereren en dat voldoende benut wordt om speciale capaciteit te rechtvaardigen.
Een eenvoudige beleidsregel is: laat bellers niet kiezen voor premiumcapaciteit alleen maar omdat ze de voorkeur geven aan snelheid. Vereist een gedeclareerde workflow, toestemming van de huurder en een budgetenvelop.
Tenant- en API-sleutelrechten afdwingen
Elke tenant en API-sleutel moet een toegestane laag hebben. Nieuwe sleutels moeten standaard de standaard- en achtergrondniveaus gebruiken, en niet de premiumniveaus.
Voorbeeld van huurdersbeleid:
{
"tenant_id": "tenant_123",
"allowed_gateway_tiers": [
"interactieve_standaard",
"achtergrond_korting"
],
"premium_tier": {
"ingeschakeld": false,
"maandelijks_budget_usd": "0,00",
"goedkeuring_vereist": waar
},
"gereserveerde_capaciteit": {
"ingeschakeld": waar,
"deployment_pool": "support-prod-ptu",
"allow_spillover_to_standard": waar,
"spillover_monthly_budget_usd": "500,00"
}
Voorbeeld van overschrijven op sleutelniveau:
{
"api_key_id": "key_voice_prod",
"allowed_gateway_tiers": ["interactief_snel"],
"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 met de standaard: Handig als beschikbaarheid belangrijker is dan consistentie van de latentie.
- Wachtrij: Handig voor achtergrondtaken en batchproducties.
- Faal snel: Handig wanneer een langzame reactie erger zou zijn dan geen reactie, zoals strakke realtime loops.
- Vraag de beller om het opnieuw te proberen: Handig wanneer de klant het veilig opnieuw kan proberen met een uitstel en een behouden idempotentiesleutel.
Voorbeeldbeleid:
downgrade_beleid:
voice_control_loop:
request_tier: interactief_snel
if_fast_unavailable: fail_fast
error_code: tier_capacity_unavailable
klant_ondersteuning_antwoord:
request_tier: interactief_snel
if_fast_unavailable: ga verder_op_standaard
record_outcome: gedegradeerd
nightly_document_enrichment:
request_tier: achtergrondkorting
if_batch_unavailable: wachtrij
max_queue_delay_hours: 24
gecontracteerde_api_klant:
aangevraagde_tier: gereserveerde_capaciteit
if_reserved_exhausted: overloop_naar_standaard
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 feitelijk 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 elke aanvraag of vacature:
- Gatewaylaag aangevraagd.
- 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 premium capaciteit gebruikt?
- Welke workflows zorgden voor de meeste premium uitgaven?
- Hoe vaak zijn premiumverzoeken gedowngraded naar standaard?
- Heeft
interactive_fastde p95-latentie voldoende verbeterd om de premium te rechtvaardigen? - Hoeveel bespaarde batchverwerking op de achtergrond vergeleken met synchrone standaardverwerking?
- Hoeveel standaard-spillover heeft de ingerichte capaciteit gegenereerd?
De belangrijke aanbeveling: factureer de daadwerkelijk gebruikte laag, terwijl u ook de gevraagde laag weergeeft voor operationele context. Anders zullen huurders verrast worden door de kosten of misleid worden over de kwaliteit van de dienstverlening.
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 de brede uitrol.
- Premiebudget 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: waarschuwing 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.
De leuningen 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 uitrol 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. Creëer de mogelijkhedenmatrix
Maak een lijst van mechanismen van providers, 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 voorziene capaciteit verbetert de voorspelbaarheid, maar kan geld verspillen als de bezettingsgraad 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 doen 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-routing als de 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 op standaard- of achtergrondniveaus.
- 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.
- Breid alleen uit 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 aan te geven.
Een praktische gateway biedt neutrale niveaus 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 premiumcapaciteit tot een opzettelijke uitzondering in plaats van het standaardpad.