Metodologia del benchmark e panoramica iniziale
Il test ha coinvolto 13 framework open‑source per agenti IA, ognuno eseguito su cinque task diversi, ripetendo ogni task 100 volte. In totale sono state effettuate 6 500 run, consentendo un’analisi statistica robusta di tempi di esecuzione, costi in dollari per 1 000 run e consumo di token.
Nel grafico comparativo non compare smolagents, poiché il suo tempo medio di 20,55 s e il costo di 4,52 $ per 1 000 run sono di gran lunga superiori agli altri framework, rendendo difficili le comparazioni. Per questa ragione, smolagents è stato trattato separatamente nella sezione finale.
Il benchmark iniziale, effettuato a febbraio 2026, utilizzava quattro framework (LangChain, LangGraph, AutoGen e CrewAI) con il modello GPT‑5.2. CrewAI risultava circa il doppio più lento (52,7 s) rispetto agli altri (27,5‑29,6 s) e consumava il 64 % di token in più rispetto al più leggero. Con le versioni attuali, la differenza di tempo è scesa a 8,20‑8,39 s e il divario di token a 26 %.
Per i dettagli sulla procedura di testing e l’analisi dei risultati, consultare la sezione “Metodologia del benchmark” nel documento originale.
Gestione dei tool e comportamento sincrono vs asincrono
Alcuni framework (Agno, CAMEL e Google ADK) eseguono i tool richiesti in modo sequenziale: il successivo tool parte solo al termine di quello precedente. Gli altri dieci framework, invece, avviano tutti i tool contemporaneamente per impostazione predefinita.
Quando i tool sono interdipendenti, l’avvio simultaneo può causare errori, poiché un tool potrebbe tentare di leggere dati non ancora scritti da un altro. Questo è analogo a due processi che accedono simultaneamente a un record di database, con uno che scrive mentre l’altro legge.
Il comportamento sequenziale è stato osservato anche nelle chiamate sincrone utilizzate nel benchmark: Agno utilizza arun(), CAMEL astep() e gli strumenti asincroni di Google ADK eseguono le chiamate contemporaneamente.
Nel nostro caso, i tool terminano in millisecondi; quindi, l’avvio parallelo non ha portato vantaggi di velocità, ma ha introdotto gli errori descritti sopra. Per tool lenti (ad esempio chiamate API con latenza di secondi) il comportamento predefinito parallelo è consigliato, mentre per tool interdipendenti è preferibile la sequenza.
Due opzioni per tool dipendenti
- Utilizzare il comportamento sequenziale predefinito nei framework che lo supportano.
- Implementare meccanismi di sincronizzazione a livello di applicazione (ad esempio lock o code di messaggi).
Invio di istruzioni e differenze di token
La maggior parte dei framework trasmette le istruzioni al modello così come sono e invia i passaggi precedenti come messaggi di tool standard. smolagents, invece, incorpora le istruzioni in un template di 6 780 caratteri e reinvia i passaggi precedenti in testo semplice. Questa differenza si è tradotta in tre aree di impatto:
- Dimensione della richiesta iniziale: 1 917 token in media per Agno, 2 754 per AutoGen.
- Ritardi crescenti in task con più step: il Task 2 richiedeva il calcolo di fatturato per clienti con e senza supporto tecnico, generando più passaggi e facendo crescere il gap di token.
- Possibilità di ridurre il template: smolagents permette di passare un template più corto tramite il parametro
prompt_templates.
Il Task 4 ha valutato la gestione di un tool rotto (calcolo del tasso di churn). Il tool falliva per tre tentativi (errore di connessione, timeout, rate limit) e succeedeva al quarto. L’agente poteva scegliere di ritentare o di filtrare e calcolare separatamente per metodo di pagamento.
Il modello influisce sulla decisione: con GPT‑5.2, sei dei tredici framework hanno abbandonato il tool e hanno optato per l’alternativa, dimostrando una dipendenza dal comportamento del modello stesso.
Definizioni dei tool e impatto sui costi
Abbiamo fornito a tutti i framework le stesse funzioni Python con descrizioni identiche. Ogni framework converte queste funzioni in definizioni di tool leggibili dal modello, ma con formati diversi, influenzando il conteggio dei token. Le differenze più marcate riguardano:
- Il numero di token inviati nella prima richiesta (da 1 917 a 2 754).
- Il fatto che le definizioni dei tool vengano reinviate ad ogni chiamata, aumentando il costo per step.
- Agno e AutoGen hanno effettuato quasi lo stesso numero di chiamate LLM per run (4,40 e 4,45), ma AutoGen ha inviato il 37 % di token in più (14 932 contro 10 899).
Ridurre la lunghezza delle descrizioni dei tool o fornire una descrizione separata al framework può diminuire il consumo di token. In CrewAI, è possibile modificare il testo aggiuntivo alle istruzioni tramite i parametri systemtemplate e prompttemplate.
Overhead del framework e tempi di avvio
Il codice interno di ciascun framework aggiunge tra 0,04 e 0,14 s a una run, meno del 2 % del tempo totale. I tempi di avvio, invece, variano:
- Google ADK: circa 1 s
- CAMEL: 0,6 s
- Altri framework: meno di 0,35 s
Questi tempi di avvio non sono inclusi nei risultati del benchmark, ma diventano rilevanti in ambienti serverless dove ogni richiesta avvia una nuova istanza.
Supporto per più agenti e orchestrazione
Tutti i tredici framework consentono l’esecuzione di più agenti in parallelo. Abbiamo testato un flusso a cinque agenti nel benchmark di orchestrazione agentica, osservando tre gruppi di approcci:
- Definizioni basate su grafi di nodi e archi, con gestione esplicita dello stato (es. LangGraph).
- Modelli basati su ruoli, obiettivi e backstory, con “crew” di agenti (es. CrewAI).
- Framework che usano il Model Context Protocol (MCP) per collegare tool e fonti dati esterne.
Nel Task 3, LangGraph ha effettuato 25 chiamate a tool prima di arrivare alla risposta corretta, di cui 16 ripetute. Solo smolagents ha superato questo numero, ma tutti gli altri framework hanno fermato l’esecuzione entro 21 chiamate.
Dettagli sui principali framework
- LangChain: framework generico per applicazioni LLM. Dalla versione 1.0 gli agenti sono creati con
create_agente girano su runtime LangGraph. Middleware disponibili per sintesi di cronologie, mascheramento dati personali, retry e fallback. - LangGraph: definisce gli agenti come grafi; le chiamate possono essere tracciate su LangSmith. Condivide istruzioni e definizioni di tool con LangChain, portando a tempi e costi quasi identici.
- CrewAI: agente definito da ruolo, obiettivo e backstory, eseguito in team (crew). Flussi (Flows) collegano i passi tramite eventi; esiste anche una piattaforma enterprise a pagamento.
- AutoGen (Microsoft): messaggi tra agenti su più livelli (Core, AgentChat, Extensions). AutoGen Studio è l’interfaccia no‑code. Il valore predefinito
maxtooliterations=1limita a una sola iterazione di tool; per task multi‑step è necessario aumentarlo. - Semantic Kernel + AutoGen: combina AutoGen e Semantic Kernel, supporta Python e .NET, offre tracciamento OpenTelemetry e middleware. La DevUI è l’interfaccia di sviluppo separata.
- OpenAI Swarm: successore di Swarm, strutturato su agenti, tool, handoff e guardrail. Disponibile in Python e TypeScript; invia di default un trace a OpenAI Dashboard (disattivato per il test).
Conclusioni e consigli pratici
Il benchmark evidenzia che la scelta del framework dipende più dal contesto operativo che da metriche assolute. Se i tool sono lenti e indipendenti, è preferibile mantenere l’avvio parallelo predefinito. Quando i tool condividono dati, è consigliabile:
- Abilitare l’esecuzione sequenziale (es. Agno, CAMEL, Google ADK).
- Ridurre la lunghezza delle descrizioni dei tool per contenere i costi di token.
- Utilizzare template più brevi o personalizzati (come in smolagents).
Per applicazioni serverless, considerare il tempo di avvio del framework e, se possibile, caricarlo una sola volta al boot dell’applicazione per eliminare l’overhead ad ogni request.
Infine, la capacità di gestire più agenti contemporaneamente è ormai standard; la decisione tra grafi (LangGraph), crew (CrewAI) o MCP dipenderà da esigenze di tracciabilità, flessibilità di stato e integrazione con tool esterni.
