{"licence":{"name":"CC BY-SA 4.0","spdx":"CC-BY-SA-4.0","url":"https://creativecommons.org/licenses/by-sa/4.0/","attribution":"Atlas, a bilingual technical dictionary (https://cmaintz.github.io/tech-atlas/)"},"id":"ai/tool-calling","url":{"en":"https://cmaintz.github.io/tech-atlas/en/terms/ai/tool-calling/","da":"https://cmaintz.github.io/tech-atlas/da/terms/ai/tool-calling/"},"term":{"en":"Tool calling","da":"Værktøjskald (tool calling)"},"aka":{"en":["function calling","tool use"],"da":["function calling","værktøjsbrug"]},"domain":["ai"],"cluster":"agents","layer":"agent","status":"current","era":2023,"summary":{"en":"How a language model asks outside code to do something for it - look something up, run a task - and then reads back the result.","da":"Måden, en sprogmodel beder et program uden for sig selv om at gøre noget - slå noget op, udføre en opgave - og så læser svaret."},"body":{"formal":{"en":"A way of working in which the model is given a list of named tools with a description of what each one takes in; instead of plain text it may answer with a structured request naming a tool and its inputs, which the surrounding program runs before sending the result back to the model.","da":"En arbejdsform, hvor modellen får en liste over navngivne værktøjer med en beskrivelse af, hvad hvert af dem tager imod; i stedet for almindelig tekst kan den svare med en struktureret anmodning, der nævner et værktøj og dets input, som programmet rundt om den udfører, før resultatet sendes tilbage til modellen."},"plain":{"en":"Like a boss who cannot leave the office but can fill in order slips - each slip names a helper and says exactly what to fetch, and someone else walks it down the hall.","da":"Som en chef, der ikke kan forlade kontoret, men kan udfylde bestillingssedler - hver seddel nævner en hjælper og siger præcis, hvad der skal hentes, og en anden bærer den ned ad gangen."},"inPractice":{"en":"A case officer at a municipality's front desk for citizens asks the chat assistant when waste is collected at an address; the model replies with a request to the collection calendar tool, address filled in, and the app runs it and hands back the dates for the answer.","da":"En sagsbehandler i en kommunes borgerservice spørger chatassistenten, hvornår der hentes affald på en adresse; modellen svarer med en anmodning til affaldskalenderens værktøj med adressen udfyldt, og appen kører den og sender datoerne tilbage til svaret."},"whyItMatters":{"en":"It is what lets a model act in the world instead of only talking, so every tool it can call is also something a trick or a mistake can set off.","da":"Det er det, der lader en model handle i verden i stedet for kun at tale, så hvert værktøj, den kan kalde, er også noget, et trick eller en fejl kan sætte i gang."}},"deepDive":{"en":"Research prototypes came first: ReAct (Yao et al., 2022) interleaved reasoning traces with actions, and Toolformer (Schick et al., 2023) taught a model in a self-supervised way where to insert API calls. Commercial APIs standardised the pattern when OpenAI shipped function calling in June 2023, followed by Anthropic, Google and open-weight model families. Under the hood the tool list, typically names, descriptions and JSON Schema parameter definitions, is rendered into the prompt through the model's chat template, and fine-tuning teaches the model to emit a call in a reserved format instead of prose when a tool would help.\n\nThe wire protocol is a two-step exchange. In Anthropic's Messages API the assistant turn contains a tool_use block with an id, the tool name and an input object, and the response's stop_reason is tool_use; the application executes the call and sends a user turn with a tool_result block referencing that id, optionally flagged is_error. OpenAI's equivalent returns tool_calls whose arguments arrive as a JSON-encoded string, answered by a message with role tool and a matching tool_call_id. Both support several calls in one turn (parallel tool calls) and a tool_choice setting that lets the developer allow, force or forbid tool use. The loop continues until the model answers without calling a tool, which is exactly the control loop of an AI agent.\n\nReliability depends on the schema and the decoder. Without constraints a model can produce malformed JSON, invent parameters or pick the wrong tool; OpenAI's strict mode (August 2024) and similar grammar-constrained decoding guarantee schema-conformant arguments, though not correct ones. Every tool definition costs context tokens on every request, and accuracy in choosing tools degrades as the catalogue grows into the dozens, which is why larger systems load tools on demand or route first. Errors should be returned to the model as results rather than thrown, so it can repair its call; tool-use accuracy is benchmarked by suites such as the Berkeley Function Calling Leaderboard.\n\nThe security model is easy to get wrong. The model never executes anything; the application does, so the application is the enforcement point. Arguments are untrusted input to be validated and authorised against the end user's permissions rather than the service account's, and side-effecting tools need idempotency and, for high-impact actions, human confirmation. Tool results are untrusted too: text returned from a web fetch or an email tool is the main vector for indirect prompt injection. OWASP's Top 10 for LLM Applications 2025 covers the resulting risks as LLM06 Excessive Agency and LLM05 Improper Output Handling. Structured output is the non-executing sibling; the Model Context Protocol standardises how tools are described and served across applications.","da":"Forskningsprototyper kom først: ReAct (Yao et al., 2022) flettede ræsonnement og handlinger sammen, og Toolformer (Schick et al., 2023) lærte selvsuperviseret en model, hvor den skulle indsætte API-kald. Kommercielle API'er standardiserede mønsteret, da OpenAI lancerede function calling i juni 2023, fulgt af Anthropic, Google og familier af modeller med åbne vægte. Under motorhjelmen gengives værktøjslisten, typisk navne, beskrivelser og parameterdefinitioner i JSON Schema, i prompten via modellens chatskabelon, og finjustering lærer modellen at udsende et kald i et reserveret format i stedet for prosa, når et værktøj vil hjælpe.\n\nProtokollen er en udveksling i to trin. I Anthropics Messages API indeholder assistentens tur en tool_use-blok med et id, værktøjets navn og et input-objekt, og svarets stop_reason er tool_use; applikationen udfører kaldet og sender en brugertur med en tool_result-blok, der henviser til samme id og eventuelt er markeret med is_error. OpenAI's modstykke returnerer tool_calls, hvis argumenter kommer som en JSON-kodet streng, og besvares med en besked med rollen tool og et tilsvarende tool_call_id. Begge understøtter flere kald i samme tur (parallelle værktøjskald) og en tool_choice-indstilling, hvor udvikleren kan tillade, gennemtvinge eller forbyde værktøjsbrug. Løkken fortsætter, indtil modellen svarer uden at kalde et værktøj, og det er præcis kontrolløkken i en AI-agent.\n\nPålideligheden afhænger af skemaet og dekoderen. Uden begrænsninger kan en model lave ugyldig JSON, opfinde parametre eller vælge det forkerte værktøj; OpenAI's strict mode (august 2024) og tilsvarende grammatikbegrænset dekodning garanterer argumenter, der overholder skemaet, men ikke korrekte argumenter. Hver værktøjsdefinition koster kontekst-tokens i hver forespørgsel, og træfsikkerheden i valget af værktøj falder, når kataloget vokser til flere dusin, og derfor indlæser større systemer værktøjer efter behov eller router først. Fejl bør returneres til modellen som resultater i stedet for at blive kastet som undtagelser, så den kan rette sit kald; træfsikkerhed ved værktøjsbrug måles af testsuiter som Berkeley Function Calling Leaderboard.\n\nSikkerhedsmodellen er let at tage fejl af. Modellen udfører aldrig noget selv; det gør applikationen, så applikationen er håndhævelsespunktet. Argumenter er upålideligt input, der skal valideres og autoriseres mod slutbrugerens rettigheder frem for servicekontoens, og værktøjer med sideeffekter kræver idempotens og, ved handlinger med stor betydning, menneskelig bekræftelse. Værktøjsresultater er også upålidelige: tekst fra et webopslag eller et e-mailværktøj er den primære vej for indirekte prompt injection. OWASP Top 10 for LLM Applications 2025 dækker de deraf følgende risici som LLM06 Excessive Agency og LLM05 Improper Output Handling. Structured output er den ikke-udførende søskende; Model Context Protocol standardiserer, hvordan værktøjer beskrives og udbydes på tværs af applikationer."},"edges":[{"type":"requires","to":"ai/structured-output","why":{"en":"The model must produce its tool request in a fixed, machine-readable shape, or the program cannot run it.","da":"Modellen skal lave sin værktøjsanmodning i en fast, maskinlæsbar form, ellers kan programmet ikke udføre den."},"confidence":"high","strength":"primary"},{"type":"requires","to":"cs/api","confidence":"high","strength":"normal"},{"type":"part-of","to":"ai/ai-agent","why":{"en":"An AI agent is, at its heart, a loop of tool calls - pick a tool, read the result, decide the next step.","da":"En AI-agent er i bund og grund en løkke af værktøjskald - vælg et værktøj, læs resultatet, beslut næste trin."},"confidence":"high","strength":"primary"}],"depth":5,"sources":[{"title":"OpenAI API documentation - Function calling","tier":"official-doc","publisher":"OpenAI"},{"title":"Anthropic documentation - Tool use with Claude","tier":"official-doc","publisher":"Anthropic"},{"title":"Schick et al. (2023), Toolformer: Language Models Can Teach Themselves to Use Tools","tier":"reference"}],"draft":true}