Tot eind 2025 draaiden we alles wat met chat te maken had rechtstreeks via OpenAI. Eén account, één sleutel, één factuur. In januari 2026 migreerden we naar een multi-model aggregator. Dit is wat er daadwerkelijk gebeurde.
Wat we hadden
- OpenAI enterprise tier — $~$8k/maand over alle toepassingen
- Alle chat-completions op
gpt-4oofgpt-4o-mini - Eén embedding-model, één imagemodel (DALL-E 3)
- Directe SDK-integratie in vier services
Wat de overstap triggerde
- Claude Opus 4.6 scoorde merkbaar beter op onze agent-based coding-evaluaties
- Gemini 3 Pro werd de duidelijke winnaar voor documentanalyse met lange context
- We wilden open-source modellen testen (DeepSeek, Llama 4) zonder zelf inference-infrastructuur op te zetten
- Werken met vijf providers betekende vijf contracten, vijf factureringscycli, vijf rate-limit dashboards
De migratie
We stapten over naar een OpenAI-compatibele aggregator (deze, om precies te zijn — we gebruiken ons eigen product in productie). De hele wijziging bestond uit het vervangen van baseURL en apiKey in de SDK. Codeverschil was 8 regels over de vier services.
// Voorheen
const openai = new OpenAI({ apiKey: process.env.OPENAI_KEY });
// Daarna
const openai = new OpenAI({
apiKey: process.env.AIGEN_KEY,
baseURL: 'https://aimarcus.eu/aigenerate/api/v1',
});
Wat veranderde in de kosten
- Chat (GPT-4o → gemengd GPT-4o + Claude Sonnet op basis van taak): -22%
- Agent-based coding (overgestapt naar Claude Opus): +8%, maar evaluaties verbeterden met 15 punten
- Analyse met lange context (overgestapt naar Gemini 3 Pro): -40%
- Afbeeldingsgeneratie (overgestapt van DALL-E 3 naar Nano Banana): -65%
Netto-effect op maandelijkse kosten: -28%. Betere modelkeuze per toepassing + lagere per-token tarieven van upstream aggregators die we niet zelf hoeven te onderhandelen.
Drie dingen die misgingen
- Verschillen in streaming SSE-formaat. Claude streamt iets anders dan OpenAI. Onze client-side bufferlogica werkte 10 minuten niet totdat we een compatibiliteitslaag toevoegden.
- Token-telling. Verschillende modellen tokenizen anders. Onze interne metriek "tokens gebruikt per conversatie" moest per model opnieuw worden gekalibreerd.
- Caching gebaseerd op modelnaam. Onze promptcache gebruikte
gpt-4oals sleutel. Toen we sommige verzoeken naar Claude begonnen te routeren, kregen we verouderde cache-hits. Les: altijd modelnaam in cache-sleutels opnemen.
Zouden we het opnieuw doen?
Ja — om drie redenen die niets met kosten te maken hebben.
- Optioneelheid. Toen OpenAI op 3 april een storing van 40 minuten had, bleef onze chattoepassing werken omdat het verkeer automatisch werd overgezet naar Anthropic en Gemini. Dat alleen al is de migratie waard.
- Modelpariteit is voorbij. Er is in 2026 niet één "beste model". Er is een beste model voor elke taak. Aggregatie is hoe je dat feit daadwerkelijk benut.
- Eén factuur. Finance wilde dit meer dan engineering. Eén factuur, één leveranciersrelatie, één contract voor 12 providers.
Als je een aanzienlijk volume draait bij één provider, betaalt de overstap zichzelf terug in de eerste maand.