Passa al contenuto principale

Crea un assistente AI autonomo con Mosaic AI Agent Framework

 Build an Autonomous AI Assistant with Mosaic AI Agent Framework

Pubblicato: 26 novembre 2024

AI14 min di lettura

Summary

  • I modelli linguistici di grandi dimensioni stanno rivoluzionando il modo in cui interagiamo con la tecnologia sfruttando l'elaborazione avanzata del linguaggio naturale per eseguire attività complesse.
  • Gli agenti LLM sono sistemi AI avanzati di nuova generazione progettati per eseguire attività complesse che richiedono ragionamento, pianificazione, memorizzazione di conversazioni passate e utilizzo di vari strumenti per adattare le risposte.
  • Il Mosaic AI Agent Framework consente agli sviluppatori di creare sistemi di agenti su scala di produzione tramite qualsiasi LLM, consentendo la personalizzazione e consentendo agli agenti di prendere decisioni autonome.

I modelli linguistici di grandi dimensioni stanno rivoluzionando il modo in cui interagiamo con la tecnologia sfruttando l'elaborazione avanzata del linguaggio naturale per svolgere attività complesse. Negli ultimi anni, abbiamo assistito a modelli LLM all'avanguardia che abilitano una vasta gamma di applicazioni innovative. L'anno scorso ha segnato una svolta verso RAG (Retrieval Augment Generation), in cui gli utenti hanno creato chatbot AI interattivi alimentando gli LLM con i dati della loro organizzazione (tramite embedding vettoriali).  

Ma stiamo solo grattando la superficie. Sebbene potenti, la "Retrieval Augment Generation" limita la nostra applicazione al recupero di conoscenze statiche. Immagina un tipico addetto al servizio clienti che non solo risponde a domande dai dati interni, ma intraprende anche azioni con un intervento umano minimo. Con gli LLM, possiamo creare applicazioni di processo decisionale completamente autonome che non solo rispondono, ma agiscono anche in base alle richieste degli utenti. Le possibilità sono infinite: dall'analisi dei dati interni alle ricerche sul web e oltre. 

La comprensione semantica e la capacità linguistica dei modelli linguistici di grandi dimensioni ci consentono di creare applicazioni di processo decisionale completamente autonome che possono non solo rispondere, ma anche "agire" in base alle richieste degli utenti.

Databricks Mosaic AI Agent Framework: 

Databricks ha lanciato il framework Mosaic AI Agent che consente agli sviluppatori di creare un framework di agenti su scala di produzione tramite qualsiasi LLM. Una delle capacità principali è la creazione di strumenti su Databricks progettati per aiutare a costruire, distribuire e valutare agenti AI di qualità di produzione come applicazioni Retrieval Augmented Generation (RAG) e molto altro. Gli sviluppatori possono creare e registrare agenti utilizzando qualsiasi libreria e integrarli con MLflow. Possono parametrizzare gli agenti per sperimentare e iterare rapidamente sullo sviluppo. Il tracciamento degli agenti consente agli sviluppatori di registrare, analizzare e confrontare le tracce per eseguire il debug e comprendere come l'agente risponde alle richieste.

In questa prima parte del blog, esploreremo gli agenti, i loro componenti principali e costruiremo un agente AI autonomo multi-turno per il servizio clienti per un'azienda di vendita al dettaglio online con uno dei modelli Databricks Foundational (open source) più performanti sulla Piattaforma. Nella prossima serie del blog, esploreremo il framework multi-agente e costruiremo un agente multi-step reasoning avanzato per la stessa applicazione aziendale. 

Cos'è un Agente LLM?

Gli agenti LLM sono sistemi AI avanzati di nuova generazione progettati per eseguire attività complesse che richiedono ragionamento. Possono pensare in anticipo, ricordare conversazioni passate e utilizzare vari strumenti per adattare le loro risposte in base alla situazione e allo stile necessario. 

