(articolo redatto da Attilio Marco Sessa)
Nel mondo sempre più digitalizzato di oggi, l’automazione sta diventando una componente chiave per incrementare l’efficienza e ottimizzare i processi. Autogen emerge come uno strumento valido in questo panorama, offrendo soluzioni personalizzabili che si adattano a svariati contesti lavorativi. Che tu sia un programmatore esperto o un novizio del settore tech, capire come Autogen possa essere sfruttato per automatizzare compiti ripetitivi e routine quotidiane non solo può trasformare il tuo modo di lavorare, ma anche aprire porte a nuove possibilità creative.
In questo articolo, esploreremo le potenzialità di Autogen, illustrando come può essere impiegato per semplificare la vita di professionisti in diversi settori. Dive into the future of automation with us!
Introduzione ad Autogen
AutoGen è un framework innovativo sviluppato da Microsoft che utilizza Python per orchestrare e ottimizzare i flussi di lavoro dei modelli di linguaggio avanzati (LLM) tramite un sistema multi-agente.
Questo framework permette lo sviluppo di applicazioni complesse abilitando più agenti AI, ognuno alimentato da LLM come GPT-4, a conversare e collaborare su compiti specifici.

Caratteristiche principali di Autogen
- Personalizzabile e Flessibile: Il framework permette una notevole personalizzazione dei comportamenti e dei ruoli degli agenti, consentendo lo sviluppo di applicazioni diverse in vari domini. Gli sviluppatori possono adattare le funzioni degli agenti, integrando feedback umano quando necessario per migliorare le capacità decisionali degli agenti.
- Integrazione con Strumenti Esterni: AutoGen supporta l’uso di strumenti esterni all’interno dell’ecosistema degli agenti, facilitando compiti come l’esecuzione di codice, il recupero di informazioni e altro ancora. Questa caratteristica potenzia la capacità degli agenti di interagire ed eseguire operazioni più complesse in modo efficace.
- Efficienza e Automazione: Automatizzando le interazioni tra gli agenti IA, AutoGen riduce significativamente lo sforzo di codifica manuale, aumentando la produttività e consentendo cicli di sviluppo più efficienti.
Componenti principali di Autogen
Il nucleo centrale di AutoGen è rappresentato dai ConversableAgent, elementi chiave che definiscono agenti capaci di interagire tra loro attraverso lo scambio di messaggi per portare a termine compiti condivisi. Questi agenti si articolano principalmente in quattro sottotipi, ciascuno specializzato per funzioni distinte all’interno dell’ecosistema:
– Assistant Agent: questo agente è essenziale per il funzionamento di AutoGen, agendo come un assistente intelligente che gestisce e risponde attivamente alle richieste degli utenti. Le sue responsabilità spaziano dalla generazione di codice e l’elaborazione di query fino all’automazione di risposte basate su dati analizzati, facilitando così un’ampia varietà di processi automatizzati all’interno dell’ambiente digitale.
– User Proxy Agent: funziona come collegamento tra gli utenti umani e il sistema AutoGen, interpretando e traducendo le richieste degli utenti in formati che altri agenti possono processare. Questo agente non solo facilita una comunicazione efficace e chiara, ma fornisce anche un feedback essenziale agli utenti, informandoli sulle azioni compiute e sulle risposte fornite dagli altri agenti. Il suo ruolo di moderatore garantisce che le interazioni rimangano allineate alle aspettative degli utenti, prevenendo possibili malintesi o errori e mantenendo l’interazione fluida e produttiva.
– Teachable agent: è un agente in grado di apprendere attraverso l’interazione diretta con gli utenti. Il concetto di “teachable” si riferisce alla capacità di questi agenti di essere istruiti o guidati da un utente umano attraverso un processo di feedback e adattamento. Gli utenti possono “insegnare” all’agente fornendo esempi, correggendo gli errori, o guidando l’apprendimento dell’agente in modi specifici.
– Agent Manager: è responsabile per la coordinazione e la gestione degli agenti all’interno di un sistema multi-conversazionale. L’Agent Manager controlla l’interazione tra gli agenti, gestisce la distribuzione dei compiti, assicura che gli agenti eseguano le loro funzioni in modo corretto ed efficiente e può intervenire per risolvere eventuali conflitti o errori di esecuzione. In pratica, funge da supervisore, garantendo che il flusso di lavoro tra gli agenti sia fluido e che le specifiche del sistema vengano rispettate.
Esplorando le alternative ad Autogen
Autogen, ovviamente, non è l’unico framework in grado di costruire ambienti multi-agente, possiamo quindi valutare anche le ulteriori alternative disponibili:
– Crew.ai: Il framework Crew.ai per Python è stato progettato per facilitare la gestione e la collaborazione di agenti AI autonomi. Uno degli aspetti più innovativi di Crew.ai è il suo design basato sui ruoli: ogni agente è definito non solo dalla sua capacità di eseguire compiti, ma anche da un ruolo specifico che delinea obiettivi precisi. Questo permette di simulare un ambiente lavorativo più strutturato e mirato.
– Vertex AI: In Vertex AI, un agente rappresenta l’unità di base di un’applicazione. Ogni agente è specializzato in particolari attività all’interno dell’app, operando secondo obiettivi definiti. Gli agenti ricevono dati che includono obiettivi, istruzioni operative ed esempi di interazioni. Questi dati vengono utilizzati per addestrare l’agente ad eseguire le sue funzioni, inclusa la capacità di rispondere a domande e svolgere compiti utilizzando Language Models (LLM). (ulteriori dettagli: Google-Vertex)
– Azure: Il sistema multi-agente di Azure sfrutta agenti intelligenti basati sui Large Language Models (LLM) per eseguire compiti complessi attraverso una cooperazione coordinata. Ogni agente in questo sistema è progettato per percepire autonomamente l’ambiente, elaborare informazioni e agire in modo indipendente per raggiungere obiettivi specifici. (ulteriori dettagli: Microsoft-Azure).
Esempio applicativo con Autogen
Con il seguente esempio è possibile avere un primo assaggio delle funzionalità che offre questo framework:
Semplicemente combinando AutoGen e Streamlit, infatti, si può creare un sistema dinamico basato sulla comunicazione tra agenti che elaborano file CSV, non solo per analizzare i dati, ma anche per generare automaticamente codice Python necessario per ulteriori elaborazioni.
Questi agenti conversazionali sono progettati per dialogare efficacemente l’uno con l’altro, ottimizzando il processo di analisi senza la necessità di interventi manuali estesi. Il risultato di queste analisi può essere la generazione di nuovi file CSV o la creazione di grafici interpretativi, offrendo agli utenti finali visualizzazioni immediate e significative dei dati analizzati.

