Function calling negli AI agent: spiegazione pratica per aziende

Cos'è il function calling negli AI agent, come trasforma un LLM in un agente che agisce, e cosa significa progettarlo in modo sicuro per un'azienda.

Matteo Scutifero

Matteo Scutifero

Founder & CEO, DeepElse

7 min di lettura

C'è una differenza sostanziale tra un LLM che risponde a domande e un AI Agent che esegue azioni. La tecnologia che rende possibile questo salto si chiama function calling - o tool use, secondo la terminologia di alcuni provider.

Capire cosa è il function calling è capire cosa distingue un chatbot da un agente che fa cose.

La limitazione di un LLM senza strumenti

Un LLM standard è un sistema chiuso. Riceve testo, produce testo. Non ha accesso a nulla di esterno: non può interrogare un database, non può leggere un file in tempo reale, non può chiamare un'API, non può inviare un'email.

Questo limita enormemente l'utilità in contesti aziendali. La maggior parte dei task che hanno valore in un'azienda richiedono di leggere da un sistema, scrivere su un altro, aggiornare uno stato, inviare una notifica.

Il function calling rompe questo limite.

Cosa significa function calling

Il function calling è un meccanismo che permette al LLM di dichiarare l'intenzione di chiamare una funzione esterna, specificando i parametri necessari. L'applicazione che gestisce il LLM intercetta questa intenzione, esegue la funzione reale, e restituisce il risultato al modello che può continuare il ragionamento.

Non è il LLM ad eseguire direttamente il codice. Il LLM dice "ho bisogno di chiamare la funzione cerca_cliente con il parametro id: 12345". Il sistema applicativo esegue questa chiamata, ottiene il risultato, lo inserisce nel contesto del modello, e il modello può usarlo per rispondere o per decidere il passo successivo.

Questo è esattamente il meccanismo che trasforma un LLM in un AI Agent: il modello ragiona, decide quali strumenti usare, usa i risultati per ragionare ulteriormente, e arriva a un'azione finale.

Un esempio concreto step by step

Immagina un agente AI per il supporto vendite. L'utente chiede: "Dammi un riepilogo degli ordini aperti del cliente Rossi SpA e mandami un'email di follow-up."

Il modello riceve la richiesta e ha a disposizione queste funzioni:

  • cerca_cliente(nome) - interroga il CRM
  • lista_ordini(cliente_id, stato) - recupera ordini dal gestionale
  • invia_email(destinatario, oggetto, corpo) - invia email via SMTP

Esecuzione:

  1. Il modello chiama cerca_cliente("Rossi SpA") - ottiene l'ID cliente e l'email del referente
  2. Il modello chiama lista_ordini(cliente_id, stato="aperto") - ottiene la lista degli ordini
  3. Il modello elabora le informazioni, compone il testo dell'email
  4. Il modello chiama invia_email(destinatario, oggetto, corpo) - l'email viene inviata

Il tutto senza intervento umano intermedio. L'utente ha fatto una richiesta in linguaggio naturale; l'agente ha orchestrato quattro operazioni su sistemi diversi.

Perché il function calling è la chiave degli AI Agent

Prima del function calling, integrare un LLM con sistemi aziendali richiedeva architetture elaborate e pipeline rigide. Il modello non poteva decidere autonomamente quale API chiamare e quando.

Con il function calling, il modello diventa un orchestratore. Può scegliere quali strumenti usare in base al contesto della richiesta, chiamarli in sequenza o in parallelo, gestire errori e fallback, iterare finché il task non è completato.

Questo è il motivo per cui gli AI Agent moderni sono molto più flessibili dei bot RPA tradizionali: non seguono un flusso rigido pre-programmato, ma ragionano su cosa fare in base alla situazione.

Puoi vedere come questi agenti vengono costruiti in produzione nella pagina prodotti/ai-agent.

Come si progetta una funzione per un AI Agent