Una progressione naturale di RAG, gli Agenti LLM sono un approccio in cui i modelli linguistici di grandi dimensioni all'avanguardia sono potenziati con sistemi/strumenti o funzioni esterne per prendere decisioni autonome. In un sistema AI composto, un agente può essere considerato un motore decisionale potenziato con memoria, capacità di introspezione, utilizzo di strumenti e molto altro. Pensali come motori decisionali super intelligenti in grado di apprendere, ragionare e agire in modo indipendente: l'obiettivo finale della creazione di un'applicazione AI veramente autonoma.

Componenti Principali: 

I componenti chiave di un'applicazione agentica includono: 

  • LLM/Agente Centrale: Funziona come componente decisionale centrale per il flusso di lavoro.
  • Memoria: Gestisce la conversazione passata e le risposte precedenti dell'agente.
  • Pianificazione: Un componente fondamentale dell'agente nella pianificazione delle attività future da eseguire.
  • Strumenti: Funzioni e programmi per eseguire determinati compiti e interagire con l'LLM principale. 

Agente Centrale:  

L'elemento primario di un framework di agenti è un modello linguistico di grandi dimensioni pre-addestrato per scopi generali che può elaborare e comprendere i dati. Questi sono generalmente modelli pre-addestrati ad alte prestazioni; l'interazione con questi modelli inizia creando prompt specifici che forniscono un contesto essenziale, guidandolo su come rispondere, quali strumenti utilizzare e gli obiettivi da raggiungere durante l'interazione.

Un framework di agenti consente anche la personalizzazione, permettendoti di assegnare al modello un'identità distinta. Ciò significa che puoi adattare le sue caratteristiche e competenze per allinearti meglio alle richieste di un particolare compito o interazione. In definitiva, un agente LLM fonde perfettamente capacità avanzate di elaborazione dei dati con funzionalità personalizzabili, rendendolo uno strumento inestimabile per gestire attività diverse con precisione e flessibilità.

Memoria:  

La memoria è un componente importante di un'architettura agentica. È uno spazio di archiviazione temporaneo che l'agente utilizza per memorizzare le conversazioni. Questa può essere una memoria di lavoro a breve termine in cui l'agente LLM detiene le informazioni correnti con contesto immediato e cancella la memoria una volta completato il compito. Questo è temporaneo. 

D'altra parte, abbiamo la memoria a lungo termine (a volte chiamata memoria episodica) che conserva conversazioni di lunga durata e può aiutare l'agente a comprendere schemi, apprendere da compiti precedenti e richiamare informazioni per prendere decisioni migliori nelle interazioni future. Questa conversazione viene generalmente memorizzata in un database esterno. (es. - database vettoriale). 

La combinazione di queste due memorie consente a un agente di fornire risposte personalizzate e di lavorare meglio in base alle preferenze dell'utente nel tempo. Ricorda, non confondere la memoria dell'agente con la memoria conversazionale del nostro LLM. Entrambi servono scopi diversi.   

Planner: 

Il componente successivo di un agente LLM è la capacità di pianificazione, che aiuta a scomporre compiti complessi in attività gestibili ed esegue ogni attività. Durante la formulazione del piano, il componente planner può utilizzare più tecniche di ragionamento, come il ragionamento chain-of-thought o il ragionamento gerarchico, come gli alberi decisionali, per decidere quale percorso seguire. 

Una volta creato il piano, gli agenti lo esaminano e ne valutano l'efficacia attraverso vari meccanismi di feedback interni. Alcuni metodi comuni includono ReAct e Reflexion. Questi metodi aiutano gli LLM a risolvere compiti complessi passando attraverso una sequenza di pensieri e osservando i risultati. Il processo si ripete per un miglioramento iterativo. 

In un tipico chatbot multi-turno con un singolo agente LLM, la pianificazione e l'orchestrazione sono eseguite da un singolo modello linguistico, mentre in un framework multi-agente, agenti separati potrebbero eseguire compiti specifici come routing, pianificazione, ecc. Discuteremo ulteriormente di questo nella prossima parte del blog sui framework multi-agente.   

