Lanciarsi in Autogen Esplorare le basi di un framework multi-agente

Esplorare le basi di Autogen, un framework multi-agente

Introduzione

Imbarcati in un emozionante viaggio nel futuro dello sviluppo del software con ‘Lanciare in Autogen: Esplorando le basi di un Framework Multi-Agent’. Alla luce di ChatGPT di OpenAI, un regno specializzato noto come agenti LLM sta vivendo un aumento senza precedenti, rivoluzionando lo sviluppo degli agenti AI. Dall’automazione delle attività monotone alla risoluzione di sfide nella presa di decisioni dinamiche, gli agenti LLM stanno spingendo i confini di ciò che una volta era considerato impossibile.

Mentre entriamo nell’era dell’informatica spaziale, immaginiamo un mondo in cui i computer si fondono senza soluzione di continuità con la realtà e diventa fondamentale l’importanza degli agenti AI. Immaginate di istruire gli agenti attraverso parole e gesti mentre eseguono compiti con capacità di ragionamento e azione senza pari. Tuttavia, siamo all’alba della rivoluzione degli agenti AI, testimoniando la nascita di nuove infrastrutture, strumenti e framework che consentono agli agenti di affrontare compiti sempre più complessi. Autogen, un framework all’avanguardia per la creazione di sistemi di chat multi-agenti, occupa un posto centrale nella nostra esplorazione.

Unisciti a noi in questo articolo mentre sveliamo le complessità degli agenti AI nelle prime fasi della rivoluzione, approfondendo le capacità di Autogen e scoprendo come dare vita a queste entità intelligenti.

Obiettivi di Apprendimento

  • Comprendere cosa sono gli agenti LLM
  • Scoprire cosa è Autogen ed esplorare le basi della creazione di agenti con Autogen
  • Creare agenti con Autogen e API OpenAI
  • Esplorare i casi d’uso reali degli agenti LLM

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

Cosa sono gli agenti LLM?

I Language Models tradizionali sono bravi a fare molte cose, come la traduzione, la risposta alle domande, ecc. Tuttavia, la loro conoscenza e capacità sono limitate. È come un muratore senza i suoi attrezzi durante la costruzione di una casa. Tuttavia, è stato osservato che gli LLM possono ragionare e agire se gli vengono forniti gli strumenti necessari. La maggior parte degli LLM ha una conoscenza limitata del mondo, ma possiamo integrarli con informazioni da fonti personalizzate tramite richieste.

Possiamo realizzare ciò attraverso due metodi. Generazione potenziata da recupero e agenti LLM. In un RAG, alimentiamo i modelli con informazioni tramite pipeline personalizzate codificate manualmente. Ma con gli agenti, LLM, in base al suo ragionamento, utilizzerà uno strumento a sua disposizione. Ad esempio, il GPT-4 con uno strumento Serper recherà su Internet e risponderà di conseguenza, o può recuperare e analizzare la performance delle azioni quando ha accesso allo strumento di Yahoo Finance. Quindi, questa combinazione di LLM, strumenti e un framework per il ragionamento e l’azione è ciò che è un agente AI.

C’è stata una rapida crescita di piattaforme e strumenti per la creazione di agenti LLM. Autogen è uno di questi strumenti. Quindi, cerchiamo di capire cosa è Autogen e come creare agenti LLM con esso.

Cos’è Autogen?

Autogen è un tool open-source di Microsoft per la creazione di applicazioni multi-agenti robuste. Progettato sin dall’inizio tenendo conto della comunicazione tra agenti multipli. Ci consente di creare applicazioni LLM in cui agenti multipli conversano tra loro per trovare soluzioni ai problemi forniti. Gli agenti sono altamente personalizzabili, il che significa che possiamo guidarli nell’eseguire specifici compiti. Si integra anche bene con l’ecosistema di strumenti Langchain, il che significa che sfruttiamo gli strumenti Langchain esistenti per potenziare i nostri agenti.

Per svolgere compiti, Autogen fornisce diversi tipi di Agenti, come ad esempio:

  • Agente Assistente: Questo agente è responsabile dell’esecuzione di compiti come programmazione, revisione, ecc.
  • Agente di Proxy Utente: Come suggerisce il nome, questi agenti operano per conto degli utenti finali. Questo è responsabile dell’incorporamento degli umani nel ciclo degli agenti per guidare le conversazioni.
  • Agente Insegnabile: Questo agente è configurato per essere altamente insegnabile. Possiamo alimentare l’agente con informazioni esplicite che mancano negli LLM.

Servono solo un Assistente Agente e User Proxy Agents per la maggior parte dei nostri casi d’uso. Quindi, vediamo come possiamo configurare gli agenti con Autogen. Ci sono altri agenti come RetrieveAssistantAgent e RetrieveUserProxy agenti configurati per RAG.

Ecco un diagramma di un tipico flusso di lavoro multi-agente.

Costruire agenti con Autogen

