Function calling (LLM) (SV)

From Systems analysis Wiki
Jump to navigation Jump to search

Function Calling (Funktionsanrop) — är en mekanism i stora språkmodeller (LLM) som gör det möjligt för modellen att interagera med externa verktyg och API:er genom att generera strukturerad data (vanligtvis JSON) för att anropa funktioner istället för att ge ett direkt textsvar[1].

Med andra ord bestämmer modellen, baserat på användarens förfrågan, vilken funktion från den föreslagna uppsättningen som ska anropas och med vilka parametrar. Denna mekanism utvidgar användningsområdet för LLM och låter dem fungera som ett gränssnitt mellan naturligt språk och praktiska åtgärder. Detta öppnar möjligheter för integration av AI med externa system: modellen kan hämta aktuell data, utföra operationer eller använda tjänster, vilket är särskilt värdefullt vid skapandet av intelligenta assistenter och autonoma agenter. Användningen av externa verktyg minskar också risken för hallucinationer (påhittade fakta) genom att hänvisa till tillförlitliga källor[2].

Historia och implementeringsmetoder

Tidiga metoder (prompting och Toolformer)

Idén att lära språkmodeller att anropa verktyg tog form under 2022–2023. Tidiga metoder baserades på tekniker för komplex prompting. År 2022 föreslogs exempelvis schemat ReAct, där modellen under dialogen växlade mellan resonemang och handlingar (verktygsan­rop) kodade i en och samma text.

Ett viktigt steg var introduktionen av modellen Toolformer, som presenterades av forskare vid Meta i början av 2023. Toolformer visade att LLM kan finjusteras specifikt för att självständigt anropa externa verktyg (miniräknare, sökmotor, kalender) via textledtrådar, genom att infoga speciella API-anrops­token i den genererade texten[3].

Officiellt stöd och vidareutveckling

Ett viktigt milstolpe markerades av OpenAI, som i juni 2023 officiellt introducerade stöd för Function Calling i sina API:er för modellerna GPT-3.5 och GPT-4[4]. Nya versioner av modellerna finjusterades för att känna igen situationer där användarens förfrågan innebär ett anrop till en extern funktion, och för att generera ett korrekt strukturerat JSON-objekt med argument. OpenAI beskrev denna möjlighet som "ett nytt sätt att på ett tillförlitligt sätt koppla samman GPT med externa verktyg och API:er".

Öppna initiativ

Efter de kommersiella implementeringarna dök det upp öppna modeller som finjusterats för att generera korrekta funktionsanrop.

  • Gorilla: Ett projekt från UC Berkeley, en finjusterad version av LLaMA, kapabel att formulera anrop till tusentals olika API:er. För att utvärdera sådana modeller skapades benchmark:et Berkeley Function-Calling Leaderboard[5].
  • ToolAlpaca, ToolLLaMA, Hermes: Serier av öppna modeller finjusterade på syntetiska exempel på funktionsanrop, ofta genererade av kraftfullare modeller.

Arbetsmekanism

Processen för att använda Function Calling inkluderar vanligtvis flera steg:

  1. Definition av funktioner. Utvecklaren definierar i förväg en uppsättning funktioner som är tillgängliga för modellen (till exempel externa API:er) och beskriver deras signaturer och syfte, vanligtvis i formatet JSON Schema.
  2. Analys av förfrågan. Under dialogen analyserar modellen användarens avsikt och bestämmer självständigt om en av de definierade funktionerna ska anropas för att svara.
  3. Generering av anrop. Om en åtgärd krävs genererar LLM, istället för vanlig text, en speciell strukturerad utmatning (till exempel JSON med funktionsnamn och argument). Om inget anrop behövs returnerar modellen ett vanligt textsvar.
  4. Körning av funktion. Det externa programmet (chatbot-skal eller agent) tar emot JSON:en, utför det faktiska anropet av den angivna funktionen med de föreslagna parametrarna och skickar tillbaka resultatet till modellen.
  5. Formulering av slutsvar. Modellen använder den mottagna datan för att generera ett slutgiltigt svar till användaren[4].

