Bij adaptive thinking bepaalt een AI-model zelf, per vraag, of het nadenkt voordat het antwoordt en hoe lang. Een klant die naar je openingstijden vraagt, krijgt snel antwoord; een vraag over een ingewikkelde terugbetaling krijgt eerst meer denkwerk. Dat telt voor kosten en snelheid: je betaalt voor het denkwerk van het model alsof het geschreven tekst is, en de klant wacht zolang het model nadenkt.
Waar komt de term vandaan?
Anthropic introduceerde adaptive thinking in februari 2026 met Claude Opus 4.6. Tot dan toe konden ontwikkelaars het uitgebreide denken (extended thinking) van het model alleen aan- of uitzetten. Staat het aan, dan schrijft het model eerst zijn redenering uit in een apart denkblok, binnen een vast budget aan tokens, en geeft het daarna antwoord (zie redeneren in AI). Met adaptive thinking kan Claude volgens Anthropic zelf bepalen wanneer dieper nadenken helpt.
De Gemini-API van Google beschrijft hetzelfde idee als dynamic thinking: het model stemt de hoeveelheid denkwerk af op hoe complex het verzoek is.
Hoe werkt het?
In de Claude-API zet je, zoals de documentatie van april 2026 het beschrijft, thinking: {"type": "adaptive"}. Claude beoordeelt dan per verzoek hoe complex het is en beslist of en hoeveel het nadenkt. De effort-parameter (output_config.effort) werkt als zachte sturing:
low: Claude houdt het denken minimaal en slaat het over bij eenvoudige taken.medium: gematigd denkwerk, dat bij heel eenvoudige vragen kan wegvallen.high, de standaard: Claude denkt bijna altijd na.xhigh: diep denkwerk met uitgebreid verkennen, toegevoegd met Claude Opus 4.7 op 16 april 2026.max: denken zonder grens aan de diepte.
In adaptive mode kan Claude ook tussen toolaanroepen door nadenken, wat past bij AI-agents die elk resultaat bekijken voor hun volgende stap. Bij de lancering van Opus 4.7 was adaptive de enige denkmodus van dat model: een verzoek met een vast budget (budget_tokens) werd geweigerd. Op Opus 4.6 en Sonnet 4.6 werkte het vaste budget nog, maar Anthropic markeerde het als verouderd (deprecated). In Claude Code verhoogde Anthropic bij de komst van Opus 4.7 de standaard-effort naar xhigh voor alle abonnementen.
In de opdrachtregeltool llm van Simon Willison heten de instellingen thinking_adaptive en thinking_effort; de plug-in llm-anthropic 0.25 van 16 april 2026 voegde Opus 4.7 toe met thinking_effort: xhigh en een nieuwe optie thinking_adaptive.
Wat zijn de afwegingen?
Meer denkwerk helpt bij moeilijke problemen en kost tijd bij makkelijke. In de aankondiging van Opus 4.6 schrijft Anthropic dat het diepere redeneren betere resultaten geeft op moeilijke problemen en bij eenvoudige vragen kosten en wachttijd kan toevoegen. Het advies voor een model dat te veel nadenkt: verlaag de effort van high naar medium.
Adaptive thinking maakt kosten en wachttijd ook minder voorspelbaar. Voor toepassingen die een voorspelbare wachttijd of precieze controle over denkkosten nodig hebben, meldde de documentatie van april 2026 dat het vaste budget op Opus 4.6 en Sonnet 4.6 nog werkte, al heette het verouderd. Anthropic stelt zelf dat adaptive thinking op veel taken beter presteert dan een vast budget, vooral bij een mix van heel makkelijke en heel moeilijke verzoeken, en bij lange agenttaken.
Het model kan vaker of minder vaak nadenken dan je wilt. Volgens de documentatie kun je met de prompt sturen wanneer het nadenkt: een regel in de systeemprompt kan Claude vragen alleen na te denken als dat het antwoord duidelijk beter maakt, of juist eerst goed na te denken.
Voorbeeld
Stel: een webshop draait zijn klantenchat op Claude met adaptive thinking op medium. "Hoe laat gaan jullie zaterdag dicht?" kan een antwoord krijgen zonder enig denkwerk. "Ik betaalde met een cadeaukaart en een kortingscode, en nu wil ik een van de twee artikelen terugsturen" is het soort vraag waarbij het model waarschijnlijk eerst het retourbeleid doorneemt. Eén configuratie dekt beide:
1 response = client.messages.create( 2 model="claude-opus-4-7", 3 max_tokens=16000, 4 thinking={"type": "adaptive"}, 5 output_config={"effort": "medium"}, 6 messages=[{"role": "user", "content": question}], 7 )
