Fram til slutten av 2025 kjørte vi alt chat-relatert direkte gjennom OpenAI. Én konto, én nøkkel, én regning. I januar 2026 migrerte vi til en multi-modell aggregator. Her er hva som faktisk skjedde.

Hva vi hadde

  • OpenAI enterprise-nivå — $~$8k/måned på tvers av alle flater
  • Alle chat-fullføringer på gpt-4o eller gpt-4o-mini
  • Én embedding-modell, én bildemodell (DALL-E 3)
  • Direkte SDK-integrasjon i fire tjenester

Hva som utløste flyttingen

  • Claude Opus 4.6 scoret merkbart bedre på våre agentiske kodeevalueringer
  • Gemini 3 Pro ble den klare vinneren for lang-kontekst dokumentanalyse
  • Vi ønsket å teste open-source modeller (DeepSeek, Llama 4) uten å sette opp inferensinfrastruktur
  • Å kjøre fem leverandører betydde fem kontrakter, fem faktureringssykluser, fem rate limit dashboards

Migrasjonen

Vi byttet til en OpenAI-kompatibel aggregator (denne, faktisk — vi bruker vårt eget produkt i produksjon). Hele endringen var å erstatte baseURL og apiKey i SDK-en. Kodediff var 8 linjer på tvers av de fire tjenestene.

// Før
const openai = new OpenAI({ apiKey: process.env.OPENAI_KEY });

// Etter
const openai = new OpenAI({
  apiKey: process.env.AIGEN_KEY,
  baseURL: 'https://aimarcus.eu/aigenerate/api/v1',
});

Hva som endret seg i regningen

  • Chat (GPT-4o → blandet GPT-4o + Claude Sonnet basert på oppgave): -22%
  • Agentisk koding (flyttet til Claude Opus): +8%, men evalueringene forbedret seg med 15 poeng
  • Lang-kontekst analyse (flyttet til Gemini 3 Pro): -40%
  • Bildegenerering (flyttet fra DALL-E 3 til Nano Banana): -65%

Nettoeffekt på månedlig regning: -28%. Bedre modellvalg på hver flate + lavere per-token priser fra oppstrøms aggregatører som vi ikke trenger å forhandle direkte med.

Tre ting som gikk galt

  • Streaming SSE formatforskjeller. Claude streamer litt annerledes enn OpenAI. Vår klient-side bufferlogikk brøt i omtrent 10 minutter til vi la til en kompatibilitets-shim.
  • Token-telling. Ulike modeller tokeniserer forskjellig. Vår interne "tokens brukt per samtale"-metrik trengte å bli kalibrert på nytt per modell.
  • Caching basert på modellnavn. Vår prompt-cache brukte gpt-4o som nøkkel. Når vi begynte å rute noen forespørsler til Claude, fikk vi utdaterte cache-treff. Leksjon: alltid inkluder modell i cache-nøkler.

Ville vi gjort det igjen?

Ja — av tre grunner som ikke er relatert til kostnad.

  • Valgfrihet. Da OpenAI hadde et 40-minutters strømbrudd 3. april, fortsatte vår chatflate å kjøre fordi trafikken automatisk ble omdirigert til Anthropic og Gemini. Det alene er verdt migrasjonen.
  • Modellparitet er over. Det finnes ikke "den beste modellen" i 2026. Det er en beste modell for hver oppgave. Aggregasjon er hvordan du faktisk bruker det faktumet.
  • Én regning. Finans ønsket dette mer enn ingeniøravdelingen gjorde. Én faktura, én leverandørrelasjon, én kontrakt for 12 leverandører.

Hvis du kjører noe meningsfylt volum på en enkelt leverandør, betaler byttet seg selv den første måneden.