Con gli agenti programmabili sempre più in grado di collaborare con il software, un'idea fondamentale emergente sta cambiando la progettazione delle librerie. Non è più sufficiente che il codice sia corretto o veloce, ma deve anche essere pensato in modo che venga utilizzato con efficacia da un agente. Questo significa che una buona API e documentazione chiara sono fondamentali per ridurre il tempo e i costi per l'agente.
Perché i Benchmark Classici Non Sono Sufficienti
I benchmark tradizionali si concentrano spesso solo sull'output finale. Tuttavia, quando si tratta di testare la capacità di un agente di lavorare con una strumentazione, sono cruciali anche aspetti come i tempi di risoluzione, il numero di tokens coinvolti e la chiarezza del percorso seguito. Per questo motivo, abbiamo creato un tool specifico che valuta la performance di modelli open-source in base al percorso seguito per risolvere una task, non solo in base al risultato finale.
Uno Schema di Valutazione Specifico
Il nostro test case è la strumentazione Transformers, una libreria molto utilizzata nel campo del Machine Learning, dove gli agenti risolvono compiti come la classificazione di testi, la descrizione di immagini o la trascrizione di audio. Il nostro obiettivo non è contribuire al codice, ma valutare se miglioramenti come un CLI, un Skill e esempi auto-contenuti possono aumentare l'efficienza dei modelli.
Il Ruolo del CLI e del Skill
Abbiamo ipotizzato che la libreria Transformers potrebbe essere drasticamente semplificata con l'introduzione di un CLI (Command Line Interface), di un Skill e di esempi focalizzati su specifici scenari. Questo tipo di modifiche sono state recentemente applicate al CLI Hugging Face (hf CLI), dove si sono visti ridurre i token utilizzati dagli agenti tra il 1,3 e il 1,8 volte, fino a 6 volte in alcuni casi. Volevamo testare se questi vantaggi potessero essere replicati anche con Transformers.
Impatto del Rework dell'Agente
Sempre all'interno della libreria Transformers, abbiamo notato che due diverse strategie di risoluzione di una stessa task possono portare allo stesso risultato, ma seguire percorsi diversi per arrivarvi. Una di esse potrebbe utilizzare un'interfaccia deprecata, o seguire un'API obsoleta. Questo tipo di dettagli potrebbe non essere valutabile solo guardando al risultato finale.
Volevamo capire se i miglioramenti implementati in Transformers, come il CLI, possono realmente ridurre il carico di lavoro per gli agenti. Per fare questo, abbiamo messo a confronto diverse versioni della libreria, comprese quelle con modifiche come il CLI e gli esempi integrati.
Un Test a Scopo Comparativo
I test che abbiamo effettuato variano su quattro parametri chiave:
- Il modello open-source che guida l'agente
- La versione Transformers con cui l'agente interagisce
- La task che deve essere svolta
- Il livello di supporto fornito all'agente (bare/clone/skill)
Sul modello più avanzato, ad esempio, l'introduzione del Skill ha ridotto la media del tempo di completamento delle task. Invece, in quel modello dove è stato usato il clone, l'introduzione del CLI ha incrementato significativamente il consumo di tokens.
I Risultati Sui Diversi Livelli
Analizzando i dati raccolti in tre varianti, si osserva un'interessante differenza tra le performance:
- Con il modello base, la variabile "skill" non presenta grandi vantaggi rispetto a "clone" o "bare".
- Nei modelli open-source grandi, invece, il commit che introduce CLI e Skill riduce in media il tempo necessario per completare le task.
- Con il clone, in cambio, aumenta il consumo di tokens. Questo perché il modello è costretto a leggere il codice, il che implica una maggiore richiesta di tokens.
Ciò rappresenta un bilanciamento tra tempo di esecuzione e consumo energetico: i modelli grandi risparmiano tempo ma consumano più tokens. Tuttavia, in ambito reale, il processo di 'riconoscere l'interfaccia' una volta è ripetibile per molteplici task, rendendo minore il consumo netto a lungo termine.
In Conclusione
Questo tipo di analisi fornisce una mappa dettagliata per lo sviluppo di librerie e strumenti pensati per essere utilizzati da agenti open-source. Si può non solo verificare se un aggiornamento ha successo, ma anche capire in che modo un certo modello o una versione dell’agente si comporta meglio. Inoltre, il tracciamento completo dell’agente permette di analizzare, passo dopo passo, il percorso seguito per ottenere un risultato.
Il report generato da ogni run presenta chiaramente gli aspetti rilevanti, come il tempo passato, i tokens generati e la traccia esatta del comando eseguito. Questo non solo aiuta gli sviluppatori a migliorare l’interfaccia, ma anche gli utenti finali a capire come gli agenti raggiungono i loro risultati.