Caso d’uso
Una volta aver istanziato tutto il necessario possiamo osservare il vero e proprio funzionamento di quest’applicazione.
In questo caso specifico si è andati a svolgere un’analisi su dei dati contenuti in file CSV, estratti da un database che mantiene informazioni lavorative di un insieme di utenti interni.
Ecco un esempio di funzionamento del sistema:
- Tramite l’interfaccia Streamlit, l’utente può inserire la propria richiesta all’interno di una text area per poi inoltrarla al sistema tramite apposito bottone:

Quello che succede dal punto di vista del back-end è che la conversazione di gruppo viene avviata:

Quindi lo user proxy prende in input la query dell’utente, la inoltra sulla Chat Group ed è l’Agent Manager a occuparsi poi di gestire l’ordine di interrogazione degli agenti.
- L’assistant crea un codice Python che analizza i dati dei timesheet di dicembre degli utenti interni, salvando i risultati in un file JSON. Il codice unisce i dati dei timesheet con quelli degli utenti, calcola le ore lavorate totali per ogni utente e registra tutto nel file.
- Sarà poi lo User Proxy ad eseguire il codice Python fornito dall’assistant, comunicando anche eventuali errori effettuati in fase di generazione, così da ottenere un file JSON di questo tipo:

- Una volta che la generazione del file JSON è andata a buon fine è compito del Manager Assistant scegliere il graph maker per soddisfare la richiesta dell’utente.
- il graph_maker analizza il file JSON e genera il codice Python per creare il grafico a barre richiesto mostrando le ore lavorate per ogni utente interno.
- Sarà poi lo User Proxy ad eseguire il codice Python fornito dal graph maker, comunicando anche eventuali errori effettuati in fase di generazione, così da ottenere un grafico di questo tipo:

