bubblesbubbles
Agenti AI
  • 5 marzo 2026
  • 5 minuti

Cos'è il function calling e perché rende utili gli agenti AI

Il meccanismo che permette a un modello linguistico di usare strumenti e agire sui sistemi aziendali: come funziona, un esempio, come progettarlo e renderlo sicuro.

Lorenzo Invernizzi
Lorenzo InvernizziAI/ML lead

Un commerciale scrive: "Fammi un riepilogo degli ordini aperti del cliente Rossi e mandagli un'email di follow-up." Una frase sola, in linguaggio naturale, che però richiede di interrogare il CRM, consultare il gestionale ordini e inviare un'email: quattro operazioni su sistemi diversi. C'è una differenza sostanziale tra un modello linguistico che risponde alle domande e un agente AI capace di fare tutto questo, e la tecnologia che rende possibile il salto si chiama function calling, o "uso di strumenti" secondo la terminologia di alcuni fornitori. Capire il function calling significa capire cosa distingue un chatbot da un agente che fa le cose.

L'esempio passo per passo

Torniamo alla richiesta del commerciale. L'agente ha a disposizione tre funzioni: cerca cliente, che interroga il CRM a partire dal nome; elenca ordini, che recupera dal gestionale gli ordini di un cliente in un certo stato; invia email, che spedisce un messaggio con destinatario, oggetto e testo. Lo svolgimento è questo: il modello chiama la ricerca del cliente con il nome "Rossi" e ottiene il codice cliente e l'email del referente; chiama l'elenco degli ordini con quel codice e lo stato "aperto", e ottiene la lista degli ordini; elabora le informazioni e scrive il testo dell'email; chiama l'invio dell'email con destinatario, oggetto e testo. In un sistema ben progettato, l'ultimo passaggio può anche fermarsi a una bozza da approvare, se l'azienda preferisce che le email ai clienti passino sempre da una persona.

Il limite di un modello senza strumenti

Prima del function calling, una sequenza come questa era impossibile per un modello linguistico da solo, perché un modello è di per sé un sistema chiuso: riceve testo e produce testo, senza accesso a nulla di esterno. Non può interrogare un database, leggere un file aggiornato, chiamare un'API o inviare un'email. In azienda questo è un limite enorme, perché quasi tutte le attività di valore richiedono di leggere da un sistema, scrivere su un altro, aggiornare uno stato o inviare una notifica. Il function calling supera proprio questo limite.

Come funziona

Il function calling permette al modello di dichiarare l'intenzione di usare una funzione esterna, indicando i parametri necessari. L'applicazione che gestisce il modello intercetta questa richiesta, esegue davvero la funzione e restituisce il risultato al modello, che può proseguire il ragionamento. Il punto importante è che non è il modello a eseguire il codice: il modello dice, in sostanza, "ho bisogno di cercare il cliente con codice 12345", ed è il sistema applicativo a eseguire la ricerca, a inserire il risultato nel contesto e a restituirlo al modello, che lo usa per rispondere o per decidere il passo successivo. È esattamente il meccanismo che trasforma un modello in un agente, come nell'esempio di apertura: il modello ragiona, sceglie gli strumenti, usa i risultati per ragionare ancora e arriva a un'azione finale.

Perché è la chiave degli agenti

Prima del function calling, collegare un modello ai sistemi aziendali richiedeva architetture complesse e flussi rigidi: il modello non poteva decidere da solo quale sistema interrogare e quando. Con il function calling il modello diventa un coordinatore: sceglie gli strumenti in base alla richiesta, li usa in sequenza o in parallelo, gestisce errori e alternative, ripete finché il compito non è concluso. È il motivo per cui gli agenti moderni sono molto più flessibili dei robot RPA: non seguono un percorso prestabilito, ma ragionano su cosa fare in base alla situazione.

Progettare le funzioni, e renderle sicure

La qualità delle funzioni a disposizione determina in gran parte la qualità dell'agente. Servono descrizioni precise, con ogni funzione dotata di una descrizione in linguaggio naturale che spiega cosa fa e quando usarla, perché il modello decide sulla base di queste descrizioni e una descrizione ambigua porta a usi sbagliati. Servono parametri ben definiti, ognuno con un tipo, una descrizione e, se serve, i valori ammessi: "codice cliente: il codice numerico del cliente nel CRM" è molto più utile di un generico "id". Serve la dimensione giusta, perché funzioni troppo piccole richiedono molte chiamate per compiti semplici, funzioni troppo grandi diventano rigide, e trovare l'equilibrio richiede esperienza sulle richieste che l'agente riceverà davvero. E servono errori comprensibili: quando una funzione fallisce, deve restituire un messaggio chiaro, così il modello può tenerne conto e decidere cosa fare.

La sicurezza è la parte che molte implementazioni trascurano. Se un agente può usare funzioni che scrivono nei database, inviano comunicazioni o modificano sistemi, il suo perimetro di sicurezza è critico: un agente configurato male, o manipolato con istruzioni nascoste in un documento o in un messaggio (la cosiddetta prompt injection), potrebbe eseguire azioni indesiderate. Le misure essenziali sono accessi minimi, con ogni funzione dotata solo delle autorizzazioni strettamente necessarie (un agente di assistenza clienti non ha bisogno di modificare i permessi di sistema); lettura e scrittura separate, con le operazioni che modificano dati o sono irreversibili distinte da quelle di sola lettura, e un meccanismo di conferma dove serve; limiti di frequenza, con un tetto al numero di chiamate in un certo periodo per prevenire cicli involontari e comportamenti anomali; un registro completo, con ogni chiamata registrata con data, parametri e risultato, per ricostruire cosa è successo in caso di errore; un controllo dei parametri, perché le funzioni non devono fidarsi ciecamente di ciò che ricevono dall'agente, ma verificarlo; e l'approvazione umana per le azioni critiche, come cancellazioni, comunicazioni massive o pagamenti, dove lo schema migliore è che l'agente proponga e una persona approvi.

La differenza tra un chatbot e un agente non sta nella raffinatezza delle risposte, ma nella capacità di completare compiti che richiedono più passaggi e più sistemi. Un chatbot dice "trovi questa informazione nelle condizioni contrattuali"; un agente recupera le condizioni di quel cliente, verifica se si applicano al caso e prepara la risposta con le clausole già citate. Il function calling è l'infrastruttura di questo salto, e progettarlo bene è la differenza tra un agente che crea valore e uno che crea problemi. Se vuoi progettare un agente sui tuoi sistemi, parliamone.