I cinque migliori framework open-source per agenti di intelligenza artificiale – AIMultiple
In una recente analisi, abbiamo messo alla prova 4 famosi framework open-source per agenti di intelligenza artificiale in 2.000 test distribuiti su 5 attività diverse (100 test per framework). L’obbiettivo era valutare le differenze in termini di latenza end-to-end, utilizzo dei token e architetture sottostanti.
LangGraph si è rivelato il framework più veloce, con i valori di latenza più bassi tra tutti gli altri in ogni attività. LangChain, invece, ha presentato i valori più elevati di latenza e utilizzo di token. AutoGen primeggia per la velocità, seguito a breve distanza da LangGraph e LangChain. CrewAI invece ha dimostrato il profilo complessivo più pesante.
Metodologia dell’analisi
La metodologia consisteva nel confrontare il sovraccarico generato da ciascun framework. Questo è stato misurato richiamando un singolo strumento senza effettuare ragionamenti complessi.
LangChain e LangGraph:
per compiti semplici, le prestazioni di entrambi i framework sono molto simili a quelle del codice non agente. I test indicano che entrambi completano le attività in meno di 5 secondi con meno di 900 token. L’architettura a stati finiti di LangGraph mostra un sovraccarico trascurabile rispetto a LangChain a quest’alt livello di semplicità. Tuttavia, con l’aumentare della complessità del compito, entra in gioco l’overhead necessario per gestire lo stato.
AutoGen:
presenta un tempo di latenza e un utilizzo dei token leggermente superiori a LangChain e LangGraph. Questo sovraccarico è attribuibile al ciclo di conversazione multi-agente, in cui due agenti si scambiano messaggi anche per attività di singolo passo.
CrewAI:
Anche se richiesto di effettuare una sola chiamata a uno strumento, CrewAI presenta un cosiddetto “overhead di gestione”, consumando quasi il triplo dei token rispetto a LangChain e impiegando quasi tre volte tanto tempo. Il processo di multi-stagging tra le personalità Planner e Analyst offre un approccio molto dettagliato, ma ad alta intensità di risorse, privilegiando la completezza rispetto alla velocità. Questo comportamento è strutturale e si verifica indipendentemente dalla complessità dell’attività.
Nel compito 2, abbiamo testato la capacità dei framework di mantenere e combinare due diversi gruppi di filtri.
Dall’analisi dei log, abbiamo osservato che CrewAI presenta il livello più elevato di trasparenza, ma a costo maggiore in termini di risorse. Invece di restituire immediatamente i dati ottenuti, CrewAI li convalida ripetutamente attraverso meccanismi di auto-verifica. Questo comportamento, simile a un’esplorazione avanzata, ha portato a raggiungere il limite di iterazioni configurato (max_iter=10), bloccando alcune esecuzioni in cicli indefiniti che non completavano mai l’output JSON.
- CrewAI genera un sovraccarico strutturale legato alla sua architettura, che richiede istruzioni multilivello nei prompt del sistema
- Impone ad ogni passo il ciclo Pensiero → Azione → Osservazione, tipico dello stile ReAct
- Questo approccio ha prodotto un consumo di quasi il doppio di token rispetto ai concorrenti
- Nei tempi, CrewAI ha impiegato oltre tre volte il tempo di LangChain
Framework con la maggiore velocità ed efficienza
LangChain si è dimostrato il più veloce ed economico. Dai log osserviamo che LangChain ha completato l’attività in 5-6 passaggi privi di deviazioni: Caricamento → Filtro → Calcolo → Filtro → Calcolo → Output. Il semplice meccanismo di gestione dello stato ha prodotto un sovraccarico quasi nullo, con una delle latenze più basse rispetto agli altri framework.
Nel Task 2 LangChain ha mostrato una performance equilibrata. Eguagliato quasi esattamente LangGraph sia in tempo che in utilizzo di token, il framework non ha accumulato un sovraccarico significativo durante ciclo lineare di attività. Sebbene, occasionalmente, abbia introdotto un ulteriore passaggio per convalidare i parametri, non ha mai compromesso la correttezza dell’output.
Rilevazione errore e resilienza
Molto resiliente agli errori logici, LangChain ha dimostrato di risolvere rapidamente ogni problema incontrato. Se un errore avviene in una chiamata agli strumenti, in modo immediato LangChain aggiorna il suo ragionamento nel passo successivo e produce un output conforme. Questa capacità di resilienza lo rende adatto a compiti iterativi complessi.
LangGraph: stabilità e struttura
LangGraph si è dimostrato il framework più stabile grazie all’architettura basata sui grafi. Dai log emerge che la gestione dello stato avveniva in modo estremamente pulito, con un basso rischio di contaminazione o interferenze. Su tutte le 100 esecuzioni, ha generato risultati simili in numero di passaggi e latenza.
Traduzione delle condizioni numeriche
Nel terzo compito è stata valutata la capacità di ciascun framework di tradurre condizioni numeriche espresse in linguaggio naturale come “meno di 1 anno di anzianità” e “più di 70 dollari di spese mensili”, in parametri esatti tali come tenuremax=12 e chargesmin=70.0.
LangChain e LangGraph hanno entrambi passato i valori esatti generati direttamente agli strumenti, senza modifiche o cicli aggiuntivi di input. Questa precisione si è riflessa in un’efficiente esecuzione: entrambi i framework hanno completato l’Attività 3 in meno di 9 secondi con meno di 1.800 token.
Confronto con AutoGen
AutoGen ha mostrato precisione numerica completa. In alcuni casi, il framework introduceva una fase di verifica prima di inviare i parametri generati dal LLM agli strumenti. Questo comportativo aggiuntivo non ha rilevato un impatto significativo sui tempi né sull’utilizzo risorse.
Ecco i dati:
- AutoGen ha richiesto 2.480 token e 8 secondi, con una latenza in linea con LangChain
- Il sovraccarico di verifica è reale ma ridotto
- Sempre conforme nella gestione e trasmissione dei parametri
CrewAI e problemi di serializzazione
Il comportamento più interessante si è verificato con CrewAI. Il framework ha completato l’attività in 30 secondi, utilizzando 4.360 token, il numero più alto tra i framework analizzati.
Gli errori osservati rivelano due modelli distinti:
- Un valore che avrebbe dovuto essere 68,81% è stato erroneamente interpretato come 0,6878 (rapporto decimale)
- LangGraph ha inizialmente prodotto parametri corretti, ma quando è entrata in un ciclo di parsing fallito, l