Indtil slutningen af 2025 kørte vi alt chat-relateret direkte gennem OpenAI. Én konto, én nøgle, én regning. I januar 2026 migrerede vi til en multi-model aggregator. Her er hvad der faktisk skete.
Hvad vi havde
- OpenAI enterprise niveau — $~$8k/måned på tværs af alle flader
- Alle chat-fuldførelser på
gpt-4oellergpt-4o-mini - Én embedding model, én billedmodel (DALL-E 3)
- Direkte SDK-integration i fire tjenester
Hvad der udløste flytningen
- Claude Opus 4.6 scorede mærkbart bedre på vores agentiske kodningsevalueringer
- Gemini 3 Pro blev den klare vinder for lang-kontekst dokumentanalyse
- Vi ønskede at teste open-source modeller (DeepSeek, Llama 4) uden at oprette inferensinfrastruktur
- At køre fem udbydere betød fem kontrakter, fem faktureringscyklusser, fem rate limit dashboards
Migreringen
Vi skiftede til en OpenAI-kompatibel aggregator (denne her, faktisk — vi bruger vores eget produkt i produktion). Hele ændringen bestod i at erstatte baseURL og apiKey i SDK'en. Kodediff var 8 linjer på tværs af de fire tjenester.
// Før
const openai = new OpenAI({ apiKey: process.env.OPENAI_KEY });
// Efter
const openai = new OpenAI({
apiKey: process.env.AIGEN_KEY,
baseURL: 'https://aimarcus.eu/aigenerate/api/v1',
});
Hvad ændrede sig på regningen
- Chat (GPT-4o → blandet GPT-4o + Claude Sonnet baseret på opgave): -22%
- Agentisk kodning (flyttet til Claude Opus): +8%, men evalueringer forbedret med 15 point
- Lang-kontekst analyse (flyttet til Gemini 3 Pro): -40%
- Billedgenerering (flyttet fra DALL-E 3 til Nano Banana): -65%
Nettovirkning på månedlig regning: -28%. Bedre modelvalg på hver flade + lavere per-token satser fra upstream aggregators, som vi ikke behøver at forhandle direkte med.
Tre ting der gik galt
- Streaming SSE formatforskelle. Claude streamer lidt anderledes end OpenAI. Vores klient-side bufferlogik brød i cirka 10 minutter, indtil vi tilføjede en kompatibilitetsshim.
- Tokenoptælling. Forskellige modeller tokeniserer forskelligt. Vores interne "tokens brugt per samtale"-metrik skulle re-kalibreres per model.
- Caching baseret på modelnavn. Vores prompt-cache brugte
gpt-4osom nøgle. Da vi begyndte at dirigere nogle forespørgsler til Claude, fik vi forældede cache-hits. Lektie: altid inkluder model i cache-nøgler.
Ville vi gøre det igen?
Ja — af tre grunde, der ikke er relateret til omkostninger.
- Valgfrihed. Da OpenAI havde et 40-minutters nedbrud den 3. april, fortsatte vores chatflade med at køre, fordi trafikken automatisk blev omdirigeret til Anthropic og Gemini. Det alene er værd at migrere for.
- Modelparitet er forbi. Der er ikke "den bedste model" i 2026. Der er en bedste model for hver opgave. Aggregering er måden, du faktisk bruger den kendsgerning på.
- Én regning. Finans ønskede dette mere end ingeniørerne gjorde. Én faktura, én leverandørrelation, én kontrakt for 12 udbydere.
Hvis du kører nogen meningsfuld volumen på en enkelt udbyder, betaler skiftet sig selv den første måned.