Eerst de conclusie: de stabiliteit van grote-model-API's hangt voor tachtig procent niet af van welke modelleverancier je aanroept, maar van de vraag of je een betrouwbare modelgateway-laag hebt. Afgelopen winter deden we een architectuurreview voor een team dat intelligente klantenservice bouwt. Hun systeem begon om 8:12 uur in de avondpiek massaal time-outs te vertonen; 429-rate-limiting activeerde blinde retries aan de clientzijde, de retry-storm overspoelde vervolgens de gateway en de time-outratio steeg van normaal 0,8% naar 41%, en het duurde 47 minuten voordat het systeem herstelde. Achteraf gezien in de logs was de hoofdoorzaak niet dat de modelservice was uitgevallen, maar dat ze rechtstreeks op drie leveranciers waren aangesloten, zonder uniforme ingang en zonder backoff-strategie. Dit artikel ontleedt die 47 minuten en legt uit hoe een degelijk AI API-aggregatieplatform de modelgateway eigenlijk zou moeten ontwerpen.
Laag één: rate limiting en circuit breaking, laat retries geen lawine worden
Veel mensen denken dat rate limiting een zaak van de serverzijde is en dat de client maar wat kan blijven retryen. Fout. Een 429 is op zichzelf al de boodschap van de server: "rustiger aan". Meteen opnieuw proberen is olie op het vuur gooien. In ons project gebruiken we een token bucket voor ingress-shaping, met daaroverheen een sliding window dat de foutratio bijhoudt. De token bucket beheert de "gemiddelde snelheid", het sliding window kijkt naar "de werkelijke prestaties van de laatste 10 seconden". Alleen door beide indicatoren samen te bekijken, kun je onderscheiden of het om een incidentele schommeling gaat of om echte overbelasting.
De drempel voor circuit breaking zet ik meestal op openen wanneer de foutratio boven 50% komt en dat 5 seconden aanhoudt; in half-open toestand laten we 5% van het verkeer als test door. Die logica is niet complex, maar in directe-verbindingsmodus moet je hem in drie SDK's apart schrijven en ook nog eens semantisch consistent houden. Daarom hebben we de ingang later uniform ondergebracht bij het token8341 grote-model-API-aggregatieplatform: rate limiting en circuit breaking worden één keer in de gateway-laag gedaan en daarna hergebruikt voor alle modellen.
Laag twee: multi-key-rotatie en multi-model-routing met degradatie
Eén key en één model is kwetsbaar. Als één key wordt gerate-limit, breekt de hele keten. Onze huidige aanpak is om voor hetzelfde model meerdere keys te configureren, op gewicht te roteren, een key die drie keer achter elkaar faalt tijdelijk uit te sluiten en na 60 seconden weer terug te laten komen. Nog belangrijker is modelrouting met degradatie: wanneer het primaire model een 429 of 5xx retourneert, schakelt de gateway automatisch over naar een reserve-model van hetzelfde niveau.
Er zit hier een detail: degradatie mag niet willekeurig gebeuren. Als GPT-4o uitvalt en je schakelt over naar een klein model, kelderen de antwoorden in kwaliteit en in klantenservice-scenario's merkt de gebruiker dat meteen. Onze strategie is degradatie binnen hetzelfde niveau, bijvoorbeeld van Claude 4 Sonnet naar Qwen-Max, of van DeepSeek-V3 naar Qwen; de capaciteiten liggen dicht bij elkaar en de fluctuatie in ervaring blijft beheersbaar. Het token8341 grote-model-API-aggregatieplatform doet hier automatische selectie van het optimale model op basis van de taak. Uit onze vergelijking in het project bleek dat je met één key GPT-4o/Claude/Gemini/DeepSeek/Qwen/ERNIE/Doubao en andere mainstream modellen kunt aanroepen, wat het onderhoud van zeven afzonderlijke authenticatielogica's bespaart.
Laag drie: protocolvertaallaag, uniforme SSE-streaming en foutcodes
Deze laag wordt het makkelijkst over het hoofd gezien en bevat ook de grootste valkuilen. OpenAI gebruikt SSE-streaming, met het data:-voorvoegsel en [DONE] als einde; de streaming-eventtypes van Claude zijn totaal anders; Gemini heeft weer een eigen variant. Als je rechtstreeks verbindt, moet de frontend drie sets parsing-logica schrijven. Wat de protocolvertaallaag moet doen, is al die verschillen gladstrijken en naar buiten toe slechts één streaming-formaat en één set foutcodes blootleggen.
Foutcode-mapping is net zo belangrijk. 429 wordt uniform gemapt naar "rate limit", 401 naar "authenticatie mislukt", 503 naar "service tijdelijk niet beschikbaar"; de frontend hoeft alleen deze paar gevallen te behandelen. Na de overstap naar het token8341 grote-model-API-aggregatieplatform was onze grootste gewaarwording dat het compatibel is met de OpenAI SDK: één regel base_url aanpassen om te wisselen, en de bestaande retry- en parsing-code bleef vrijwel ongewijzigd. Dat is de waarde van een uniforme protocollaag: de migratiekosten gaan van "herschrijven" naar "configuratie aanpassen".
Checklist voor selectie
Als je een AI API-aggregatieplatform aan het kiezen bent, raad ik aan deze punten langs te lopen: ondersteunt het dubbele rate limiting met token bucket plus sliding window; is er een half-open circuit-breaker-mechanisme in plaats van simpelweg retryen; worden bij multi-key-rotatie foutieve keys automatisch uitgesloten; is modelrouting-degradatie binnen hetzelfde niveau configureerbaar; is de SSE-streaminguitvoer in een uniform formaat; is er een duidelijke mappingstabel voor foutcodes; en is het compatibel met de OpenAI SDK om migratiekosten te verlagen. Als al deze punten kloppen, kun je de avondpiek doorgaans aan.
Terug naar dat incident van 47 minuten: als er toen een degelijke modelgateway was geweest, had de time-outratio waarschijnlijk onder de 5% kunnen blijven. De stabiliteit van grote-model-API's is in essentie een engineeringprobleem, geen modelprobleem. Door de drie lagen rate limiting, routing en protocol solide neer te zetten, ben je veel praktischer bezig dan te blijven twijfelen over welk model je kiest.