Ora scopriamo come configurare gli agenti Autogen. Ma prima di tutto, impostiamo l’ambiente. Se il caso d’uso richiede l’esecuzione del codice, gli agenti lo eseguiranno nell’ambiente corrente e, secondo la documentazione ufficiale, è meglio farlo all’interno di un container. Per iniziare velocemente, puoi usare GitHub codespaces. Assicurati di installare “pyautogen”.

Al momento, Autogen supporta solo modelli OpenAI. Per utilizzare efficacemente gli agenti, dobbiamo configurare i nostri modelli. Possiamo configurare più modelli OpenAI e utilizzare quelli di cui abbiamo bisogno. Ci sono diversi modi per configurare i modelli, ma definiremo un file JSON.

File JSON

#OAI_CONFIG_LIST[    {        "model": "gpt-4",        "api_key": "<la tua chiave API OpenAI qui>"    },    {        "model": "gpt-4",        "api_key": "<la tua chiave API OpenAI di Azure qui>",        "base_url": "<la tua base API OpenAI di Azure qui>",        "api_type": "azure",        "api_version": "2023-07-01-preview"    },    {        "model": "gpt-3.5-turbo",        "api_key":  "<la tua chiave API OpenAI qui>"    }]

Ora, definisci una lista di configurazioni per i modelli.

import autogenconfig_list = autogen.config_list_from_json(    "OAI_CONFIG_LIST",    filter_dict={        "model": {            "gpt-3.5-turbo"        }    })

Questo metodo cercherà prima l’ambiente di OAI_CONFIG_LIST nella variabile. Se non riesce, cercherà il file JSON OAI_CONFIG_LIST nella directory corrente. filter_dict serve per filtrare i modelli in base a alcuni parametri, qui è impostato su modello.

Configurazione per LLM

Ora definiamo la configurazione per LLM. In questo esempio, useremo una funzione di tool di Jupyter Notebook per eseguire script Python per svolgere un semplice compito di tracciamento grafico.

llm_config = {    "functions": [        {            "name": "python",            "description": "esegui una cella in ipython e restituisci il risultato dell'esecuzione.",            "parameters": {                "type": "object",                "properties": {                    "cell": {                        "type": "string",                        "description": "Cella Python valida da eseguire.",                    }                },                "required": ["cell"],            },        },    ],    "config_list": config_list,    "timeout": 120,}

<pdefiniamo eseguire="" funzione="" gli="" ipython.

from IPython import get_ipythondef exec_python(cell):    ipython = get_ipython()    result = ipython.run_cell(cell)    log = str(result.result)    if result.error_before_exec is not None:        log += f"\n{result.error_before_exec}"    if result.error_in_exec is not None:        log += f"\n{result.error_in_exec}"    return log

Utilizzo dell’Assistente Agente e dell’User Proxy Agent

<pstiamo abbiamo="" agente="" agenti="" agenti.

chatbot = autogen.AssistantAgent(    name="chatbot",    system_message="Per i compiti di codifica, utilizza solo le funzioni che ti sono state fornite. \                    Rispondi TERMINATE quando il compito è terminato.",    llm_config=llm_config,)# crea un'istanza di UserProxyAgent con nome "user_proxy"user_proxy = autogen.UserProxyAgent(    name="user_proxy",    is_termination_msg=lambda x: x.get("content", "") and x.get("content", "").\                       rstrip().endswith("TERMINATE"),    human_input_mode="NEVER",    max_consecutive_auto_reply=10,    code_execution_config={"work_dir": "coding"},)

Il parametro UserProxyAgent ha un parametro human_input_mode, che inserisce effettivamente un essere umano nel loop dell’agente in base al suo valore. Quando impostato su ALWAYS, richiede l’input dopo ogni risposta; per TERMINATE, chiede solo alla fine dell’esecuzione e per NEVER, non richiede input dall’utente.

Registra le funzioni con il proxy utente.

user_proxy.register_function(    function_map={        "python": exec_python,    })

Ora, avvia gli agenti.

# avvia la conversazioneuser_proxy.initiate_chat(    chatbot,    message="traccia una curva per l'onda sinusoidale",)

L’esecuzione dell’agente mostrerà i log sul tuo sistema su cosa sta succedendo.

Log di esecuzione

Nel log di esecuzione sopra, puoi vedere che l’agente Assistant “chatbot” genera il codice, quindi viene eseguito e vengono trovati eventuali errori. Il proxy dell’utente quindi invia l’errore all’assistente e ancora una volta esegue il codice di soluzione, in questo caso, l’installazione di Matplotlib, e infine esegue il codice finale e restituisce l’output.

Possiamo anche estenderlo aggiungendo un altro agente Assistente alla conversazione, come un Critico o un Revisore. Questo aiuterà a personalizzare ulteriormente l’output. Ecco come puoi farlo.

