Funksjonskalling i OpenAI-API-et: Hva det faktisk gjør og hvordan du bruker det riktig

CometAPI
Zoom JohnApr 20, 2026
Funksjonskalling i OpenAI-API-et: Hva det faktisk gjør og hvordan du bruker det riktig

Du sender en brukers melding til GPT API, og i stedet for et svar i naturlig språk får du tilbake et strukturert JSON-objekt som forteller deg nøyaktig hvilken funksjon som skal kalles og med hvilke argumenter. Det er funksjonskalling — og det endrer hvilken type applikasjoner du kan bygge med LLM-er.

Funksjonskalling

De fleste utviklere hører «funksjonskalling» og antar at modellen kjører kode på deres vegne. Det gjør den ikke.

Når du bruker funksjonskalling, kjører ikke selve LLM-en funksjonen. I stedet identifiserer den riktig funksjon, samler alle nødvendige parametere og leverer informasjonen i et strukturert JSON-format.

Applikasjonen din er fortsatt ansvarlig for å kjøre den faktiske logikken. Modellen forteller bare hva som skal kjøres og med hvilke input.

Det skillet betyr mer enn det høres ut som, og påvirker alt fra hvordan du designer integrasjonen til hvordan du tenker på sikkerhet.

Hva funksjonskalling faktisk er — og hva folk stadig misforstår

Funksjonskalling (også kjent som verktøykalling) gir en kraftig og fleksibel måte for OpenAI-modeller å koble seg på eksterne systemer og få tilgang til data utenfor treningsdataene.

Navngivingen er den første kilden til forvirring. Folk tror modellen faktisk kjører noe. Det gjør den ikke.

Det finnes mange navn og forklaringer på funksjonskalling, men alt koker ned til én setning: «Funksjonskalling er en type strukturert output-evne i en stor språkmodell.» LLM-er kaller ingen funksjoner selv; de foreslår hvilken funksjon du bør kalle fra forhåndsdefinerte funksjoner som du gir til LLM-en i en prompt.

Den andre forvirringen gjelder den gamle API-overflaten.

Parameterne functions og function_call er utfaset med utgivelsen av API-versjonen 2023-12-01-preview. Erstatningen for functions er parameteren tools.

Hvis du følger en veiledning som bruker den gamle functions-parameteren, jobber du allerede med utdatert syntaks. Bruk tools og tool_choice i stedet.

En funksjon er en spesifikk type verktøy, definert av et JSON-skjema. En funksjonsdefinisjon lar modellen sende data til applikasjonen din, der koden din kan få tilgang til data eller utføre handlinger som modellen foreslår.

Det er skjemaet som gir funksjonskalling sin pålitelighetsfordel over ren prompting — du håper ikke at modellen formaterer output riktig; du håndhever struktur på API-nivå.

Hvordan funksjonskalling fungerer i OpenAI API — steg for steg

Verktøykalling er en flerstegs-samtale mellom applikasjonen din og en modell via OpenAI API. Flyten for verktøykalling har fem overordnede steg: send en forespørsel til modellen med verktøy den kan kalle...

Slik ser hvert av disse stegene ut i praksis.

Steg 1: Definer funksjonsskjemaene dine. Du beskriver hver tilgjengelige funksjon som et JSON-objekt i tools-parameteren. Skjemaet inkluderer funksjonsnavnet, en beskrivelse i naturlig språk som modellen bruker for å avgjøre når den skal kalle den, og en parameters-blokk som følger JSON Schema-konvensjoner.

Jo mer detaljert description er — når det gjelder situasjoner der funksjonen kan og bør kalles — desto bedre. Merk at funksjonsbeskrivelser er en del av prompten og derfor også bruker tokens.

Steg 2: Send forespørselen. Du kaller Chat Completions API med brukerens melding og tools-listen din. Modellen ser begge deler.

Steg 3: Modellen bestemmer om den skal kalle en funksjon.

En funksjonskall-respons er en spesiell type svar du kan få fra modellen hvis den undersøker en prompt og avgjør at den, for å følge instruksjonene, må kalle ett av de tilgjengelige verktøyene. Hvis modellen mottar en prompt som «hva er været i Paris?», kan den svare med et verktøykall for get_weather-verktøyet, med Paris som argument for location.

