L'orchestrazione degli agenti LLM si riferisce al processo di gestione e coordinamento delle interazioni tra un modello linguistico di grandi dimensioni (LLM) e vari strumenti, API o processi per eseguire attività complesse all'interno dei sistemi di AI. Si tratta di strutturare i workflow in cui un agente AI, alimentato dall'intelligenza artificiale, funge da motore di ragionamento o responsabile decisionale centrale, orchestrando le sue azioni in base agli input, al contesto e agli output di sistemi esterni. Utilizzando un framework di orchestrazione, gli LLM possono integrarsi perfettamente con API, database e altre applicazioni AI, abilitando funzionalità come chatbot e strumenti di automazione. I framework di agenti open source migliorano ulteriormente l'adattabilità di questi sistemi, rendendo gli LLM più efficaci negli scenari del mondo reale.
Molte persone fraintendono la differenza tra l'orchestrazione degli LLM e l'orchestrazione degli agenti LLM. La seguente illustrazione evidenzia le principali differenze:
In questo tutorial imparerai a creare un agente autonomo basato su modelli linguistici di grandi dimensioni (LLM) utilizzando i modelli IBM® Granite e LangChain. Esploreremo come gli agenti utilizzano componenti quali memoria, pianificazione e azione per eseguire attività intelligenti. Implementerai anche un sistema pratico che elabora il testo di un libro, risponde alle domande in modo dinamico e valuta le sue prestazioni utilizzando metriche di accuratezza come BLEU, precisione, richiamo e punteggio F1.
Il framework presentato nella figura 1 fornisce una progettazione olistica per agenti autonomi basati su modelli linguistici di grandi dimensioni (LLM), enfatizzando l'interazione tra le componenti chiave: profilo, memoria, pianificazione e azione. Ogni componente rappresenta una fase critica nello sviluppo di un agente autonomo in grado di ragionare, prendere decisioni e interagire con ambienti dinamici.1
1. Profilo: definizione dell'identità dell'agente
Il profilo conferisce all'agente la sua identità mediante l'embedding di informazioni quali dati demografici, tratti della personalità e contesto sociale. Questo processo garantisce che l'agente possa interagire in modo personalizzato. I profili possono essere creati manualmente, generati da modelli gen AI come i modelli IBM Granite o il GPT (generative pretrained transformer) di OpenAI, oppure possono essere allineati con set di dati specifici per soddisfare i requisiti delle attività. Utilizzando i prompt engineering, i profili possono essere perfezionati dinamicamente per ottimizzare le risposte. Inoltre, nell'ambito dell'orchestrazione multiagente, il profilo aiuta a definire ruoli e comportamenti, garantendo un coordinamento perfetto tra algoritmi AI e sistemi di processo decisionale.
2. Memoria: memorizzare e utilizzare il contesto
La memoria aiuta l'agente a conservare e recuperare le interazioni passate, consentendo risposte contestuali. Può essere unificata (tutti i dati in un unico posto) o ibrida (strutturata e non strutturata). Le operazioni, tra cui lettura, scrittura e riflessione, consentono all'agente di imparare dall'esperienza e fornire output coerenti e informati. Una memoria ben strutturata migliora l'orchestrazione multiagente garantendo che diversi agenti, compresi agenti specializzati progettati per un'attività specifica, possano condividere e recuperare i dati rilevanti in modo efficiente. Nei framework come AutoGen e Crew AI, la memoria svolge un ruolo cruciale nel mantenere la continuità all'interno dell'ecosistema degli agenti che collaborano, garantendo un coordinamento perfetto e un'esecuzione ottimizzata delle attività.
3. Pianificazione: definizione di azioni strategiche
La componente di pianificazione consente all'agente di elaborare strategie per raggiungere obiettivi. Può seguire passaggi predefiniti o adattarsi dinamicamente in base al feedback dell'ambiente, degli esseri umani o dello stesso LLM. Integrando algoritmi AI e sfruttando una base di conoscenze, la pianificazione può essere ottimizzata per migliorare l'efficienza del ragionamento e la precisione nella risoluzione dei problemi. Nelle applicazioni LLM, la pianificazione svolge un ruolo cruciale nel garantire che il natural language understanding e il processo decisionale siano in linea con gli obiettivi dell'agente. Inoltre, le tecniche retrieval-augmented migliorano la capacità dell'agente di accedere alle informazioni pertinenti in modo dinamico, migliorando la precisione della risposta. Questa flessibilità garantisce che l'agente rimanga efficace in scenari mutevoli, specialmente nell'orchestrazione multiagente, in cui vari agenti coordinano i loro piani per raggiungere obiettivi complessi mantenendo la scalabilità per la gestione di attività ampie e diverse.
4. Azione: esecuzione delle decisioni
Le azioni sono il modo in cui l'agente interagisce con il mondo, sia completando compiti, raccogliendo informazioni o comunicando. Utilizza la memoria e la pianificazione per guidare l'esecuzione, utilizza strumenti quando necessario e adatta il suo stato interno in base ai risultati per un miglioramento continuo. L'ottimizzazione dell'algoritmo di esecuzione delle azioni garantisce l'efficienza, soprattutto quando si integrano modelli di ragionamento basati su GPTe tecniche di gen AI per un processo decisionale in tempo reale.
Combinando queste componenti, il framework trasforma gli LLM in agenti adattabili in grado di ragionare, apprendere ed eseguire attività in modo autonomo. Questo design modulare lo rende ideale per applicazioni come il servizio clienti, l'assistenza alla ricerca e la risoluzione creativa dei problemi.
Questo tutorial dimostra la creazione di un agente di conoscenza interrogabile progettato per elaborare documenti di testo di grandi dimensioni (come libri) e rispondere con precisione alle domande degli utenti. Utilizzando i modelli IBM Granite e LangChain, l'agente è sviluppato seguendo i principi delineati nel framework per gli agenti autonomi basati su LLM. I componenti del framework si allineano perfettamente con il workflow dell'agente per garantire adattabilità e risposte intelligenti.
Comprendiamo come si applica il framework nel nostro caso d'uso.
Profilo: l'agente è progettato con un profilo di "knowledge assistant", incentrato sulle attività di riepilogo, risposta alle domande e ragionamento. Il suo contesto è personalizzato per elaborare un documento specifico (ad esempio, Le avventure di Sherlock Holmes).
Memoria: l'agente utilizza la memoria ibrida con l'embedding di parti del libro in un database vettoriale FAISS. Questa capacità consente di recuperare dinamicamente il contesto pertinente durante le query. Le operazioni di memoria come la lettura (recupero) e la scrittura (aggiornamento degli embedding) assicurano che l'agente possa adattarsi alle nuove query nel tempo.
Pianificazione: la risoluzione delle query implica un ragionamento a percorso singolo. L'agente recupera parti di testo pertinenti, genera risposte utilizzando gli LLM Granite di IBM e valuta l'accuratezza dell'output. La pianificazione senza feedback garantisce la semplicità, mentre la modularità del sistema consente di incorporare i cicli di feedback nelle iterazioni future.
Azione: l'agente esegue la risoluzione delle query integrando il recupero della memoria e l'elaborazione LLM. Completa attività come la generazione di risposte, il calcolo delle metriche di precisione (BLEU, precisione, richiamo e punteggio F1) e la visualizzazione dei risultati per l'interpretazione da parte dell'utente. Questi output riflettono la capacità dell'agente di agire in modo intelligente sulla base del ragionamento e della pianificazione.
Per creare un progetto watsonx.ai è necessario un account IBM Cloud .
Sebbene sia possibile scegliere tra diversi strumenti, questo tutorial illustra come configurare un account IBM utilizzando un Jupyter Notebook.
Questo passaggio apre un ambiente notebook in cui è possibile copiare il codice da questo tutorial. In alternativa, puoi scaricare questo notebook sul tuo sistema locale e caricarlo nel tuo progetto watsonx.ai come asset. Per visualizzare altri tutorial su Granite, visita l'IBM Granite Community. Questo tutorial è disponibile anche su GitHub.
Per lavorare con il framework LangChain e integrare IBM WatsonXLLM, dobbiamo installare alcune librerie essenziali. Iniziamo installando i pacchetti richiesti:
Nota: se stai usando una vecchia versione di
Nella cella di codice precedente,
Questo passaggio garantisce che l'ambiente sia pronto per le attività future.
Ora che abbiamo installato le librerie necessarie, importiamo i moduli necessari per questo tutorial:
Nella cella di codice precedente,
Questo passaggio configura tutti gli strumenti e i moduli necessari per elaborare testo, creare embedding, memorizzarli in un database vettoriale e interagire con WatsonxLLM di IBM.
Questo codice configura le credenziali per l'accesso all'API IBM Watson machine learning (WML) e garantisce che l'ID del progetto sia configurato correttamente.
Questo codice inizializza IBM WatsonxLLM per l'utilizzo nell'applicazione:
Questo passaggio prepara WatsonxLLM per la generazione di risposte nel workflow.
Per elaborare il testo di un documento, abbiamo bisogno di una funzione in grado di leggerne ed estrarne il contenuto. La seguente funzione è progettata per gestire file di testo normale:
Questa funzione,
L'intero contenuto del file viene letto in una variabile denominata
Questa funzione ci consente di elaborare il file di input (Le avventure di Sherlock Holmes) ed estrarne il contenuto per ulteriori operazioni come la suddivisione in blocchi e l'embedding del testo. Garantisce che il testo grezzo sia immediatamente disponibile per l'analisi.
Per elaborare e indicizzare in modo efficiente blocchi di testo di grandi dimensioni, è necessario dividere il testo in blocchi più piccoli e gestibili. La funzione seguente gestisce questa attività:
I valori del
Questa funzione garantisce la continuità contestuale tra i blocchi. La funzione utilizza il
È essenziale quando si lavora con documenti di grandi dimensioni, poiché i modelli linguistici hanno spesso limiti di token e non possono elaborare i testi lunghi direttamente.
Per consentire una ricerca semantica efficiente, dobbiamo convertire blocchi di testo in embedding vettoriali e memorizzarli in un indice ricercabile. Questo passaggio utilizza gli embedding FAISS e HuggingFace per creare l'indice vettoriale, che costituisce la base per il recupero di informazioni pertinenti in base alle query.
I valori del
Per prima cosa inizializza un modello HuggingFaceEmbeddings
La funzione utilizza quindi
Il database vettoriale risultante viene restituito e verrà utilizzato per trovare parti pertinenti in base alle richieste degli utenti, costituendo la colonna portante del processo di ricerca e recupero dell'agente.
Questo passaggio prevede l'interrogazione dell'indice vettoriale per recuperare informazioni pertinenti e l'utilizzo dell'LLM Granite di IBM per generare una risposta raffinata. Integrando la ricerca per somiglianza e il ragionamento LLM, la funzione fornisce un processo di risoluzione delle query dinamico e intelligente.
I valori del
Esegue innanzitutto una ricerca per similarità sull'indice vettoriale per recuperare i blocchi (o parti) di testo più pertinenti. Questi blocchi, denominati
La funzione crea quindi un prompt combinando la query e il contesto recuperato. Questo prompt viene passato
Durante tutto il processo, passaggi intermedi come quelli di
Infine, la funzione restituisce un dizionario contenente tutte le componenti, inclusi il processo di pensiero, l'azione intrapresa, l'osservazione recuperata e la risposta finale.
Questo passaggio è critico per trasformare il recupero dei dati non elaborati in informazioni attuabili e significative utilizzando le capacità di ragionamento dell'LLM.
Questo passaggio elabora dinamicamente più query, recupera le informazioni pertinenti e salva i risultati in un formato strutturato per l'analisi. La funzione integra funzionalità di query, strutturazione dei dati ed esportazione.
I valori del
Per ogni query, utilizza la funzione
Una volta elaborate tutte le query, l'elenco dei risultati viene convertito in un DataFrame pandas. Questo formato tabulare consente una facile analisi e visualizzazione dei risultati delle query. Il DataFrame viene stampato per la revisione e salvato come file CSV per un uso futuro.
Questo passaggio è essenziale per organizzare l'output in un formato intuitivo, consentendo attività a valle come la valutazione dell'accuratezza e la visualizzazione.
Questo passaggio combina tutti i passaggi precedenti in un unico workflow per elaborare un file di testo, rispondere alle query degli utenti e salvare i risultati in un formato strutturato. La
Comprendiamo come viene eseguito questo workflow:
Inserisci un file di testo: La variabile
Estrazione del testo:
Suddivisione del testo: il testo estratto viene suddiviso in blocchi più piccoli utilizzando la funzione
Creazione di un indice vettoriale: i blocchi di testo vengono convertiti in embedding e memorizzati in un indice
Definizione delle query: viene fornito un elenco di query di esempio, ciascuna pensata per recuperare informazioni specifiche dal testo. Sarà l'agente a rispondere a queste domande.
Query di processo: la funzione
Questo passaggio integra tutte le componenti del tutorial in un workflow coeso. Automatizza il processo dall'estrazione del testo alla risoluzione delle query, consentendoti di testare le funzionalità dell'agente ed esaminare i risultati in un formato strutturato.
Per eseguire il workflow, è sufficiente chiamare la funzione
Output
> Entering new AgentExecutor chain... Thought: The query 'What is the plot of 'A Scandal in Bohemia'?' requires context from the book to provide an accurate response. Action: Search FAISS Vector Store Action Input: "What is the plot of 'A Scandal in Bohemia'?" Observation: I. A SCANDAL IN BOHEMIA I. “I was aware of it,” said Holmes dryly. “The circumstances are of great delicacy, and every precaution has to be taken to quench what might grow to be an immense scandal and seriously compromise one of the reigning families of Europe. To speak plainly, the matter implicates the great House of Ormstein, hereditary kings of Bohemia.” “I was also aware of that,” murmured Holmes, settling himself down in his armchair and closing his eyes. Contents I. A Scandal in Bohemia II. The Red-Headed League III. A Case of Identity IV. The Boscombe Valley Mystery V. The Five Orange Pips VI. The Man with the Twisted Lip VII. The Adventure of the Blue Carbuncle VIII. The Adventure of the Speckled Band IX. The Adventure of the Engineer’s Thumb X. The Adventure of the Noble Bachelor XI. The Adventure of the Beryl Coronet XII. The Adventure of the Copper Beeches Thought: Combining retrieved context with the query to generate a detailed answer. /var/folders/4w/smh16qdx6l98q0534hr9v52r0000gn/T/ipykernel_2648/234523588.py:23: LangChainDeprecationWarning: The method `BaseLLM.__call__` was deprecated in langchain-core 0.1.7 and will be removed in 1.0. Use :meth:`~invoke` instead. final_answer = llm(prompt) Final Answer: Step 1: Identify the main characters and their roles. - Sherlock Holmes: The detective who is approached by a client with a delicate matter. - An unnamed client: A representative of the great House of Ormstein, hereditary kings of Bohemia, who seeks Holmes' help to prevent a potential scandal. Step 2: Understand the main issue or conflict. - The main issue is a delicate matter that, if exposed, could lead to a massive scandal and compromise one of the reigning families of Europe, specifically the House of Ormstein. Step 3: Ident > Finished chain. > Entering new AgentExecutor chain... Thought: The query 'Who is Dr. Watson, and what role does he play in the stories?' requires context from the book to provide an accurate response. Action: Search FAISS Vector Store Action Input: "Who is Dr. Watson, and what role does he play in the stories?" Observation: “Sarasate plays at the St. James’s Hall this afternoon,” he remarked. “What do you think, Watson? Could your patients spare you for a few hours?” “I have nothing to do to-day. My practice is never very absorbing.” “Try the settee,” said Holmes, relapsing into his armchair and putting his fingertips together, as was his custom when in judicial moods. “I know, my dear Watson, that you share my love of all that is bizarre and outside the conventions and humdrum routine of everyday life. You have shown your relish for it by the enthusiasm which has prompted you to chronicle, and, if you will excuse my saying so, somewhat to embellish so many of my own little adventures.” “My God! It’s Watson,” said he. He was in a pitiable state of reaction, with every nerve in a twitter. “I say, Watson, what o’clock is it?” “Nearly eleven.” “Of what day?” “Of Friday, June 19th.” “Good heavens! I thought it was Wednesday. It is Wednesday. What d’you want to frighten a chap for?” He sank his face onto his arms and began to sob in a high treble key. “I tell you that it is Friday, man. Your wife has been waiting this two days for you. You should be ashamed of yourself!” Thought: Combining retrieved context with the query to generate a detailed answer. Final Answer: Dr. Watson is a character in the Sherlock Holmes stories, written by Sir Arthur Conan Doyle. He is a former military surgeon who becomes the narrator and chronicler of Holmes' adventures. Watson is a close friend and confidant of Holmes, often accompanying him on cases and providing a more human perspective to the stories. He is known for his enthusiasm for the bizarre and unconventional, as well as his skill in recording the details of their investigations. Watson's role is crucial in presenting the narrative and offering insights into Holmes' character and methods. > Finished chain. Final DataFrame: Thought \ 0 The query 'What is the plot of 'A Scandal in B... 1 The query 'Who is Dr. Watson, and what role do... 2 The query 'Describe the relationship between S... 3 The query 'What methods does Sherlock Holmes u... Action \ 0 Search FAISS Vector Store 1 Search FAISS Vector Store 2 Search FAISS Vector Store 3 Search FAISS Vector Store Action Input \ 0 What is the plot of 'A Scandal in Bohemia'? 1 Who is Dr. Watson, and what role does he play ... 2 Describe the relationship between Sherlock Hol... 3 What methods does Sherlock Holmes use to solve... Observation \ 0 I. A SCANDAL IN BOHEMIA\n\n\nI.\n“I was aware ... 1 “Sarasate plays at the St. James’s Hall this a... 2 “You have really got it!” he cried, grasping S... 3 to learn of the case was told me by Sherlock H... Final Answer 0 Step 1: Identify the main characters and their... 1 Dr. Watson is a character in the Sherlock Holm... 2 Sherlock Holmes and Irene Adler have a profess... 3 Sherlock Holmes uses a variety of methods to s... Output saved to output.csv
Dopo l'esecuzione della funzione
Inoltre, i risultati di tutte le query sono stati strutturati in un DataFrame e salvati come
In questo processo, abbiamo combinato il recupero del testo con il ragionamento LLM per rispondere a query complesse sul libro. L'agente ha recuperato dinamicamente le informazioni pertinenti, ha utilizzato il contesto per generare risposte precise e ha organizzato l'output in un formato strutturato per una facile analisi.
Una volta creato il file output.csv, procederemo ora con la visualizzazione dei risultati delle query e delle relative metriche di accuratezza, fornendo informazioni più approfondite sulle prestazioni dell'agente.
Nella cella di codice seguente, carichiamo i risultati delle query salvati dal file
OUTPUT
Thought \ 0 The query 'What is the plot of 'A Scandal in B... 1 The query 'Who is Dr. Watson, and what role do... 2 The query 'Describe the relationship between S... 3 The query 'What methods does Sherlock Holmes u... Action \ 0 Search FAISS Vector Store 1 Search FAISS Vector Store 2 Search FAISS Vector Store 3 Search FAISS Vector Store Action Input \ 0 What is the plot of 'A Scandal in Bohemia'? 1 Who is Dr. Watson, and what role does he play ... 2 Describe the relationship between Sherlock Hol... 3 What methods does Sherlock Holmes use to solve... Observation \ 0 I. A SCANDAL IN BOHEMIA\n\n\nI.\n“I was aware ... 1 “Sarasate plays at the St. James’s Hall this a... 2 “You have really got it!” he cried, grasping S... 3 to learn of the case was told me by Sherlock H... Final Answer 0 Step 1: Identify the main characters and their... 1 Dr. Watson is a character in the Sherlock Holm... 2 Sherlock Holmes and Irene Adler have a profess... 3 Sherlock Holmes uses a variety of methods to s...
In questo codice, il DataFrame include componenti chiave come
Per creare visualizzazioni dei risultati delle query, importiamo le librerie necessarie:
Nota importante: se riscontri l'errore
Questo codice crea un grafico a barre orizzontali per confrontare le lunghezze delle osservazioni (contesto recuperato) e delle risposte (risposte generate) per ogni query. Questa visualizzazione fornisce insight sulla quantità di contesto utilizzata dall'agente rispetto alla lunghezza delle risposte generate.
Questa funzione,
Calcola la lunghezza dei caratteri sia delle osservazioni che delle risposte, aggiungendole come nuove colonne (
Il grafico a barre è codificato a colori per distinguere tra la lunghezza dell'osservazione e la lunghezza delle risposte e include etichette, una legenda e un titolo per maggiore chiarezza.
Questa visualizzazione aiuta ad analizzare l'equilibrio tra la dimensione del contesto recuperato e i dettagli della risposta generata, offrendo informazioni su come l'agente elabora le query e risponde ad esse.
Questo passaggio visualizza la quantità del testo totale elaborato dall'agente che è utilizzata nelle osservazioni (contesto recuperato) rispetto al testo rimanente. Per fornire una rappresentazione intuitiva della proporzione viene creato un grafico a torta.
I valori del
Questi dati vengono visualizzati in un grafico a torta, con etichette chiare per
Questa visualizzazione fornisce una panoramica di alto livello della quantità di testo utilizzata dall'agente come contesto durante l'elaborazione delle query, offrendo informazioni dettagliate sull'efficienza e il focus del processo di recupero.
Questo codice genera due nuvole per rappresentare visivamente le parole più frequenti nei
Questo codice genera due nuvole per rappresentare visivamente le parole più frequenti nei
Per creare una visualizzazione affiancata, vengono utilizzate delle sottotrame: la prima sottotrama mostra la nuvola di parole per
In questa sezione, valutiamo le prestazioni dell'agente utilizzando diverse metriche di precisione:
Prima di iniziare i test, importiamo le librerie necessarie per la valutazione dell'accuratezza.
Queste librerie includono strumenti per la corrispondenza delle parole chiave, il calcolo del punteggio BLEU, la precisione e la valutazione dei richiami. Assicurati di aver installato queste librerie nel tuo ambiente per evitare errori di importazione.
Questo test valuta quanto le risposte generate includono le parole chiave delle query. Utilizza
Questo test misura quanto le risposte generate corrispondano alle osservazioni recuperate.
La precisione e il richiamo sono calcolati per valutare la pertinenza e la completezza delle risposte. La precisione misura la percentuale di parole recuperate nella risposta che sono pertinenti, mentre il richiamo misura la percentuale di parole pertinenti nell'osservazione che appaiono nella risposta.
Queste metriche vengono aggiunte al DataFrame sotto le colonne
Il punteggio F1 combina precisione e richiamo in una metrica, fornendo una valutazione equilibrata di pertinenza e completezza. La formula per il punteggio F1 è:
I
Infine, una funzione di riepilogo aggrega tutte le metriche per fornire una panoramica delle prestazioni dell'agente. Calcola il numero totale di query, il conteggio e la percentuale di risposte accurate e i punteggi BLEU e F1 medi.
OUTPUT
Total Entries: 4 Accurate Entries: 4 (100.00%) Average BLEU Score: 0.04 Average F1 Score: 0.24
Questi test di accuratezza offrono una valutazione dettagliata della capacità dell'agente di generare risposte pertinenti e accurate. Ogni test si concentra su un aspetto specifico, dall'inclusione delle parole chiave alla somiglianza del testo e fino alla completezza delle risposte. Il riepilogo aggrega queste metriche per fornire una panoramica istantanea complessiva delle prestazioni.
Questo tutorial ti ha guidato nella creazione di un agente autonomo basato sull'LLM Granite di IBM e LangChain. A partire dall'estrazione del testo fino alla vettorializzazione e alla risoluzione delle query, abbiamo coperto l'intero processo di progettazione e implementazione di un agente funzionale basato su LLM. I passaggi chiave includevano la gestione della memoria con database vettoriale, l'elaborazione delle query e la generazione di risposte utilizzando Granite.
Abbiamo valutato le prestazioni dell'agente utilizzando metriche di precisione come la corrispondenza delle parole chiave, i punteggi BLEU, la precisione, il richiamo e i punteggi F1. Visualizzazioni come grafici a barre, grafici a torta e nuvole di parole hanno fornito ulteriori dettagli approfonditi sull'efficacia e il comportamento dell'agente.
Completando questo tutorial, hai imparato a progettare, testare e visualizzare le prestazioni di un agente LLM. Questa base può essere estesa per affrontare set di dati più complessi, migliorare la precisione ed esplorare caratteristiche avanzate come i sistemi multiagente.
Crea, implementa e gestisci assistenti e agenti AI potenti che automatizzano workflow e processi con l'AI generativa.
Costruisci il futuro della tua azienda con soluzioni AI di cui puoi fidarti.
I servizi di AI di IBM Consulting aiutano a reinventare il modo in cui le aziende lavorano con l'AI per la trasformazione.