Function calling (LLM) (IT)

From Systems analysis Wiki
Jump to navigation Jump to search

Function Calling (Chiamata di Funzioni) — è un meccanismo nei grandi modelli linguistici (LLM) che consente al modello di interagire con strumenti esterni e API, generando dati strutturati (solitamente JSON) per invocare funzioni al posto di una risposta testuale diretta[1].

In altre parole, il modello, sulla base della richiesta dell'utente, determina quale funzione del set proposto debba essere invocata e con quali parametri. Questo meccanismo amplia l'ambito di applicazione degli LLM, consentendo loro di fungere da interfaccia tra il linguaggio naturale e le azioni concrete. Ciò apre possibilità di integrazione dell'IA con sistemi esterni: il modello può richiedere dati aggiornati, eseguire operazioni o utilizzare servizi, il che è particolarmente prezioso nella creazione di assistenti intelligenti e agenti autonomi. L'utilizzo di strumenti esterni riduce inoltre il rischio di allucinazioni (fatti inventati) grazie al ricorso a fonti attendibili[2].

Storia e approcci all'implementazione

Approcci iniziali (prompting e Toolformer)

L'idea di insegnare ai modelli linguistici a invocare strumenti si è formata nel periodo 2022–2023. I primi approcci si basavano su tecniche di prompting complesso. Nel 2022, ad esempio, fu proposto lo schema ReAct, in cui il modello alternava, nel corso del dialogo, ragionamento e azione (chiamate agli strumenti), codificati in un unico testo.

Un passo fondamentale fu la comparsa del modello Toolformer, presentato dai ricercatori di Meta all'inizio del 2023. Toolformer dimostrò che gli LLM potevano essere specificamente messi a punto per invocare autonomamente strumenti esterni (calcolatrice, motore di ricerca, calendario) tramite suggerimenti testuali, inserendo nel testo generato speciali token di chiamata API[3].

Supporto ufficiale e sviluppo

Una tappa fondamentale fu segnata da OpenAI, che nel giugno 2023 introdusse ufficialmente il supporto al Function Calling nelle proprie API per i modelli GPT-3.5 e GPT-4[4]. Le nuove versioni dei modelli furono messe a punto per riconoscere le situazioni in cui la richiesta dell'utente implica il ricorso a una funzione esterna e per generare un oggetto JSON precisamente strutturato con gli argomenti. OpenAI definì questa funzionalità «un nuovo modo per connettere in modo affidabile GPT con strumenti e API esterni».

Iniziative open source

Sulla scia delle implementazioni commerciali comparvero modelli open source messi a punto per la generazione di chiamate di funzioni corrette.

  • Gorilla: Progetto dell'UC Berkeley, versione messa a punto di LLaMA, in grado di formulare chiamate a migliaia di API diverse. Per la valutazione di tali modelli fu creato il benchmark Berkeley Function-Calling Leaderboard[5].
  • ToolAlpaca, ToolLLaMA, Hermes: Serie di modelli open source messi a punto su esempi sintetici di chiamate di funzioni, spesso generati da modelli più potenti.

Meccanismo di funzionamento

Il processo di utilizzo del Function Calling comprende generalmente diversi passaggi:

  1. Definizione delle funzioni. Lo sviluppatore definisce in anticipo un insieme di funzioni disponibili per il modello (ad esempio, API esterne) e ne descrive le firme e lo scopo, solitamente in formato JSON Schema.
  2. Analisi della richiesta. Durante il dialogo, il modello analizza l'intenzione dell'utente e decide autonomamente se, per rispondere, sia necessario invocare una delle funzioni definite.
  3. Generazione della chiamata. Se è richiesta un'azione, l'LLM genera, al posto del testo normale, un output strutturato speciale (ad esempio, JSON con il nome della funzione e gli argomenti). Se invece la chiamata non è necessaria, il modello restituisce una risposta testuale ordinaria.
  4. Esecuzione della funzione. Il programma esterno (la shell del chatbot o un agente) riceve il JSON, esegue la chiamata effettiva alla funzione indicata con i parametri proposti e trasmette il risultato al modello.
  5. Formulazione della risposta finale. Il modello utilizza i dati ricevuti per generare la risposta definitiva all'utente[4].

Per gestire questo processo a più fasi durante il training dei modelli vengono utilizzati formati di dialogo speciali, ad esempio il markup ChatML di OpenAI, in cui, oltre ai ruoli di «utente» e «assistente», viene introdotto il ruolo di «funzione» per trasmettere i risultati delle chiamate.

Applicazioni e vantaggi

La possibilità di invocare funzioni amplia notevolmente la gamma di compiti risolvibili con gli LLM.

  • Integrazione con API esterne. Il modello può rispondere a richieste che richiedono informazioni aggiornate, invocando servizi esterni (ad esempio, per ottenere meteo, tassi di cambio, notizie).
  • Automazione delle azioni dell'utente. Un LLM può eseguire attività di routine: inviare email, creare eventi nel calendario, effettuare ordini negli shop online.
  • Accesso a database e analisi. Le richieste in linguaggio naturale possono essere tradotte in chiamate ad API interne o query SQL per l'estrazione e l'analisi dei dati.
  • Estrazione di informazioni strutturate. L'LLM può autonomamente estrarre fatti da un testo lungo (ad esempio, nomi, date, indirizzi) e restituirli sotto forma di array JSON strutturato, comodo per la successiva elaborazione programmatica.

Problemi di sicurezza

Ampliando le capacità dei modelli, il Function Calling introduce al contempo nuovi rischi.

  • Output non verificati. L'interazione del modello con strumenti esterni deve essere attentamente protetta. Se il modello riceve dall'API un valore dannoso o errato, potrebbe includerlo nella risposta o invocare un'altra funzione basandosi su di esso, con conseguenze imprevedibili.
  • Attacchi tramite argomenti di funzione. I ricercatori hanno scoperto vulnerabilità specifiche della modalità Function Calling. Nel 2025 è stato dimostrato un attacco denominato «Il lato oscuro del Function Calling». La sua essenza consiste nel proporre al modello una «funzione» speciale, all'interno degli argomenti della quale è nascosta un'istruzione proibita (jailbreak payload). Il modello, seguendo il principio della chiamata di funzione, genera argomenti contenenti contenuto che viola le regole, eludendo in tal modo i filtri di moderazione. I test hanno mostrato il successo dell'attacco in oltre il 90% dei casi su sei modelli moderni, tra cui GPT-4 e Claude[2].

Per prevenire tali incidenti si raccomanda di fornire al modello solo strumenti affidabili, implementare la conferma dell'utente prima dell'esecuzione di azioni critiche e utilizzare prompt «difensivi» specifici e una rigorosa verifica degli argomenti per la presenza di contenuti pericolosi.

Riferimenti

  • Annuncio ufficiale del Function Calling da parte di OpenAI
  • Pagina del progetto 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.

Bibliografia

  • 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.

Note

  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]