Steg 4: Koden din kjører funksjonen. Du parser modellens respons, henter ut funksjonsnavn og argumenter og kjører selve koden i ditt runtime-miljø. API-et returnerte strukturert JSON — du bestemmer hva du gjør med det.

Steg 5: Send resultatet tilbake.

Deretter sender du hele verktøydefinisjonen, den opprinnelige prompten, modellens verktøykall og output fra verktøykallet tilbake til modellen for til slutt å få en tekstrespons

— noe sånt som «Været i Paris i dag er 25°C.»

Flytskjema for funksjonskalling

En detalj de fleste veiledninger hopper over:

når du setter strict: true i funksjonsdefinisjonen, garanterer Structured Outputs at argumentene modellen genererer for et funksjonskall samsvarer nøyaktig med JSON-skjemaet du oppga.

Å sette strict til true sørger for at funksjonskall pålitelig følger funksjonsskjemaet, i stedet for å være best effort. OpenAI anbefaler alltid å aktivere strict-modus.

Alltid. Det finnes ingen god grunn til å la være.

Det finnes også parallell funksjonskalling å være klar over.

Avhengig av brukerforespørselen vil modellen benytte parallell funksjonskalling hvis du bruker de nyeste modellene utgitt 6. november 2023 eller senere.

Dette betyr at én enkelt forespørsel som «hvordan er været i London og Tokyo?» kan utløse to samtidige verktøykall i stedet for å kjede dem sekvensielt.

Virkelige bruksområder for funksjonskalling

Vær-eksempelet er overalt fordi det er ryddig. Virkelige produksjonstilfeller er mer rotete og mer interessante.

Kundestøtte-pipelines med sanntidsdata

Funksjonskalling er nyttig for en rekke bruksområder — for eksempel en AI-assistent som må hente de siste kundedataene fra et internt system når en bruker spør «hva er mine siste bestillinger?» før den kan generere et svar.

Modellen finner ut intensjon, trekker ut kundens ID fra konteksten og kaller CRM-et ditt via en intern API. Ingen skjør regex. Ingen promptmaler som er så sprø at de knekker på et manglende komma.

Strukturert datauttrekk i skala

En datauttrekks-pipeline som henter råtekst, konverterer den til strukturert data og lagrer den i en database, er et annet godt bruksområde. Du får konsistente skjemaer på tvers av tusenvis av dokumenter uten å finstemme parserlogikk per dokumenttype.

Naturlig språk til API-oversettelse

LLM-drevne løsninger for å ekstrahere og tagge data, applikasjoner som kan hjelpe med å konvertere naturlig språk til API-kall eller gyldige databaseforespørsler, og konversasjonelle kunnskapsinnhentingsmotorer som interagerer med en kunnskapsbase — alle disse drar nytte av funksjonskallingens garanti om output-format. Når du trenger at output driver nedstrøms systemer, kan du ikke tolerere variabilitet.

Agent-baserte arbeidsflyter med flere verktøy

For utviklere muliggjør funksjonskalling sanntidstilgang til data for å overvinne treningskutt ved å hente live aksjekurser, vær eller nylige databaseoppføringer. Den muliggjør også handling — forvandler LLM-en fra en passiv observatør til en aktiv deltaker som endrer tilstand, som å sende e-poster, oppdatere CRM-er eller deploye kode.

Det avgjørende skillet fra en vanlig chatbot: Modellen genererer ikke bare tekst, den orkestrerer faktiske operasjoner i systemene dine.

Beste praksis for funksjonskalling — hva utviklere vanligvis gjør feil

Dette er delen de fleste veiledninger hopper helt over, og derfor ender team opp med å feilsøke rare produksjonsfeil kl. 02:00.

Skriver beskrivelser som er for vage. Modellen bruker funksjonsbeskrivelsen din for å avgjøre når den skal kalle den. Hvis beskrivelsen er generisk — noe som «behandler brukerforespørsler» — har ikke modellen noen pålitelig signal for når den skal trigge den. Vær spesifikk om utløsende betingelse og forventet input-form. Tenk på beskrivelsen som en kontrakt, ikke en etikett.

Eksponerer for mange funksjoner samtidig

Funksjonsbeskrivelser kan bruke et betydelig antall tokens i input-prompten.