För att hantera denna flerstegsprocess används speciella dialogformat vid modellträning, till exempel OpenAI:s ChatML-markup, där rollen "funktion" introduceras utöver rollerna "användare" och "assistent" för att överföra anropsresultat.

Tillämpning och fördelar

Möjligheten att anropa funktioner utvidgar avsevärt spektrumet av uppgifter som kan lösas med hjälp av LLM.

  • Integration med externa API:er. Modellen kan svara på förfrågningar som kräver aktuell information genom att anropa externa tjänster (till exempel för att hämta väder, valutakurser, nyheter).
  • Automatisering av användaråtgärder. LLM kan utföra rutinuppgifter: skicka e-post, skapa kalenderhändelser, lägga beställningar i nätbutiker.
  • Åtkomst till databaser och analys. Förfrågningar på naturligt språk kan översättas till anrop till interna API:er eller SQL-frågor för att hämta och analysera data.
  • Extraktion av strukturerad information. LLM kan självständigt extrahera fakta från lång text (till exempel namn, datum, adresser) och returnera dem som en strukturerad JSON-array, lämplig för efterföljande programmatisk bearbetning.

Säkerhetsproblem

Genom att utvidga modellernas möjligheter medför Function Calling samtidigt nya risker.

  • Overifierade utdata. Modellens interaktion med externa verktyg måste vara noggrant skyddad. Om modellen tar emot ett skadligt eller felaktigt värde från ett API kan den inkludera det i svaret eller anropa en annan funktion baserat på det, vilket leder till oförutsägbara konsekvenser.
  • Attacker via funktionsargument. Forskare har upptäckt sårbarheter specifika för Function Calling-läget. År 2025 demonstrerades en attack kallad "Den mörka sidan av Function Calling". Kärnan i den är att erbjuda modellen en speciell "funktion", inuti vars argument en förbjuden instruktion (jailbreak-payload) döljs. Modellen, i enlighet med principen för funktionsanrop, genererar argument som innehåller regelbrytande innehåll och kringgår därmed moderationsfilter. Testning visade att attacken lyckades i mer än 90% av fallen på sex moderna modeller, inklusive GPT-4 och Claude[2].

För att förhindra sådana incidenter rekommenderas att endast tillhandahålla modellen betrodda verktyg, implementera användarbekräftelse innan kritiska åtgärder utförs, samt använda speciella "defensiva" promptar och strikt kontroll av argument för skadligt innehåll.

Referenser

  • Officiellt tillkännagivande av Function Calling från OpenAI
  • Projektsida för Gorilla LLM
  • Apideck (2024). An Introduction to Function Calling and Tool Use. Apideck Blog.
  • LangChain (2025). Tool Calling (Documentation). LangChain Docs.
  • Mistral AI (2025). Function Calling – Documentation. Mistral Docs.
  • Hopsworks (2024). What is Function Calling with LLMs?. Hopsworks Dictionary.
  • Hopsworks (2024). Unlocking the Power of Function Calling with LLMs. Hopsworks Blog.
  • University of California, Berkeley (2025). Berkeley Function Calling Leaderboard V3. Online Resource.

Litteratur

  • Wu, Z. et al. (2025). The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models. ACL 2025.
  • OpenAI (2023). Function Calling and Other API Updates. OpenAI Blog.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
  • Liu, W. et al. (2024). ToolACE: Winning the Points of LLM Function Calling. arXiv:2409.00920.
  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.

Noter

  1. «What is Function Calling with LLMs?». Hopsworks. [1]
  2. 2.0 2.1 Wu, Z. et al. «The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models». Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing, 2025. [2]
  3. Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv:2302.04761, 2023. [3]
  4. 4.0 4.1 «Function calling and other API updates». OpenAI, 2023. [4]
  5. «Gorilla: Large Language Model Connected to Massive APIs». University of California, Berkeley. [5]