Strumenti: 

Gli strumenti sono i blocchi costitutivi degli agenti, eseguono diversi compiti come guidato dall'agente centrale. Gli strumenti possono essere vari esecutori di compiti in qualsiasi forma (chiamate API, funzioni Python o SQL, ricerca web, codifica, spazio Databricks Genie o qualsiasi altra cosa tu voglia che lo strumento funzioni. Con l'integrazione degli strumenti, un agente LLM esegue compiti specifici tramite flussi di lavoro, raccogliendo osservazioni e informazioni necessarie per completare sotto-compiti. 

Quando costruiamo queste applicazioni, una cosa da considerare è quanto sia lunga l'interazione. È facile esaurire il limite di contesto degli LLM quando l'interazione è di lunga durata e c'è la possibilità di dimenticare le conversazioni precedenti. Durante una lunga conversazione con un utente, il flusso di controllo decisionale può essere single-threaded, multi-threaded in parallelo o in loop. Più complessa diventa la catena decisionale, più complessa sarà la sua implementazione. 

Nella Figura 1 di seguito, un singolo LLM ad alte prestazioni è la chiave per il processo decisionale. In base alla domanda dell'utente, comprende quale percorso deve seguire per instradare il flusso decisionale. Può utilizzare più strumenti per eseguire determinate azioni, archiviare risultati intermedi nella memoria, eseguire una pianificazione successiva e infine restituire il risultato all'utente.

Un singolo LLM ad alte prestazioni è la chiave per il processo decisionale. In base alla domanda dell'utente, comprende quale percorso deve seguire per instradare il flusso decisionale. Può utilizzare più strumenti per eseguire determinate azioni, archiviare risultati intermedi nella memoria, eseguire una pianificazione successiva e infine restituire il risultato all'utente.

Agente Conversazionale per la Vendita al Dettaglio Online: 

Per questo blog, creeremo un assistente AI autonomo per il servizio clienti per un rivenditore di elettronica online tramite Mosaic AI Agent Framework. Questo assistente interagirà con i clienti, risponderà alle loro domande ed eseguirà azioni in base alle istruzioni dell'utente. Possiamo introdurre un intervento umano per verificare la risposta dell'applicazione. Utilizzeremo gli strumenti di Mosaic AI per creare e registrare i nostri strumenti all'interno di Unity Catalog. Di seguito è riportata la relazione tra entità (dati sintetici) che abbiamo creato per il blog.

Entity relationship diagram

Di seguito è riportato il semplice diagramma del flusso di processo per il nostro caso d'uso.

Simple agent framework process flow

Snippet di codice: (SQL) Dettagli ordine

Il codice seguente restituisce i dettagli dell'ordine in base a un ID ordine fornito dall'utente. Notare la descrizione del campo di input e il campo comment della funzione. Non saltare i commenti della funzione e dei parametri, che sono fondamentali affinché i LLM possano chiamare correttamente funzioni/strumenti.

I commenti sono utilizzati come parametri di metadati dal nostro LLM centrale per decidere quale funzione eseguire in base a una query dell'utente. Commenti errati o insufficienti possono potenzialmente esporre il LLM all'esecuzione di funzioni/strumenti errati.

Snippet di codice: (SQL) Dettagli spedizione 

Questa funzione restituisce i dettagli di spedizione dalla tabella delle spedizioni dato un ID. Similmente a quanto sopra, i commenti e i dettagli dei metadati sono importanti affinché l'agente possa interagire con lo strumento.

Snippet di codice: (Python) 

Allo stesso modo, puoi creare qualsiasi funzione Python e utilizzarla come strumento o funzione. Può essere registrata all'interno di Unity Catalog in modo simile e fornirti tutti i vantaggi menzionati sopra. L'esempio seguente è dello strumento di ricerca web che abbiamo creato e utilizzato come endpoint per la chiamata del nostro agente.

Per il nostro caso d'uso, abbiamo creato diversi strumenti che eseguono varie attività come segue:

