Tool use en function calling: hoe een LLM de wereld in gaat
Er is een moment waarop een LLM stopt met tekst genereren en iets daadwerkelijk doet. Dat moment heet tool use.
Het verschil: een model dat je uitlegt hoe je de koers van een aandeel opzoekt, versus een model dat de koers zelf opzoekt en je het antwoord geeft.
Wat tool use is
Tool use, ook wel function calling, is een mechanisme waarmee een LLM externe functies kan aanroepen als onderdeel van een antwoord.
Hoe het werkt: je geeft het model een beschrijving van beschikbare tools. "Er is een tool get_stock_price die een ticker als input neemt en de huidige koers teruggeeft." Als het model concludeert dat het die tool nodig heeft, genereert het geen tekst maar een tool-aanroep in gestructureerd formaat. Jouw code voert die aanroep uit, geeft het resultaat terug, en het model genereert het uiteindelijke antwoord op basis van dat resultaat.
Het model beslist zelf wanneer een tool nodig is. Dat is het punt.
Het verschil met prompten
Zonder tool use vertrouw je op wat het model uit zijn trainingsdata haalt. Met tool use geef je het model echte capaciteit om de wereld in te gaan.
Het is ook transparanter dan RAG voor acties. Bij RAG injecteer je context passief. Bij tool use kiest het model actief welke functie het aanroept en met welke parameters. Jij ziet die keuze.
Hoe het er in de praktijk uitziet
Stel je vraagt: "Wat is de huidige temperatuur in Rotterdam?"
Zonder tool use geeft het model een schatting op basis van trainingsdata, of zegt eerlijk dat het dat niet weet.
Met tool use roept het model get_weather(city="Rotterdam") aan, krijgt "18°C, bewolkt" terug, en antwoordt: "Het is momenteel 18 graden en bewolkt in Rotterdam."
De gebruiker ziet hetzelfde soort antwoord. Wat er onder de motorkap is veranderd: het klopt nu.
Wat je kunt verbinden
In theorie alles wat je als functie kunt omschrijven: databases queryen, APIs aanroepen, bestanden lezen of schrijven, code uitvoeren, externe services aansturen.
MCP is een gestandaardiseerd protocol voor tool use. In plaats van dat elke applicatie zijn eigen tool-beschrijvingen uitvindt, levert een MCP-server een standaardinterface die compatibele modellen kunnen gebruiken.
De relatie met agents
Tool use is de bouwsteen van agents. Een agent roept herhaaldelijk tools aan, observeert de resultaten, en neemt op basis daarvan nieuwe beslissingen, totdat het doel bereikt is.
Zonder tool use is een agent een model dat nadenkt. Met tool use kan het ook handelen.
Claude Code doet dit de hele dag. Als ik zeg "controleer of er nieuwe GitHub-issues zijn voor dit project", roept het model tools aan om de repository te lezen, filtert de issues, en geeft me een samenvatting. Ik heb geen enkel commando uitgetypt.
Wat je in de gaten houdt
Tool use introduceert risico's die bij pure tekstgeneratie niet spelen.
Het model beslist welke tools het aanroept en met welke parameters. Als die beslissing fout is, voert je code iets uit dat je niet bedoeld had. Bij een leestool is dat vervelend. Bij een schrijftool is het een probleem — en het probleem heeft dan al plaatsgevonden voordat je het zag.
Goede implementaties vragen bevestiging voor destructieve acties, loggen welke tools zijn aangeroepen, en begrenzen wat tools mogen doen. Niet elke implementatie doet dat standaard.
Claude Code vraagt toestemming voor acties buiten zijn standaard-permissies. Dat is geen omslachtige feature. Dat is het systeem dat correct werkt.