critic = autogen.AssistantAgent(    name="Critic",    system_message="""Critic. Sei un assistente utile altamente \    specializzato nell'valutare la qualità di un \    codice di visualizzazione dato fornendo un punteggio da 1 (scadente) a 10 (buono)\     fornendo una chiara motivazione. \    DEVI CONSIDERARE LE MIGLIORI PRATICHE DI VISUALIZZAZIONE per ogni valutazione.\     In particolare, puoi valutare attentamente \    il codice nelle seguenti dimensioni: bug (bug): ci sono bug, errori logici, errori di sintassi o errori di battitura?\ Ci sono ragioni per cui il codice potrebbe non \riuscire a compilarsi? Come dovrebbe essere corretto? Se ESISTE un bug, il punteggio del bug DEVE essere inferiore a 5.- Trasformazione dati (trasformazione): i dati vengono trasformati \appropriatamente per il tipo di visualizzazione? Ad esempio, \i dati vengono filtrati in modo appropriato, aggregati o raggruppati\ se necessario? Se viene utilizzata un campo data, il campo data\ viene prima convertito in un oggetto data, ecc.?DEVI FORNIRE UN PUNTEGGIO per ciascuna delle dimensioni sopra.{bugs: 0, transformation: 0, compliance: 0, type: 0, encoding: 0, aesthetics: 0}Non suggerire codice. Infine, in base alla critica sopra, suggerisci un elenco concreto di azioni che il programmatore \dovrebbe intraprendere per migliorare il codice.""",    llm_config=llm_config,)groupchat = autogen.GroupChat(agents=[user_proxy, coder, critic], messages=[], max_round=12)manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)user_proxy.initiate_chat(manager, message="traccia una curva per l'onda sinusoidale inversa nel \                                           la regione -pi/2 a pi/2")

La precedente esecuzione aggiungerà un critico per suggerire miglioramenti al grafico e l’Assistente cercherà di generare codici conformi. Quando abbiamo bisogno di più di due agenti, utilizziamo un chat manager.

In questo esempio, abbiamo utilizzato GPT 3.5. Per compiti di codifica e ragionamento più complessi, è preferibile utilizzare GPT-4. Possiamo fare di più con meno agenti con modelli capaci come GPT-4. E anche, GPT-3.5 tende a rimanere bloccato in un loop, quindi GPT-4 è una scelta molto migliore per applicazioni più complesse. Inoltre, è in corso lo sviluppo di un nuovo tipo di EcoAssistant sperimentale (codice). Questo agente risolve il costo più elevato dell’utilizzo di modelli capaci come GPT-4 tramite una gerarchia di modelli. L’idea è avviare una conversazione con modelli economici e se non si raggiunge l’obiettivo finale, utilizzare quelli capaci ma costosi. Un beneficio significativo di questo approccio è l’effetto sinergico. Poiché gli agenti condividono un singolo database, i codici dei modelli più grandi possono essere richiamati successivamente dai modelli più piccoli. Migliorando così l’efficienza e riducendo i costi.

Casi d’uso reali

Il campo di applicazione degli agenti di intelligenza artificiale nel mondo reale è immenso. Molte aziende hanno iniziato a implementare agenti nei loro sistemi esistenti. Ecco quindi alcuni casi d’uso degli agenti di intelligenza artificiale che possono essere molto utili.

  • Agenti Personali: Uno dei più cruciali utilizzi di un agente di intelligenza artificiale sarebbe un assistente personale di tipo Jarvis su dispositivi elettronici che compie compiti basati su comandi di testo, voce o gesto.
  • Insegnanti di Intelligenza Artificiale: I modelli di chat possono fare solo così tanto. Ma un agente di intelligenza artificiale con strumenti può fare molto di più. Gli insegnanti di intelligenza artificiale in vari campi, come l’educazione, il diritto e la terapia, possono essere utili per molti utenti.
  • Software UX: L’esperienza utente del software può essere migliorata notevolmente implementando agenti efficienti. Invece di navigare manualmente e fare clic sui pulsanti per completare le azioni, gli agenti di intelligenza artificiale li completeranno automaticamente in base ai comandi vocali, come ordinare cibo, taxi, shopping, ecc.
  • Elaborazione Spaziale: Gli agenti di intelligenza artificiale saranno gli anticipatori dell’elaborazione spaziale, dove i computer tradizionali si mescolano senza soluzione di continuità con il mondo reale. Gli agenti possono elaborare i dati nell’ambiente circostante per estrarre informazioni utili e svolgere compiti complessi.

Conclusioni

Gli agenti di intelligenza artificiale stanno diventando sempre più popolari. Nel prossimo futuro, non ci sono dubbi che saranno integrati nella maggior parte dei sistemi software in un modo o nell’altro. Questa è ancora la fase più precoce dello sviluppo degli agenti, simile agli anni ’90 di internet. In poco tempo, ci saranno agenti molto migliori che risolveranno problemi nuovi. E le librerie e gli strumenti come Langchain continueranno a evolversi.

Punti Chiave

  • Autogen è un framework di applicazione multi-agente open-source di Microsoft.
  • Autogen ci consente di costruire senza soluzione di continuità un sistema multi-agente per risolvere compiti complessi.
  • Offre agenti assistenti e agenti utente di proxy per svolgere compiti come la generazione di codice, la generazione di testo, ecc.
  • Sebbene sia accettabile utilizzare GPT-3.5 per cose di base come la generazione di testi, compiti di codifica più complessi richiedono modelli capaci come GPT-4.

Domande Frequenti

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e vengono utilizzati a discrezione dell’autore.