Scroll Top
Via Antonio Amato, 20/22 84131 Salerno (SA)

Le infinite possibilità degli ambienti multi-agenti: Autogen

Le infinite possibilità di Autogen

(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.

Architettura multi-agente

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.

Aspetto interfaccia

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:

  1. 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:
Query dell’utente

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

Avvia la chat di gruppo

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.

  1. 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.
  2. 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:
File json risultante
  1. 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.
  2. 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.
  3. 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:
Grafico risultante
  1. 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.

Lista di configurazione

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.

Configurazione llm

– 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.

Agente assistant

– 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.

Agente graph maker

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

Agente csv maker

– 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.

Agente user proxy

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

Chat di gruppo

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.

Agente manager

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!

Questo sito utilizza cookies propri e si riserva di utilizzare anche cookie di terze parti per garantire la funzionalità del sito e per tenere conto delle scelte di navigazione.
Per maggiori dettagli e sapere come negare il consenso a tutti o ad alcuni cookie è possibile consultare la Cookie Policy.

USO DEI COOKIE

Se abiliti i cookie nella tabella sottostante, ci autorizzi a memorizzare i tuoi comportamenti di utilizzo sul nostro sito web. Questo ci consente di migliorare il nostro sito web e di personalizzare le pubblicità. Se non abiliti i cookie, noi utilizzeremo solo cookies di sessione per migliorare la facilità di utilizzo.

Cookie tecnicinon richiedono il consenso, perciò vengono installati automaticamente a seguito dell’accesso al Sito.

Cookie di statisticaVengono utilizzati da terze parti, anche in forma disaggregata, per la gestione di statistiche

Cookie di social networkVengono utilizzati per la condivisione di contenuti sui social network.

Cookie di profilazione pubblicitariaVengono utilizzati per erogare pubblicità basata sugli interessi manifestati attraverso la navigazione in internet.

AltriCookie di terze parti da altri servizi di terze parti che non sono cookie di statistica, social media o pubblicitari.