Function Calling LLM — Come i Modelli Linguistici Invocano Operazioni Esterne
Concetto chiave: Il function calling — noto anche come tool use o uso di strumenti — è la capacità di un modello linguistico di grandi dimensioni (LLM) di decidere che deve essere invocata un'operazione esterna nominata, strutturarne i parametri e restituire una chiamata strutturata anziché una risposta testuale. È il meccanismo lato LLM alla base dell'AI agentica. Il Model Context Protocol (MCP) è il livello di protocollo sopra di esso che governa quali funzioni sono disponibili, come vengono autenticate e come le chiamate vengono registrate.
Cos'è il Function Calling?
Il function calling — chiamato anche tool use o uso di strumenti — è una capacità dei modelli linguistici di grandi dimensioni (LLM) che consente al modello di produrre un output strutturato rappresentante una richiesta di invocare un'operazione esterna, anziché generare una risposta testuale. Quando un prompt di sistema o utente descrive gli strumenti disponibili e un obiettivo, il modello può decidere che l'obiettivo richiede la chiamata a uno di quegli strumenti, nominarlo, specificarne i parametri di input in formato strutturato (tipicamente JSON) e restituire quella chiamata strutturata al livello applicativo per l'esecuzione.
L'applicazione esecutrice riceve la chiamata strutturata, esegue l'operazione effettiva (una query al database, una richiesta API, una lettura file, un calcolo) e passa il risultato al modello. Il modello incorpora quindi quel risultato nel suo passaggio successivo — generando una risposta finale o decidendo di invocare un altro strumento. Questo ciclo percezione-ragionamento-azione è il meccanismo centrale dell'AI agentica.
Il function calling è ciò che distingue un'implementazione moderna di LLM da un endpoint di generazione testuale. Un modello con function calling abilitato non sta rispondendo a domande: sta agendo come motore di ragionamento in un sistema che può interagire con il mondo.
Perché è Importante
Senza il function calling, gli LLM sono limitati dalle informazioni nei loro dati di addestramento e dal testo nel loro contesto di input. Tutto ciò che sanno è memorizzato o incollato. Questo crea limiti difficili per le applicazioni aziendali: un LLM non può verificare un record CRM in tempo reale, non può aggiornare un database, non può inviare un'email, non può recuperare un documento creato dopo la sua data di addestramento.
Il function calling rimuove questi limiti. Un LLM che può chiamare strumenti è un LLM che può agire. Questo è il cambiamento architetturale che rende possibile l'automazione pratica: le applicazioni aziendali acquisiscono un motore di ragionamento che può orchestrare operazioni reali in sistemi reali, non solo generare testo su di esse.
Meccanismo di Funzionamento
Il flusso tipico del function calling si articola in tre fasi:
Dichiarazione degli strumenti — L'applicazione chiamante fornisce al modello un elenco di strumenti disponibili, ciascuno descritto da un nome, una descrizione in linguaggio naturale e uno schema di input tipizzato. Il modello non esegue strumenti; sa solo che esistono e come appaiono i loro input.
Decisione del modello — Dato un obiettivo, il modello ragiona sull'opportunità di effettuare una chiamata agli strumenti. Se necessario, produce un oggetto di chiamata strutturato: il nome dello strumento e i valori degli argomenti compilati dal contesto. Se sono necessarie più chiamate sequenziali, il modello le ragiona in ordine.
Esecuzione applicativa — Il livello applicativo riceve la chiamata allo strumento, esegue l'operazione sottostante e restituisce il risultato al modello. Il modello incorpora il risultato e produce una risposta finale o chiama un altro strumento. Questo ciclo continua fino al completamento dell'obiettivo o al raggiungimento di una condizione di arresto.
La qualità del comportamento del function calling dipende fortemente dalla qualità delle descrizioni degli strumenti. Descrizioni vaghe producono scelte di parametri inaffidabili. Strumenti ben tipizzati e descritti con precisione producono comportamenti coerenti e prevedibili.
Function Calling vs MCP
Un punto di confusione comune: il function calling e il Model Context Protocol (MCP) non sono la stessa cosa, sebbene lavorino insieme.
Function calling è la capacità dell'LLM — la capacità del modello di decidere di invocare un'operazione nominata e strutturarne i parametri. È implementato a livello di modello.
MCP è il livello di protocollo sopra di esso — l'infrastruttura che definisce quali strumenti sono esposti a un agente, come quegli strumenti si connettono a sistemi reali, come viene gestita l'autenticazione e come ogni chiamata agli strumenti e il relativo risultato vengono registrati come artifact strutturati. Un agente può usare il function calling senza MCP, ma in quel caso non c'è un record sistematico e non c'è applicazione dei permessi a livello di protocollo.
Nelle implementazioni enterprise, il function calling senza un livello di protocollo di governance è un rischio. Il modello può chiamare qualsiasi strumento esposto dall'applicazione; se tale esposizione è scarsamente controllata, il modello può intraprendere azioni che superano il suo perimetro previsto. MCP risolve questo problema rendendo la disponibilità degli strumenti una dichiarazione esplicita a livello di policy piuttosto che una capacità runtime implicita.
Implicazioni per la Governance Enterprise
In contesti enterprise regolamentati, la governance del function calling deve affrontare tre rischi specifici:
Scope creep: Un agente che può chiamare qualsiasi strumento in un registro condiviso è un agente che potrebbe inavvertitamente accedere a sistemi che non dovrebbe. Gli elenchi di strumenti consentiti per agente — non per deployment — applicano il principio del minimo privilegio a livello di agente.
Gap nell'audit trail: Il function calling nativo a livello di modello produce la chiamata e il risultato nel contesto del modello. Senza un livello di protocollo, quelle chiamate non vengono automaticamente catturate come artifact di audit strutturati e interrogabili. In un deployment ad alto rischio AI Act, la capacità di ricostruire esattamente quali operazioni esterne ha eseguito un agente è richiesta per la documentazione del sistema di gestione del rischio dell'Articolo 9.
Propagazione di input non validati: Quando un LLM costruisce parametri di chiamata funzione da testo fornito dall'utente, esiste un rischio di prompt injection. Gli schemi di input tipizzati a livello di dichiarazione dello strumento mitigano questo problema vincolando strutturalmente i valori dei parametri validi.
Prospettiva Knowlee
Nel modello di governance di Knowlee, ogni job agente dichiara un elenco esplicito di allowedTools. Questo elenco controlla quali strumenti MCP può raggiungere la capacità di function calling dell'agente. Uno strumento non nell'elenco è strutturalmente irraggiungibile — non è un'istruzione prompt che il modello potrebbe ragionare intorno, è un vincolo a livello di protocollo.
Questo design significa che il function calling in Knowlee è sempre delimitato, sempre registrato e sempre classificato per rischio. La dichiarazione dello strumento nel server MCP porta metadati: quali categorie di dati lo strumento può accedere, quale livello di rischio rappresenta l'operazione e se è richiesta l'approvazione umana prima che la chiamata venga eseguita. Questo è il modo in cui gli obblighi di sorveglianza umana dell'Articolo 14 dell'AI Act vengono operazionalizzati a livello di uso degli strumenti.