- Lo user proxy considererà a questo punto la richiesta dell’utente soddisfatta e il grafico verrà mostrato sull’interfaccia Streamlit così da fornire all’utente un accesso immediato alle informazioni.
Componenti dell’applicativo
– Lista di configurazione: è utilizzata per configurare specifiche impostazioni necessarie per il funzionamento dell’applicazione. Ogni elemento nella lista è un dizionario che contiene informazioni cruciali:
– model: Indica il modello di LLM (Large Language Model) da utilizzare, in questo caso “gpt-4-turbo” viene utilizzato per tutti gli agenti. Questa informazione è fondamentale per specificare quale versione del modello l’applicazione deve utilizzare per eseguire il processing del testo o altri compiti di intelligenza artificiale.
– api_key: Fornisce una chiave API unica necessaria per autenticare e autorizzare l’accesso ai servizi cloud dove è ospitato il modello.

– Configurazione dell’LLM: è utilizzata per impostare i parametri funzionali del modello di linguaggio. Questo dizionario contiene tre chiavi:
– seed: Imposta un seme numerico (42 in questo caso), che viene utilizzato per garantire la riproducibilità dei risultati del modello di linguaggio.
– config_list: Collega la configurazione specificata precedentemente
– temperature: Configura la “temperatura” dell’algoritmo di generazione del testo a 0, il che implica che l’output del modello sarà il meno casuale possibile e più deterministico, tendendo a produrre le risposte più probabili.

– Assistant: Questo agente funge da analista dati. Utilizza il modulo Python pandas per analizzare dati specifici forniti dall’utente, tramite il prompt conosce dove sono locati i file CSV e la struttura stessa delle tabelle, così da essere in grado di risolvere query relative ai dati. Infine, andrà a generare un codice Python che, quando verrà eseguito permetterà di salvare i risultati in un file JSON.

– Graph maker: Questo agente è specializzato nella creazione di grafici. Lavora con i dati salvati nel file JSON dal primo agente per generare rappresentazioni grafiche appropriate.

– CSV maker: Simile al Graph Maker, ma focalizzato sulla creazione di file CSV dai dati JSON elaborati dall’assistente.

– User proxy: Agisce come mediatore tra l’utente umano e gli altri agenti. Gestisce l’input dell’utente, inoltrando le query agli altri agenti e gestendo le risposte per assicurarsi che soddisfino le richieste dell’utente. Decide anche quando un compito è stato completato con successo.

– Per permettere a questi agenti di interagire tra di loro, in maniera corretta, c’è la necessità di istanziare una Group Chat:

Viene privata la comunicazione diretta tra “esecutori”, in quanto dev’essere lo User Proxy a ricevere il codice di output di ogni assistente per controllare che sia corretto ed eventualmente eseguirlo.
– Chat Manager: c’è bisogno a questo punto di un agente a capo della Group Chat, che sulla base della descrizione di ogni singolo agente, sappia chi interrogare per soddisfare le richieste dell’utente.

Conclusioni
Nel concludere il nostro esame dell’applicazione multi-agente sviluppata con AutoGen, emergono con chiarezza i vantaggi offerti dalla modularità e dalla scalabilità del sistema.
La progettazione modulare permette agli agenti di operare indipendentemente, facilitando la manutenzione e l’aggiornamento di specifiche funzioni senza impattare l’intero sistema.
La scalabilità, d’altro canto, assicura che l’applicazione possa crescere e adattarsi alle crescenti esigenze di analisi dati, integrando nuovi agenti o espandendo le capacità degli esistenti con minimo sforzo. Questo approccio non solo ottimizza le risorse e riduce i tempi di sviluppo, ma apre anche la strada a future innovazioni in ambito di elaborazione automatica dei dati.
Ovviamente non è tutto oro ciò che luccica, questo diventa evidente quando si utilizza Autogen con qualsiasi modello, specialmente con GPT-4 turbo, a causa dell’aspetto economico. Ogni interazione con l’agente comporta una chiamata API che ha un costo associato. Nel nostro caso specifico, il numero minimo di chiamate per una singola query è di quattro, se la query, inoltre, fosse particolarmente complessa, potrebbe causare difficoltà agli agenti e richiedere ulteriori elaborazioni, aumentando così i costi.
Se anche tu vuoi occuparti di importanti progetti di Ricerca&Sviluppo sull’Intelligenza Artificiale
dai un’occhiata alle nostre opportunità di lavoro e conosciamoci subito!


