Ogni agente AI è un modello che chiama strumenti secondo un certo ordine. L’unica vera domanda è chi stabilisce quell’ordine. In un agente a ciclo lo decide il modello durante l’esecuzione. In un agente a grafo lo definisci prima tu e il modello completa i passaggi. La maggior parte delle discussioni sui framework per agenti riguarda in realtà proprio questa scelta.
Un agente a ciclo è la cosa più semplice che funzioni: invii al modello il compito e un elenco di strumenti, esegui quello che richiede, aggiungi il risultato e ripeti finché non risponde senza chiamare strumenti. È il pattern ReAct. Lo offrono già le API di tool use di OpenAI e Anthropic, Vercel AI SDK e createAgent di LangChain. È sorprendentemente capace: la maggior parte degli assistenti di programmazione e degli agenti di ricerca usa proprio questo ciclo.
Il suo punto di forza è la flessibilità: non serve conoscere il percorso in anticipo, perciò si adatta bene ai compiti aperti — ricerca, debug, «scopri perché quest’ordine non è riuscito». La debolezza è la stessa. Il numero di passaggi è ignoto, quindi lo sono anche costo e latenza; il modello può girare in tondo, saltare un controllo o chiamare uno strumento che speravi evitasse. Per tenerlo entro i limiti servono guardrail: massimo di passaggi (stopWhen in Vercel AI SDK), budget di token, allowlist degli strumenti e validazione della risposta finale.
Un agente a grafo rende espliciti nodi e archi del processo: classificare, recuperare, preparare una bozza, convalidare, chiedere a una persona, scrivere. Ogni nodo può essere una chiamata al modello, uno strumento o semplice codice; gli archi possono diramarsi o tornare indietro intenzionalmente: «convalida non riuscita, torna alla bozza». Lo stato è un oggetto esplicito, salvato dopo ogni nodo. LangGraph è l’esempio più noto: in Python e TypeScript aggiunge checkpoint, così un’esecuzione può fermarsi per l’approvazione di una persona e riprendere ore dopo esattamente dal punto in cui si era interrotta.
Il suo punto di forza è il controllo. Sai quali passaggi possono avvenire, in che ordine e dove serve un’approvazione umana. Ogni esecuzione è tracciabile nodo per nodo, il costo è limitato dalla forma del grafo e un errore al quinto passaggio non ripete i primi quattro. Il prezzo è la progettazione iniziale e una minore libertà: se un compito non rientra nel grafo, l’agente non può improvvisare una via d’uscita.
Tempo per il primo prototipo
Attività aperte
Costo e latenza prevedibili
Debug e tracciamento
Approvazioni umane
Processi lunghi e riprendibili
Scritture sicure (denaro, dati personali)
Mostra come tabella
| Criterio | Agente a ciclo | Agente a grafo |
|---|---|---|
| Tempo per il primo prototipo | 5 / 5 | 2 / 5 |
| Attività aperte | 5 / 5 | 2 / 5 |
| Costo e latenza prevedibili | 2 / 5 | 4 / 5 |
| Debug e tracciamento | 2 / 5 | 5 / 5 |
| Approvazioni umane | 2 / 5 | 5 / 5 |
| Processi lunghi e riprendibili | 1 / 5 | 5 / 5 |
| Scritture sicure (denaro, dati personali) | 2 / 5 | 5 / 5 |
Nel confronto diretto la domanda non è tanto «qual è il migliore?» quanto «dove si colloca il tuo compito?» — tra aperto e ripetibile, tra errori economici e costosi. Un dettaglio interessante: il confine è meno netto di quanto dica il marketing. createAgent di LangChain è un ciclo, ma dalla versione 1.0 gira sul runtime LangGraph: un ciclo è semplicemente il grafo più piccolo possibile.
Dimensione del cerchio: chiamate tipiche del modello per attività
Mostra come elenco
- Una sola chiamata al modello — Un prompt, una risposta: massima prevedibilità, minima autonomia. (1 chiamata al modello)
- Agente a grafo — Passaggi e diramazioni progettati; il modello opera in ogni nodo. (un numero fisso di chiamate)
- Grafo con un ciclo interno — Processo fisso con un passaggio aperto, per esempio la ricerca. (passaggi fissi + ciclo limitato)
- Agente a ciclo — Il modello sceglie ogni passaggio successivo fino al completamento. (tutte le chiamate necessarie)
La mia regola pratica: iniziare con un ciclo per l’esplorazione e gli strumenti interni, dove una persona leggerà comunque il risultato. Passare a un grafo quando il processo si ripete, tocca denaro o dati dei clienti, richiede un’approvazione o dura più di una richiesta. I migliori sistemi di produzione combinano di solito entrambi: un grafo per il processo aziendale e un piccolo ciclo in uno dei nodi — per esempio, una fase di ricerca che può eseguire più ricerche prima di passare un risultato pulito al nodo deterministico successivo.
Qualunque approccio scegli, le regole non cambiano: input tipizzati per gli strumenti, budget rigido, log per ogni passaggio e nessuna scrittura nel sistema di riferimento senza convalida. In TypeScript o Python bastano alcune decine di righe attorno alla chiamata al modello: fanno la differenza tra una demo e un prodotto. Se vuoi affidare un processo a un agente, mandami i passaggi come li svolge oggi il tuo team. Ti dirò se serve un ciclo, un grafo o un grafo con un ciclo al suo interno.
Dai al prossimo prodotto qualcuno che resti.
Pronto a iniziare? Scrivimi: posso cominciare subito e restare. Collaborazioni a lungo termine, non passaggi di consegne dopo due settimane. Parliamo del progetto, dei requisiti e del modo migliore per procedere.