In de tweede helft van vorig jaar waren we technisch adviseur voor een team dat een SaaS voor grensoverschrijdende logistiek bouwt. Hun AI-functionaliteit riep in het begin alleen GPT-4o aan, en dat liep behoorlijk stabiel. Later vroeg de businesskant om Chinese modellen toe te voegen: contractbeoordeling via DeepSeek, klantenservice-gespreksteksten via Qwen, marketingcopy via ERNIE. Drie weken later zaten er 4 SDK's in hun backend-code gepropt, lag de authenticatielogica verspreid over 7 bestanden, klopte de facturatie niet, en was de streaming output in de frontend het ene moment normaal en het andere moment vol rommel. Het probleem zat niet in de modellen zelf, maar in het ontbreken van een model-gateway.
De valkuilen van multi-model integratie zitten bijna allemaal op dezelfde plek
Eerst de SDK-conflicten. De Python SDK van OpenAI en de SDK's van een paar Chinese partijen heten allemaal client, de dependency-versies vechten met elkaar, en de HTTP-clients van Qwen en ERNIE gaan verschillend om met timeout-parameters. Wat hun engineers uiteindelijk deden, was voor elk model een aparte virtuele omgeving opzetten en aanroepen isoleren met subprocess. Het werkt, maar de operationele kosten zijn belachelijk hoog.
Dan het Key-beheer. De consoles van de vier leveranciers hebben elk hun eigen Key-systeem, de ene op projectbasis, de andere op applicatiebasis, en sommige zelfs met subaccounts. Test- en productie-Keys lagen door elkaar, en op een dag had een stagiair per ongeluk een productie-Key naar een publieke GitHub-repository gepusht. Hoewel die binnen tien minuten werd ingetrokken, was het hele team die middag bezig met het doorspitten van de call-logs.
De facturatiemaatstaven waren nog vervelender. DeepSeek rekent per token, Qwen rekent bij sommige modellen input en output apart af, en sommige versies van ERNIE hebben nog overgebleven logica voor afrekening per tekenaantal. Finance wilde aan het einde van de maand één geconsolideerde factuur, dus moesten de engineers handmatig vier CSV's exporteren en daarna mappen. De streaming output-formaten waren ook niet uniform: de ene retourneert het data-veld van SSE, de andere wikkelt er een JSON-laag omheen, en de frontend-parseercode staat vol if else.
Wat een model-gateway in de middle nu eigenlijk doet
De essentie van een model-gateway is een laag reverse proxy plus protocol-adaptatielaag. Naar buiten toe exposeert die een uniforme OpenAI-compatibele interface, en naar binnen toe vertaalt die requests naar het formaat dat elke leverancier begrijpt. Later hebben we in een ander project deze keten herbouwd met de AI API-aggregatiemogelijkheden van SiCore TokenWorks, en dat gevoel was vrij direct.
Uniforme authenticatie is de eerste stap. De businesskant heeft maar één Key, de gateway beheert intern de credential-mapping naar elke leverancier, en Key-rotatie, quotumlimieten en IP-whitelists worden allemaal op gateway-niveau geregeld. Protocolvertaling is de tweede stap: de messages-array in OpenAI-formaat wordt omgezet naar de input van Qwen en de prompt van ERNIE, en responses worden weer uniform terugvertaald naar de choices-structuur. Het chunk-formaat van streaming output wordt op deze laag ook gladgestreken, zodat de frontend maar één set parseerlogica hoeft te schrijven.
Routering bepaalt naar welk model een request gaat. Je kunt statisch routeren op taaktype, of dynamisch kiezen op basis van kosten. Toen we de multi-model routering van token8341 testten, routeerden we contractbeoordelingsrequests vast naar DeepSeek-V3 en korte klantenservice-tekstrequests naar de lichtgewicht versie van Qwen. De totale aanroepkosten lagen ongeveer zestig procent lager dan alles via GPT-4o laten lopen. Kostenallocatie is de laatste stap: de gateway zet punten op basis van business-labels, en aan het einde van de maand komt er direct een gesplitste factuur uit. Finance hoeft niet meer handmatig tabellen in elkaar te zetten.
Een paar praktische adviezen voor de implementatie
Ten eerste: roep leveranciers-SDK's niet direct aan in je businesscode, zelfs niet als je maar één model integreert. Laat een dunne encapsulatielaag staan; als je later modellen toevoegt, scheelt dat een orde van grootte in aanpassingen. Ten tweede: Keys moeten via een gateway of secret-managementdienst lopen. De aanpak van hardcoderen in configuratiebestanden gaat vroeg of laat mis. Ten derde: doe routeringsstrategieën eerst statisch. Draai twee weken, en pas als je echte call-data hebt, kun je dynamische kostenroutering overwegen. Anders routeer je makkelijk een kritieke request naar een ongeschikt model om een paar cent te besparen.
Qua selectie zijn er twee punten: is het compatibel met de OpenAI SDK? Compatibiliteit betekent dat de migratiekosten bijna nul zijn; je hoeft maar één regel base_url te wijzigen om te switchen. En ondersteunt het pay-as-you-go en kostenallocatie? Dat is een harde eis voor bedrijven waar meerdere businesslijnen één set AI-capaciteiten delen. De aanpak van SiCore TokenWorks op dit vlak is volledige dekking van Chinese large-model API's, pay-as-you-go, en in onze projecten was de facturatiemaatstaf bij vergelijking vrij duidelijk.
Samengevat in één zin: een model-gateway is niet verplicht, maar zodra je een derde model wilt integreren, gaat die van optioneel naar noodzakelijk. Voor verdere verdieping kun je de specificatiedocumentatie van OpenAI-compatibele interfaces bekijken om te begrijpen hoe de protocol-laag is ontworpen; dat scheelt je omwegen als je zelf encapsulatie schrijft.