Å laste definisjoner for 50+ verktøy inn i systemprompten skaper to problemer: kostnad og ventetid, siden verktøydefinisjoner bruker input-tokens; og nøyaktighetsforringelse, siden modellens evne til å velge riktig verktøy reduseres når antallet alternativer øker.

Start med det minste settet av funksjoner use caset ditt faktisk trenger.

Antar at modellen ikke vil hallusinere parametere. Det vil den.

Modellen kan hallusinere parametere

— særlig for valgfrie felt som ikke er tydelig avgrenset av en enum. Det er nettopp derfor strict: true betyr noe: det fjerner modellens mulighet til å finne opp felt utenfor skjemaet ditt.

Håndterer ikke flerstegs-loopen. Utviklere bygger ofte «happy path» — bruker spør, modell kaller funksjon, ferdig.

Modellene kan generere funksjonskall som ikke samsvarer med skjemaet du definerte eller forsøke å kalle en funksjon du ikke inkluderte. Hvis modellen genererer uventede funksjonskall, prøv å ta med en setning i systemmeldingen som sier «Only use the functions you have been provided with.»

Bygg for kanttilfellene.

Hopper over bekreftelsestrinnet før skriveoperasjoner.

Vær oppmerksom på reell påvirkning av funksjonskall du planlegger å kjøre, spesielt de som utløser handlinger som å kjøre kode, oppdatere databaser eller sende varsler. For funksjoner som utfører handlinger, anbefales det sterkt å implementere et steg der brukeren bekrefter handlingen før den utføres.

Hvis et funksjonskall kan slette data, sende penger eller endre ekstern tilstand, bør et menneske godkjenne det først.

Sikkerhet og pålitelighet

Funksjonskalling utvider hva en LLM kan gjøre. Det utvider også hva en angriper kan få den til å gjøre.

Den primære trusselen her er prompt-injeksjon.

Målene for prompt-injeksjoner varierer, men kan inkludere eksfiltrering av private data via nedstrøms verktøykall, feiljusterte handlinger eller ellers å endre modellatferd på en utilsiktet måte.

Når verktøykallene dine kan sende e-poster, spørre databaser eller trigge webhooks, er ikke et injeksjonsangrep bare en chatbot som går utenfor manus — det er et potensielt brudd.

Etter hvert som AI-systemer beveger seg utover chat og begynner å kalle verktøy og ta handlinger, blir prompt-injeksjon et langt mer alvorlig problem. En ondsinnet instruksjon skjult i en nettside, et dokument eller et eksternt verktøy kan forsøke å overstyre systematferd, eksponere sensitiv informasjon eller trigge handlinger modellen aldri burde ta.

Avbøtende strategi har noen konkrete lag.

Design arbeidsflyter slik at ubetrodde data aldri direkte styrer agentatferd. Ekstraher bare spesifikke strukturerte felt — som enums eller validert JSON — fra eksterne input for å begrense injeksjonsrisiko mellom noder.

I tillegg

må du alltid verifisere funksjonskallene som genereres av modellen. Dette inkluderer å sjekke parametrene, funksjonen som kalles og sikre at kallet samsvarer med den tiltenkte handlingen.

En ubehagelig sannhet:

«Prompt-injeksjon, omtrent som svindel og sosial manipulering på nettet, vil sannsynligvis aldri bli fullstendig ‘løst’.»

Det er OpenAIs egen vurdering. Den praktiske implikasjonen er at du ikke bør designe agentiske funksjonskall-systemer med antakelsen om at modellen alltid vil oppføre seg slik du ønsker. Dybdeforsvar — validering, avgrensede tillatelser, menneske i loopen for destruktive operasjoner — er den eneste fornuftige holdningen.

Funksjonskalling vs. prompt engineering — når skal du bruke hva

Denne sammenligningen dukker opp hele tiden. Det korte svaret: de løser ulike problemer, og å blande dem fører til over-ingeniørerte prompt-er der funksjonskalling ville holdt, eller skjøre funksjonsskjemaer der en godt utformet systemprompt ville vært enklere.

Funksjonskalling vs. Prompt Engineering

Prompt engineering innebærer å utforme tekstinput for å styre LLM-ens interne resonnering — for eksempel å be den «tenke steg-for-steg».

Det former hvordan modellen resonnerer. Funksjonskalling, derimot, former hva modellen produserer som output og ruter det direkte inn i systemet ditt.