tools performing tasks

return_order_detailsRestituisce i dettagli dell'ordine dato un ID ordine
return_shipment_detailsRestituisce i dettagli della spedizione fornito un ID spedizione
return_product_detailsRestituisce i dettagli del prodotto dato un ID prodotto
return_product_review_detailsRestituisce il riepilogo delle recensioni dai dati non strutturati
search_toolCerca sul web in base a parole chiave e restituisce i risultati
process_orderElabora una richiesta di rimborso in base a una query dell'utente

Unity Catalog UCFunctionToolkit :
Utilizzeremo l'orchestratore LangChain per costruire il nostro framework Chain in combinazione con Databricks UCFunctionToolkit e modelli API fondamentali. Puoi utilizzare qualsiasi framework di orchestrazione per costruire i tuoi agenti, ma abbiamo bisogno dell'UCFunctionToolkit per costruire il nostro agente con le nostre funzioni UC (strumenti).

d

Creazione dell'Agente:

Ora che i nostri strumenti sono pronti, li integreremo con un modello Fondamentale di grandi dimensioni ospitato su Databricks. Nota che puoi anche utilizzare il tuo modello personalizzato o modelli esterni tramite AI Gateway. Ai fini di questo blog, utilizzeremo databricks-meta-llama-3-1-70b-instruct ospitato su Databricks.

Questo è un modello open-source di Meta ed è stato configurato in Databricks per utilizzare efficacemente gli strumenti. Nota che non tutti i modelli sono equivalenti e modelli diversi avranno diverse capacità di utilizzo degli strumenti.

Report

Il playbook sull'AI agentiva per l'enterprise

Ora che il nostro LLM è pronto, useremo l'esecutore di agenti LangChain per unire tutto questo e costruire un agente:

Vediamo come funziona in azione con una domanda di esempio:

Come cliente, immagina di iniziare a chiedere all'agente il prezzo di un particolare prodotto, “Breville Electrical Kettle”, nella loro azienda e sul mercato per vedere le offerte competitive. 

In base alla domanda, l'agente ha capito di dover eseguire due funzioni/strumenti:

  • return_product_price_details Per il prezzo interno
  • web_search_tool – Per la ricerca sul web.

Lo screenshot seguente mostra l'esecuzione sequenziale dei diversi strumenti in base a una domanda dell'utente.

Infine, con la risposta di queste due funzioni/strumenti, l'agente sintetizza la risposta e la fornisce di seguito. L'agente ha compreso autonomamente le funzioni da eseguire e ha risposto alla domanda dell'utente per tuo conto. Abbastanza carino!

Esecuzione sequenziale dei diversi strumenti in base a una domanda dell'utente.

Puoi anche vedere la traccia end-to-end dell'esecuzione dell'agente tramite MLflow Trace. Questo aiuta enormemente il tuo processo di debug e ti fornisce chiarezza su come ogni passaggio viene eseguito.

Traccia end-to-end dell'esecuzione dell'agente tramite MLflow Trace

Memoria:

Uno dei fattori chiave per la creazione di un agente è il suo stato e la sua memoria. Come accennato in precedenza, ogni funzione restituisce un output e, idealmente, è necessario ricordare la conversazione precedente per avere una conversazione multi-turno. Questo può essere ottenuto in diversi modi tramite qualsiasi framework di orchestrazione. Per questo caso, useremmo LangChain Agent Memory per costruire un bot conversazionale multi-turno.

Vediamo come possiamo ottenere questo risultato tramite LangChain e Databricks FM API. Utilizzeremmo l'agente esecutore precedente e aggiungeremmo una memoria aggiuntiva con LangChain ChatMessageHistory eRunnableWithMessageHistory.

Qui stiamo usando una memoria in-ram per scopi dimostrativi. Una volta istanziata la memoria, la aggiungiamo al nostro agente esecutore e creiamo un agente con la cronologia della chat di seguito. Vediamo come appaiono le risposte con il nuovo agente.

