Metodologia del benchmark e panoramica dei risultati
Per valutare le capacità degli agenti AI open-source, abbiamo condotto un benchmark su 13 framework, eseguendo cinque compiti distinti per ciascuno e ripetendo ogni prova 100 volte, per un totale di 6 500 run. I test sono stati effettuati a febbraio 2026, utilizzando inizialmente quattro framework – LangChain, LangGraph, AutoGen e CrewAI – su GPT‑5.2. Successivamente, abbiamo ampliato la valutazione includendo tutti gli altri framework disponibili.
I risultati preliminari hanno mostrato che CrewAI richiedeva circa il doppio del tempo medio rispetto agli altri tre (52,7 s contro 27,5‑29,6 s), e il framework più “pesante” consumava il 64 % in più di token rispetto al più “leggero”. Con le versioni aggiornate, tutti e quattro i framework si sono avvicinati a una media di 8,20‑8,39 s, riducendo il divario di token al 26 %.
La metodologia dettagliata è disponibile nella sezione Benchmark‑Methodology del nostro report originale; in sintesi, abbiamo standardizzato le funzioni Python, le descrizioni dei tool e le impostazioni di default di ciascun framework.
Gestione dei tool: esecuzione sequenziale vs simultanea
Un aspetto cruciale emerso riguarda il modo in cui i framework avviano gli strumenti richiesti dal modello. Agno, CAMEL e Google ADK eseguono i tool in modo sequenziale: il successivo parte solo quando il precedente è terminato. Gli altri dieci framework, invece, lanciano tutti i tool contemporaneamente per default.
Questa differenza ha implicazioni pratiche. Quando i tool dipendono l’uno dall’altro (ad esempio, un tool scrive su un record di database mentre un altro tenta di leggerlo), l’esecuzione simultanea può generare conflitti e errori. Nel nostro benchmark, le chiamate ai tool erano per lo più rapide (millisecondi), quindi il vantaggio di avviarli in parallelo è stato annullato dalle problematiche di sincronizzazione.
Per chi utilizza tool lenti (API esterne con latenza di secondi), mantenere l’impostazione predefinita di esecuzione simultanea può comunque ridurre i tempi complessivi. In caso di dipendenze tra i tool, consigliamo di optare per l’esecuzione sequenziale o di implementare meccanismi di lock.
Strategie consigliate
- Esecuzione simultanea solo quando i tool sono indipendenti e la latenza è significativa.
- Esecuzione sequenziale quando i tool condividono risorse o dati.
- Utilizzare parametri di configurazione (ad es.
prompt_template) per ridurre la dimensione dei messaggi inviati dal framework.
Dimensione dei messaggi e impatto sui costi
Ogni framework traduce le funzioni Python in definizioni di tool comprensibili dal modello LLM. Queste definizioni influiscono sulla lunghezza della prima richiesta (prompt) e, di conseguenza, sui costi in token. In media, Agno utilizza 1 917 token, mentre AutoGen ne richiede 2 754. La differenza è dovuta soprattutto alle definizioni dei tool.
Due framework – CrewAI e Google ADK – aggiungono del testo introduttivo alle istruzioni: CrewAI inserisce ruolo, background e obiettivo in una “system template”, Google ADK aggiunge una riga “You are an agent”. Tuttavia, queste aggiunte sono marginali rispetto al peso delle definizioni dei tool.
Poiché le definizioni dei tool vengono inviate ad ogni chiamata LLM, anche un piccolo incremento nella loro dimensione si traduce in costi aggiuntivi per ogni passo dell’esecuzione. AutoGen, ad esempio, invia in media il 37 % di token in più rispetto ad Agno (14 932 vs 10 899), pur facendo quasi lo stesso numero di chiamate (4,40 vs 4,45 per run).
Come ridurre i costi
- Scrivere descrizioni dei tool brevi e concisi.
- Usare una singola descrizione comune per più tool quando possibile.
- Sfruttare le opzioni di personalizzazione dei template per eliminare parti di testo non necessarie.
Tempo di avvio e overhead del framework
Il tempo di avvio varia notevolmente: Google ADK impiega circa 1 s, CAMEL 0,6 s, mentre gli altri framework si mantengono sotto i 0,35 s. Questo overhead non è stato incluso nei risultati del benchmark, poiché le misurazioni si sono concentrate sulle chiamate LLM effettive.
In ambienti serverless, dove ogni richiesta può comportare un avvio “cold start”, il tempo di avvio diventa parte integrante del costo totale. In un’applicazione tradizionale, invece, il framework viene caricato una sola volta all’avvio e resta in memoria, eliminando quasi del tutto questo overhead.
Gestione degli errori e resilienza
Il Task 4 del benchmark ha valutato la capacità dei framework di reagire a tool difettosi. Il tool che calcola il tasso di abbandono per metodo di pagamento fallisce nei primi tre tentativi (errori di connessione, timeout, rate‑limit) e riesce al quarto tentativo. Il modello LLM riceve un messaggio “retry”.
Sei dei 13 framework hanno scelto di abbandonare il tool e di procedere con un approccio alternativo (filtrare e calcolare separatamente per ciascuna modalità), mentre gli altri hanno ritentato il tool. Il comportamento dipende sia dal framework sia dal modello: con GPT‑5.2, 6 framework hanno optato per l’abbandono.
Mostriamo al modello gli errori così come si presentano; se il framework gestisce internamente i retry, il modello non li vede e la decisione finale dipende esclusivamente dal framework.
Supporto a più agenti e orchestrazione
Il benchmark ha testato anche scenari con più agenti concorrenti. Tutti i 13 framework supportano il funzionamento simultaneo di più agenti, ma le implementazioni differiscono:
- Alcuni forniscono un MCP (Model Context Protocol) integrato, consentendo la connessione standardizzata a tool esterni.
- Altri includono un client MCP nel pacchetto stesso.
- Il persistere della memoria varia: alcuni affidano all’applicazione la gestione della cronologia, altri offrono memoria persistente integrata.
Nel nostro test di orchestrazione, un flusso con cinque agenti ha evidenziato che, ad eccezione di smolagents, il numero massimo di chiamate tool per un singolo run è stato di 21; smolagents ha raggiunto 25 chiamate, di cui 16 erano ripetizioni inutili.
Confronto finale dei cinque framework top
Basandoci sui dati raccolti, i cinque framework più performanti sono:
- LangChain: equilibrio ottimale tra velocità (≈8,2 s) e consumo di token (ridotto grazie a template modulari). Ottimo per integrazioni JavaScript e supporto nativo a LangSmith per il tracing.
- LangGraph: struttura a grafo che consente una gestione esplicita dello stato tra i nodi; tempi comparabili a LangChain e capacità avanzata di middleware per riassunti, masking e fallback.
- AutoGen: leggera penalità in termini di token (≈37 % in più) ma offre funzionalità di auto‑correzione e gestione automatica dei retry.
- CrewAI: leggermente più lento nella prima generazione (≈9 s), ma fornisce un’ampia personalizzazione delle istruzioni di ruolo e background.
- CAMEL: esecuzione sequenziale dei tool, ideale quando le dipendenze sono critiche; tempi di avvio contenuti (≈0,6 s).
Smolagents, sebbene incluso nella valutazione, ha mostrato la performance peggiore: tempo medio di 20,55 s e costo di $4,52 per 1 000 run, rendendolo poco competitivo per la maggior parte delle applicazioni.
Conclusioni e raccomandazioni pratiche
Il benchmark evidenzia che la scelta del framework dipende fortemente dal caso d’uso specifico. Per applicazioni che richiedono alta velocità e costi contenuti, LangChain e LangGraph risultano i più affidabili. Quando la resilienza agli errori è prioritaria, AutoGen e CrewAI offrono meccanismi di retry più sofisticati.
Per ambienti serverless, è fondamentale considerare il tempo di avvio del framework; in questi casi, CAMEL o soluzioni leggere come Agno possono ridurre l’impatto complessivo.
Infine, ottimizzare le descrizioni dei tool, sfruttare template personalizzabili e valutare la necessità di esecuzione sequenziale vs simultanea sono pratiche chiave per massimizzare l’efficienza sia in termini di tempo che di costo.