La function calling è una capacità dei modelli linguistici di grandi dimensioni che consente loro di richiedere l'esecuzione di codice o strumenti esterni producendo argomenti strutturati anziché generare testo libero. Colma il divario tra prompt in linguaggio naturale e software deterministico, così un LLM può agire in modo affidabile su database, API o altri servizi. Il modello decide quando è necessaria una funzione e fornisce un payload leggibile dalla macchina, mentre l'applicazione chiamante è responsabile dell'effettiva esecuzione della funzione e della restituzione del risultato al modello.
Come funziona la Function Calling
Gli sviluppatori registrano un set di definizioni di funzioni con il modello, tipicamente come schemi JSON che descrivono nome, scopo e parametri di ciascuna funzione. Quando un utente invia un prompt come "Che tempo fa a Tokyo?", il modello non risponde direttamente. Restituisce invece un oggetto strutturato — ad esempio, {"name": "get_weather", "arguments": {"city": "Tokyo"}}. L'applicazione host analizza tale oggetto, esegue la funzione reale (spesso chiamando un'API di terze parti) e aggiunge il risultato alla conversazione come nuovo messaggio. L'LLM trasforma quindi quel risultato in una risposta in linguaggio naturale per l'utente.
La maggior parte dei provider espone lo stesso flusso tramite le proprie API di completamento chat. Il modello non esegue mai codice direttamente; la function calling è essenzialmente un modo disciplinato per far sì che un modello linguistico "parli in JSON" così che il software deterministico possa agire su di esso in modo sicuro.
Perché è importante
Gli LLM sono bravi con il linguaggio e il ragionamento, ma scarsi in aritmetica, dati in tempo reale ed effetti collaterali. La function calling trasforma un modello di chat nello strato di ragionamento di un sistema agentico: il modello pianifica, gli strumenti eseguono. Questo schema alimenta assistenti AI in grado di gestire calendari, interrogare CRM, eseguire query SQL, chiamare microservizi interni o attivare azioni robotiche, mantenendo allo stesso tempo il pieno controllo dello sviluppatore su quale codice viene effettivamente eseguito. Riduce inoltre drasticamente le allucinazioni nelle query fattuali, perché le risposte sono ancorate all'output reale degli strumenti anziché alla memoria parametrica del modello.
Principali pattern di function calling
- Utilizzo singolo di strumenti: il modello chiama una sola funzione per turno, come una calcolatrice o una ricerca web.
- Chiamate parallele: il modello richiede più funzioni indipendenti in un'unica risposta, utile per recuperare dati da più fonti contemporaneamente.
- Loop multi-step / agentici: l'applicazione rilancia i risultati degli strumenti finché il modello decide che non servono ulteriori chiamate, abilitando catene di azioni.
- Decoding vincolato: tecniche che forzano l'output token-per-token del modello a conformarsi a uno schema JSON, migliorando l'affidabilità per API rigorose.
La function calling è ormai una capacità standard tra i principali provider di modelli ed è il fondamento su cui sono costruiti la maggior parte degli agenti AI, dei copilot e delle pipeline di retrieval moderne.