Verktøykalling er evnen som lar LLM-en interagere med eksterne systemer. Mens du bruker prompt engineering for å hjelpe modellen å velge hvilket verktøy som skal brukes, er verktøykalling mekanismen som faktisk utfører handlingen. Du trenger sannsynligvis begge, men de tjener ulike formål.

En viktig teknisk fordel ved funksjonskalling over prompt-basert strukturert output:

verktøykalling er et konsept bakt inn i modellen. Det er ikke nødvendig å sløse tokens og energi på å forklare modellen at den skal returnere et spesifikt format.

Når du skriver en prompt som sier «returner svaret ditt som JSON med feltene X, Y og Z», bruker du tokens på instruksjoner modellen kan følge inkonsistent. Med funksjonskalling håndheves skjemaet på API-nivå.

Funksjonskall-API-er, nå støttet i mange LLM-plattformer, gir et formelt skjema-drevet grensesnitt som muliggjør streng datavalidering og integrasjon med programmatisk arbeidsflyt.

Det er den virkelige grunnen til å velge det fremfor prompt engineering for data som må flyte inn i nedstrøms systemer: pålitelighet er ikke valgfritt i produksjon.

DimensjonPrompt engineeringFunksjonskalling
Primær hensiktForme modellens resonnering og toneProdusere strukturert output for systemintegrasjon
Output-formatFri tekst (eller tekstformet JSON)Håndhevet JSON-skjema
SkjemapålitelighetBest effort; utsatt for driftGarantert med strict: true
Token-kostnadLavere for enkle outputHøyere (funksjonsdefinisjoner legger til tokens)
Når brukeResonneringsoppgaver, tekstgenerering, stilkontrollStrukturert datauttrekk, API-orkestrering, agentiske handlinger
Prompt-injeksjonseksponeringLavere (ingen eksterne verktøy kjøres)Høyere (funksjonskall kan trigge handlinger i den virkelige verden)

Den praktiske tommelfingerregelen: Hvis output må drive et nedstrøms system — en databasewrite, et API-kall, en beslutningsgren i koden din — bruk funksjonskalling. Hvis output er for et menneske å lese, er prompt engineering som regel tilstrekkelig og billigere.

Viktige poenger

EmneHva du bør huske
Hva det erModellen outputter strukturert JSON som beskriver hvilken funksjon som skal kalles — den kjører ikke funksjonen
Gjeldende API-overflateBruk tools og tool_choice; de gamle functions- og function_call-parameterne er utfaset
Strict-modusSett alltid strict: true i funksjonsdefinisjoner for å håndheve skjemaetterlevelse
Parallell kallStøttet på modeller utgitt etter november 2023; én forespørsel kan trigge flere verktøykall
Token-kostnadFunksjonsskjemaer bruker input-tokens; minimer antallet eksponerte funksjoner
SikkerhetValider alle output fra funksjonskall; la aldri ubetrodd eksternt innhold direkte styre verktøykall
vs. Prompt EngineeringFunksjonskalling håndhever output-struktur på API-nivå; prompt engineering former intern resonnering
BekreftelsestrinnAlle funksjoner med effekter i den virkelige verden (write, send, delete) bør kreve brukerbekreftelse før kjøring

Hvis du vil eksperimentere med funksjonskalling på tvers av ulike modeller — GPT-5.4, claude opus 4.7, gemini 3.1 pro — uten å vedlikeholde separate API-legitimasjoner for hver, gir CometAPI deg tilgang til alle gjennom ett endepunkt og én nøkkel, noe som gjør testing på tvers av modeller betydelig mindre friksjonsfylt.

CometAPI løser infrastruktur-overheaden:

Enhetlig syntaks for funksjonskalling på tvers av 15+ modeller

Én enkelt API-nøkkel — ingen separate kontoer for OpenAI/Anthropic/Google

Automatisk skjemaoversettelse — skriv én gang, test overalt

Innebygd kostnadssporing — sammenlign token-bruk per modell i sanntid

Start testingen med gratis kreditterFå tilgang

Klar til å redusere AI-utviklingskostnadene med 20 %?

Kom i gang gratis på minutter. Gratis prøvekreditter inkludert. Ingen kredittkort nødvendig.

Les mer