Non tutte le funzioni si creano allo stesso modo. La qualità delle funzioni disponibili all'agente determina in larga misura la qualità dell'agente stesso.

Descrizione precisa: ogni funzione deve avere una descrizione in linguaggio naturale che spieghi chiaramente cosa fa e quando usarla. Il modello usa queste descrizioni per decidere. Una descrizione ambigua porta a usi sbagliati.

Parametri tipizzati: i parametri devono avere tipo, descrizione e - se necessario - valori possibili. "cliente_id: stringa, l'ID numerico del cliente nel CRM" è molto più utile di "id".

Granularità giusta: funzioni troppo granulari richiedono molte chiamate per task semplici; funzioni troppo grandi sono rigide. Il bilanciamento richiede esperienza con il tipo di richieste che l'agente riceverà.

Gestione degli errori: cosa restituisce la funzione quando fallisce? Il modello deve ricevere errori comprensibili per poterli gestire nel ragionamento.

Sicurezza e controllo accessi

Questa è la parte che molte implementazioni trascurano.

Se un AI Agent può chiamare funzioni che scrivono su database, inviano comunicazioni o modificano sistemi, il perimetro di sicurezza dell'agente è critico. Un agente mal configurato - o manipolato tramite prompt injection - potrebbe eseguire azioni non desiderate.

Alcune misure essenziali:

Principio del minimo privilegio: ogni funzione deve avere solo le autorizzazioni strettamente necessarie. Un agente per il supporto clienti non ha bisogno di funzioni che modificano i permessi di sistema.

Funzioni di sola lettura vs scrittura: distinguere chiaramente le operazioni di lettura da quelle di scrittura. Per le operazioni che modificano dati o eseguono azioni irreversibili, valutare un meccanismo di conferma.

Rate limiting: limitare il numero di chiamate che l'agente può fare in un certo periodo. Previene loop involontari e comportamenti anomali.

Audit log: ogni function call eseguita da un agente deve essere loggata con timestamp, parametri e risultato. In caso di errore o comportamento anomalo, il log permette di capire cosa è successo.

Validazione degli input: le funzioni non devono fidarsi ciecamente dei parametri passati dall'agente. Una validazione lato funzione protegge da parametri inattesi o malevoli.

Human-in-the-loop per azioni critiche: per azioni con impatto significativo (cancellazione di dati, invio di comunicazioni massive, esecuzione di pagamenti), il pattern migliore è "l'agente propone, l'umano approva".

Il punto di arrivo: agenti che completano task, non solo rispondono

La differenza tra un chatbot e un AI Agent non è la sofisticazione delle risposte. È la capacità di completare task che richiedono più passi e più sistemi.

Un chatbot risponde "puoi trovare questo nelle condizioni contrattuali". Un AI Agent recupera le condizioni contrattuali specifiche per quel cliente, verifica l'applicabilità alla situazione, e prepara la risposta con le clausole rilevanti già citate.

Il function calling è l'infrastruttura che rende possibile questo salto. Progettarlo bene - con sicurezza, logging e controlli adeguati - è la differenza tra un agente che crea valore e uno che crea problemi.

La sezione tecnologia descrive le architetture con cui questi sistemi vengono costruiti e le scelte progettuali più rilevanti.

Vuoi applicare tutto questo alla tua azienda?

Prenota una call gratuita di 30 minuti con Matteo. Analizziamo insieme i tuoi processi e identifichiamo le opportunità AI ad alto ROI.

Prenota la call

Pronto a portare l'AI nella tua azienda?

Inizia con una call gratuita di 30 minuti. Nessun impegno: capiamo insieme dove l'AI può fare la differenza per te.

Riassumi con AI

Ottieni un riepilogo di questo articolo con il tuo assistente AI preferito.

Matteo Scutifero

Matteo Scutifero

Founder & CEO, DeepElse

Aiuto PMI e Corporate italiane ad adottare l'AI in modo concreto e misurabile. Appassionato di tecnologia applicata ai processi aziendali.

Ti potrebbe interessare