Je AI-rekening is in één nacht verdrievoudigd. Het model, het verkeersvolume en zelfs de tekst van de prompts bleven hetzelfde; de schuldige was een enkele regel code die de prompt cache van OpenAI verbrak.
Waarom de cache belangrijk is
De prompt cache van de provider bespaart je geld door het opnieuw verwerken van elke aanvraag die begint met een byte-voor-byte identieke prefix over te slaan. Als de eerste tokens overeenkomen met een eerdere aanroep, hergebruikt de provider de reeds berekende representatie van die tokens en brengt alleen kosten in rekening voor de nieuwe suffix. De regel is strikt: de match moet exact zijn, niet slechts vergelijkbaar. Eén afwijkende token aan het begin vernietigt de volledige cache hit.
De fout die de hit rate vernietigde
In onze agent plaatsten we een actuele tijdstempel helemaal bovenaan de system prompt om het model een gevoel van "nu" te geven. Omdat de tijdstempel elke seconde verandert, was de eerste token-sequentie uniek voor elke aanvraag. De cache vond nooit een match, waardoor elke aanroep de volledige prijs betaalde voor de 18.000 statische tokens die volgden — tool-schema's, documentatiefragmenten, few-shot voorbeelden en vaste instructies. Het resultaat was een cache hit rate van 0% en een rekening die verdrievoudigd was.
Herordenen voor cachebaarheid
De oplossing is eenvoudig: houd alles wat nooit verandert vooraan in de prompt en verplaats alle vluchtige data naar de achterkant.
Statische prefix (cachebaar)
- Tool-definities
- Retrieval-documenten
- Few-shot voorbeelden
- Vaste systeeminstructies
Vluchtige suffix (niet-cachebaar)
- Huidige tijd
- Sessie-identificatoren
- Gebruikersberichten
- Live context
Als het model de tijd nodig heeft, voeg deze dan toe na het statische blok in plaats van ervoor. De cache kan dan het zware statische gedeelte hergebruiken, terwijl je aan het einde nog steeds verse context aanlevert.
Verborgen killers in de stack
Zelfs als de template er correct uitziet, kunnen middleware of SDK's stilletjes metadata toevoegen — request-ID's, tijdstempels of andere headers — voordat de payload de API bereikt. Sommige deployment pipelines husselen ook tool-definities bij elke rollout. Deze onzichtbare wijzigingen veranderen de byte-sequentie en saboteren de cache, zonder dat er een code-wijziging nodig is in je eigen prompt builder.
Houd de cache hit rate in de gaten
Beschouw de cache hit rate als een primaire gezondheidsmetriek voor elke AI-agent. Een plotselinge daling signaleert dat iets in de eerste bytes van de aanvraag variabel is geworden. Monitoringtools die het hit-percentage tonen, laten je kostenanomalieën opsporen voordat ze exploderen.
Conclusie
Prompt caching hangt af van een onveranderlijke prefix. Alles wat verandert — zelfs een enkele tijdstempel — aan het begin van elke aanvraag, maakt de cache ongeldig en kan je rekening verdrievoudigen. Houd statische inhoud eerst, vluchtige inhoud als laatste, controleer je toolchain op verborgen prependers en houd de cache hit rates in de gaten. Een gedisciplineerde prompt-indeling beschermt zowel de prestaties als de winstgevendheid.
