Fram till slutet av 2025 körde vi allt chattrelaterat direkt genom OpenAI. Ett konto, en nyckel, en faktura. I januari 2026 migrerade vi till en multi-modell aggregator. Här är vad som faktiskt hände.

Vad vi hade

  • OpenAI företagsnivå — $~$8k/månad över alla ytor
  • Alla chattkompletteringar på gpt-4o eller gpt-4o-mini
  • En inbäddningsmodell, en bildmodell (DALL-E 3)
  • Direkt SDK-integration i fyra tjänster

Vad som utlöste flytten

  • Claude Opus 4.6 presterade märkbart bättre på våra agentiska kodningsevalueringar
  • Gemini 3 Pro blev den klara vinnaren för långkontext dokumentanalys
  • Vi ville testa open-source modeller (DeepSeek, Llama 4) utan att sätta upp inferensinfrastruktur
  • Att köra fem leverantörer innebar fem kontrakt, fem faktureringscykler, fem hastighetsbegränsningsinstrumentpaneler

Migreringen

Vi bytte till en OpenAI-kompatibel aggregator (den här faktiskt — vi använder vår egen produkt i produktion). Hela förändringen var att ersätta baseURL och apiKey i SDK:n. Kodändringen var 8 rader över de fyra tjänsterna.

// Före
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',
});

Vad som ändrades i fakturan

  • Chatt (GPT-4o → blandad GPT-4o + Claude Sonnet beroende på uppgift): -22%
  • Agentisk kodning (flyttad till Claude Opus): +8%, men evalueringar förbättrades med 15 poäng
  • Långkontextanalys (flyttad till Gemini 3 Pro): -40%
  • Bildgenerering (flyttad från DALL-E 3 till Nano Banana): -65%

Nettopåverkan på månatlig faktura: -28%. Bättre modellval på varje yta + lägre per-token priser från uppströmsaggregatorer som vi inte behöver förhandla direkt med.

Tre saker som gick fel

  • Skillnader i streaming SSE-format. Claude strömmar något annorlunda än OpenAI. Vår klient-sidans buffertlogik bröt för cirka 10 minuter tills vi lade till en kompatibilitetslösning.
  • Tokenräkning. Olika modeller tokeniserar olika. Vår interna "använda tokens per konversation"-metrik behövde kalibreras om per modell.
  • Caching baserad på modellnamn. Vår promptcache använde gpt-4o som nyckel. När vi började dirigera vissa förfrågningar till Claude fick vi gamla cacheträffar. Lärdom: inkludera alltid modell i cache-nycklar.

Skulle vi göra det igen?

Ja — av tre anledningar som inte är relaterade till kostnad.

  • Valfrihet. När OpenAI hade ett 40-minuters avbrott den 3 april fortsatte vår chatt-yta att fungera eftersom trafiken automatiskt överfördes till Anthropic och Gemini. Det ensam är värt migreringen.
  • Modellparitet är över. Det finns ingen "bästa modellen" år 2026. Det finns en bästa modell för varje uppgift. Aggregering är hur du faktiskt använder den faktan.
  • En faktura. Ekonomiavdelningen ville detta mer än ingenjörsavdelningen. En faktura, en leverantörsrelation, ett kontrakt för 12 leverantörer.

Om du kör någon meningsfull volym på en enda leverantör, betalar sig bytet den första månaden.