Ora che abbiamo definito l'agente esecutore, proviamo a porre alcune domande di follow-up all'agente e vediamo se ricorda la conversazione. Presta molta attenzione a session_id; questo è il thread di memoria che contiene la conversazione in corso.

cronologia chat agente

cronologia chat agente

Bene! Ricorda tutte le conversazioni precedenti dell'utente e può eseguire domande di follow-up in modo abbastanza efficace! Ora che abbiamo capito come creare un agente e mantenere la sua cronologia, vediamo come apparirebbe in azione l'agente di chat conversazionale end-to-end.

Utilizzeremo Databricks AI Playground per vedere come appare end-to-end. Databricks AI Playground è un ambiente simile a una chat in cui puoi testare, chiedere e confrontare più LLM. Ricorda che puoi anche servire l'agente che hai appena creato come endpoint di servizio e usarlo nel Playground per testare le prestazioni del tuo agente.

Chatbot Conversazionale Multi-turno:

Abbiamo implementato l'agente AI utilizzando il framework Databricks Mosaic AI Agent Framework, Databricks Foundational Model API e l'orchestratore LangChain.

Il video seguente illustra una conversazione tra l'agente multi-turno che abbiamo creato utilizzando Meta-llama-3-1-70b-instruct e i nostri strumenti/funzioni UC in Databricks.

Mostra il flusso di conversazione tra un cliente e il nostro agente che seleziona dinamicamente gli strumenti appropriati e li esegue in base a una serie di query dell'utente per fornire un supporto senza interruzioni al nostro cliente.

Ecco un flusso di conversazione di un cliente con il nostro agente appena creato per il nostro negozio di vendita al dettaglio online.

Flusso di conversazione di un cliente con il nostro agente appena creato per il nostro negozio di vendita al dettaglio online.

Dall'inizializzazione di una domanda sullo stato dell'ordine con il nome del cliente all'effettuazione di un ordine, tutto è stato fatto autonomamente senza alcun intervento umano.

demo agente

Conclusione:

E questo è tutto! Con poche righe di codice, abbiamo sbloccato la potenza di agenti multi-turno autonomi in grado di conversare, ragionare e agire per conto dei tuoi clienti. Il risultato? Una significativa riduzione delle attività manuali e un grande aumento dell'automazione. Ma stiamo solo iniziando! Il Mosaic AI Agent Framework ha aperto le porte a un mondo di possibilità in Databricks.

Resta sintonizzato per la prossima puntata, dove porteremo le cose al livello successivo con l'IA multi-agente: pensa a più agenti che lavorano in armonia per affrontare anche i compiti più complessi. Per concludere, ti mostreremo come distribuire tutto tramite endpoint MLflow e model-serving, rendendo facile costruire applicazioni agenti su scala di produzione senza compromettere la governance dei dati. Il futuro dell'IA è qui, ed è a portata di clic.

 

Carte e Materiali di Riferimento:

Mosaic AI: Costruisci e distribuisci sistemi AI composti di qualità di produzione 

Annuncio del Mosaic AI Agent Framework e della valutazione degli agenti | Blog Databricks 

Mosaic AI Agent Framework | Databricks 

Il passaggio da modelli a sistemi AI composti – The Berkeley Artificial Intelligence Research Blog 

React: Sinergia tra ragionamento e azione nei modelli linguistici 

Reflexion: Agenti linguistici con apprendimento per rinforzo verbale 

Agenti di riflessione 

Agenti LLM: la guida definitiva | SuperAnnotate 

Memoria negli agenti LLM - DEV Community 

Una rassegna sugli agenti autonomi basati su modelli linguistici di grandi dimensioni arXiv:2308.11432v5 [cs.AI] 4 apr 2024 

Come eseguire più agenti sullo stesso thread

(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale

Non perdere mai un post di Databricks

Iscriviti al nostro blog e ricevi gli ultimi post direttamente nella tua casella di posta elettronica.