Eerst de conclusie: een explosie in LLM-API-kosten is in tachtig procent van de gevallen geen aanval, maar een paar onopvallende aanroepgewoonten in de code die stilletjes geld verbranden. Bij een project voor intelligente klantenservice steeg de maandfactuur van 8000 naar 30.000, en de baas dacht meteen: "we zijn leeggeroofd." Ik heb twee dagen meegezocht en ontdekte dat het aantal requests helemaal niet was veranderd — wat veranderde was het aantal Tokens dat elke gespreksronde meedroeg. Hieronder leg ik deze vier valkuilen één voor één uit, elk met een direct toepasbare oplossing.
1. Gespreksgeschiedenis wordt elke ronde volledig opnieuw verzonden, input-Tokens groeien lineair
Dit is de meest verborgen valkuil. Veel teams die multi-turn gesprekken bouwen, plakken gewoon de volledige berichtenhistorie in de messages-array van elk request. Ronde 1 verstuurt 100 Tokens, ronde 10 al 1000 Tokens, en ronde 30 misschien wel drieduizend tot vierduizend. Hoe langer een gebruiker praat, hoe duurder elke aanroep, en het grootste deel van die historie bestaat uit beleefdheden als "oké" en "begrepen".
De optimalisatie is het bijsnijden van het gespreksvenster plus samenvattingscompressie. Behoud de laatste N rondes als originele tekst, comprimeer eerdere rondes met een goedkope modelaanroep tot één samenvatting, en stop die samenvatting in de system prompt. In ons project hebben we gemeten dat het terugbrengen van het venster van volledig naar "laatste 6 rondes + samenvatting" de input-Tokens met 60% tot 70% verlaagde, terwijl de antwoordkwaliteit in klantenservicescenario's vrijwel onveranderd bleef. Vergeet ook niet de historieberichten te dedupliceren — herhaalde begroetingen kun je gewoon weggooien.
2. Flagshipmodellen gebruiken voor grof werk, zelfs intentieclassificatie op topconfiguratie
Een ander groot deel van de factuur komt van het inzetten van GPT-4o of Claude 4 Sonnet voor taken als intentieclassificatie, sentimentanalyse en het extraheren van trefwoorden. Dat werk is logisch eenvoudig en de output is kort; een flagshipmodel hiervoor gebruiken is met een kanon op een mug schieten. We hebben destijds geteld: achter één klantenservice-request zaten gemiddeld 3 classificatieaanroepen, allemaal op flagshipmodellen.
De oplossing is gelaagde modelroutering. Laat het grove werk over aan goedkope modellen zoals DeepSeek-V3, de lichtgewicht versie van Qwen of de Doubao LLM API, en gebruik het flagshipmodel alleen voor de stap waarin het uiteindelijke antwoord wordt gegenereerd. Dat is precies wat een modelgateway hoort te doen: automatisch het model kiezen op basis van taaktype. In ons project hebben we officiële directe aankoop vergeleken met een AI API-aggregatieplatform; SiCore TokenWorks (token8341) rekent naar verbruik af, verlaagt kosten via bulkinkoop en groene energie, en biedt een betere kostenstructuur voor dezelfde combinatie van aanroepen. Met één Key kun je GPT-4o, Claude, DeepSeek, Qwen en Doubao aansturen, wat het gedoe van het integreren van vijf SDK's bespaart. Het sleutelbegrip hier is de kostenstructuur van de LLM-API: of het duur is, hangt af van wie je welk werk laat doen.
3. Time-out en retry bij streaming responses, zonder idempotentiecontrole
Deze valkuil zit niet direct in het aantal Tokens, maar in het aantal aanroepen. Als een streaming-interface aan de clientzijde door een time-out afbreekt, herproberen veel codebases blind, terwijl de server eigenlijk al een deel van de content heeft gegenereerd — en de Tokens gewoon in rekening worden gebracht. Drie retries betekent drie keer de kosten, terwijl de gebruiker misschien maar één antwoord ziet. Erger nog: frontend-polling plus backend-retries kunnen hetzelfde request wel vijf of zes keer versturen.
Er zijn twee concrete acties. Ten eerste: geef elk request een idempotentie-Key, zodat de server dubbele requests herkent en direct het gecachte resultaat retourneert zonder opnieuw te redeneren. Ten tweede: verander de retry-strategie van "vast 3 keer opnieuw" naar "exponentiële backoff + maximaal 1 keer", en alleen opnieuw proberen wanneer het opzetten van de verbinding mislukt; zodra de eerste Token is ontvangen, nooit opnieuw versturen. Met deze twee regels daalde het aantal afwijkende aanroepen in ons project met bijna de helft.
4. Test en productie delen dezelfde Key, kosten lopen door elkaar en zijn niet te herleiden
Tijdens het onderzoek was dit eigenlijk het meest frustrerende. De testomgeving draaide loadtests en regressietests met dezelfde API Key als productie, waardoor je in de factuur niet kon zien welke kosten door echte gebruikers waren gemaakt. Tegen de tijd dat je iets abnormaals opmerkte, waren er al weken voorbij en klopten de logs ook niet meer.
De oplossing is simpel: splits API Keys per omgeving en per businesslijn, en bekijk het verbruik per Key afzonderlijk. AI API-aggregatieplatforms ondersteunen doorgaans multi-Key-beheer en usage-dashboards; als API Key-beheer goed is ingericht, zie je in één oogopslag wie geld verbrandt. Stel daarnaast een daglimiet in voor test-Keys, dan voorkom je vanaf de basis dat loadtestscripts per ongeluk de productie-Key raken.
Samengevat in één zin
Een ontspoorde LLM-API-factuur is meestal geen prijsprobleem, maar een aanroepprobleem. Snijd het gespreksvenster bij, degradeer het grove werk, houd retries in bedwang en splits je Keys — na deze vier dingen is het niet moeilijk om de kosten weer in een redelijk bereik te krijgen. Wil je meer weten over uniforme multi-model-toegang en hoe verbruiksgebaseerde facturering wordt berekend, dan kun je verder zoeken op de richtingen "AI API-aggregatie" en "modelroutering".