Agenti alimentati da Gemini Pro: sbloccare i flussi di lavoro agentici con LangTrace
Scopri come Gemini Pro e LangTrace sbloccano flussi di lavoro agentici per capacità avanzate di LLM. Esplora la pianificazione, l'utilizzo di strumenti esterni e il tracciamento per sistemi AI pronti per la produzione.
15 gennaio 2025
Sblocca il potere degli agenti guidati dall'AI con il modello sperimentale Gemini Pro. Scopri come questo modello linguistico all'avanguardia può integrare perfettamente strumenti e API esterni per affrontare compiti complessi, offrendo risposte complete e personalizzate. Esplora i vantaggi di questo approccio basato su agenti e sblocca nuove possibilità per i tuoi contenuti e flussi di lavoro.
Cos'è un Agente e come funziona?
Impostazione dell'ambiente
Creazione della pipeline RAG
Impostazione degli strumenti
Creazione dell'Agente
Interazione con l'Agente
Conclusione
Cos'è un Agente e come funziona?
Cos'è un Agente e come funziona?
Un agente è essenzialmente un modello di linguaggio su larga scala (LLM) con capacità aggiuntive, tra cui:
-
Pianificazione: L'agente può scomporre la query dell'utente e elaborare un piano completo per affrontarla.
-
Strumenti/API esterni: L'agente ha accesso a strumenti o API esterni che può utilizzare per eseguire il suo piano.
-
Memoria: L'agente tiene traccia di dove si trova nell'esecuzione del piano e di quali ulteriori passaggi deve compiere.
Nell'esempio fornito, l'agente utilizza il modello sperimentale Gemini 1.5 Pro come LLM e ha accesso a due strumenti:
-
RAG (Retrieval-Augmented Generation): Funge da base di conoscenza dell'agente, utilizzando il documento "Attention is All You Need".
-
Ricerca web: L'agente può cercare informazioni sul web per integrare le sue conoscenze.
Impostazione dell'ambiente
Impostazione dell'ambiente
Per iniziare, dobbiamo installare i pacchetti necessari e impostare le chiavi API richieste. Ecco come procederemo:
-
Installare i pacchetti: Installeremo il pacchetto Google Generative AI, LangChain, Tavly Python (il nostro motore di ricerca), FAISS (archivio vettoriale) e il SDK Python di LangTrace.
-
Importare i pacchetti: Importeremo lo splitter di testo a caratteri ricorsivi, il caricatore PDF, i risultati di ricerca di Tavly e il modello di embedding dell'intelligenza artificiale generativa di Google.
-
Impostare le chiavi API:
- Chiave API Tavly: Puoi ottenere la chiave API Tavly facendo clic sul link "ottieni chiave API" fornito nella descrizione del video.
- Chiave API Google: Puoi ottenere la chiave API Google dal tuo Google AI Studio.
- Chiave API LangTrace: Dovrai creare un account su LangTrace, una piattaforma di osservabilità open source per applicazioni LLM. Puoi quindi fare clic su "genera chiave API" per ottenere la tua chiave API.
-
Impostare le variabili d'ambiente: Imposteremo la chiave API Tavly e la chiave API LangTrace come variabili d'ambiente.
-
Gestire gli errori: Se riscontri errori relativi alle integrazioni di LangSmith, non preoccuparti. Siamo interessati solo a LangChain e all'integrazione di Gemini Pro in questo momento.
Creazione della pipeline RAG
Creazione della pipeline RAG
Per impostare una pipeline RAG di base, dobbiamo prima caricare il documento PDF che servirà come nostra base di conoscenza. In questo caso, abbiamo il file "transformers.pdf", che contiene 12 pagine di contenuti.
Successivamente, utilizziamo il RecursiveCharacterTextSplitter
dal modulo langchain.text_splitter
per suddividere il documento in pezzi più piccoli, ciascuno con un massimo di 500 token e un overlapping di 100 token. Questo ci permette di creare un totale di 24 diversi frammenti che possono essere utilizzati per il recupero.
Successivamente, carichiamo il modello di embedding dell'intelligenza artificiale generativa di Google, che verrà utilizzato per calcolare gli embedding di ciascuno dei frammenti del documento. Gli embedding hanno una dimensionalità di 768.
Per memorizzare gli embedding, utilizziamo l'archivio vettoriale FAISS. Questo ci permette di eseguire in modo efficiente ricerche di similarità sui frammenti del documento quando viene fornita una query.
Infine, creiamo uno strumento RetrievalQA
che può essere utilizzato dall'agente per recuperare informazioni rilevanti dalla base di conoscenza. Lo strumento è configurato con il recuperatore FAISS e una descrizione che indica che è utile per il recupero di informazioni relative al documento "Attention is All You Need".
Con questa impostazione, l'agente sarà in grado di utilizzare la pipeline RAG per trovare e recuperare informazioni rilevanti quando risponde a domande su trasformatori e argomenti correlati.
Impostazione degli strumenti
Impostazione degli strumenti
Per impostare gli strumenti per il nostro agente, dobbiamo prima installare i pacchetti necessari:
1# Installa i pacchetti richiesti 2!pip install google-generative-ai langchain tavlpy faiss-cpu langtracing
Successivamente, importiamo i moduli richiesti e imposteremo le chiavi API per i diversi servizi che utilizzeremo:
1import os 2from langchain.document_loaders import PyPDFLoader 3from langchain.text_splitter import RecursiveCharacterTextSplitter 4from langchain.embeddings.openai import OpenAIEmbeddings 5from langchain.vectorstores import FAISS 6from langtracing.sdk.python import LangTracer 7 8# Imposta la chiave API Tavly 9TAVLY_API_KEY = os.environ.get("TAVLY_API_KEY") 10 11# Imposta la chiave API LangTrace 12LANGTRACING_API_KEY = os.environ.get("LANGTRACING_API_KEY")
Successivamente, imposteremo la pipeline RAG (Retrieval Augmented Generation) caricando il documento PDF, suddividendolo in frammenti e creando gli embedding e l'archivio vettoriale:
1# Carica il documento PDF 2loader = PyPDFLoader("transformers.pdf") 3documents = loader.load() 4 5# Suddividi il documento in frammenti 6text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100, length_function=len) 7chunks = text_splitter.split_documents(documents) 8 9# Crea gli embedding e l'archivio vettoriale 10embeddings = OpenAIEmbeddings() 11vector_store = FAISS.from_documents(chunks, embeddings)
Infine, creiamo i due strumenti a cui il nostro agente avrà accesso: lo strumento di recupero e lo strumento di ricerca:
1from langchain.agents import Tool 2 3# Crea lo strumento di recupero 4retriever_tool = Tool( 5 name="retriever_tool", 6 description="Per qualsiasi informazione relativa all'architettura dei trasformatori, utilizza questo strumento. Utile per il recupero di informazioni relative al documento "Attention is all you need".", 7 func=lambda query: vector_store.similarity_search(query, k=3) 8) 9 10# Crea lo strumento di ricerca 11search_tool = Tool( 12 name="search_tool", 13 description="Un motore di ricerca ottimizzato per risultati completi, accurati e affidabili. Utile quando hai bisogno di rispondere a domande sugli eventi attuali. L'input dovrebbe essere una query di ricerca.", 14 func=lambda query: Tavly(TAVLY_API_KEY).search(query) 15)
Con gli strumenti impostati, siamo ora pronti a creare l'agente e iniziare a utilizzarlo per rispondere alle domande.
Creazione dell'Agente
Creazione dell'Agente
Per creare l'agente, utilizzeremo la classe di agente ReAct da LangChain. Questo è un tipo speciale di agente che può pianificare, ha memoria e ha accesso agli strumenti che vogliamo che utilizzi.
Dobbiamo prima fornire all'agente un prompt dettagliato o istruzioni per il controllo degli strumenti e l'elaborazione di un piano. LangChain fornisce un modello per questo utilizzando LangChain Hub, simile all'Llama Index Hub.
Utilizzeremo il modello ReAct e lo modificheremo come necessario. Il prompt include quanto segue:
- Rispondi alle seguenti domande nel miglior modo possibile.
- Hai accesso ai seguenti strumenti:
- Strumento di recupero: Per qualsiasi informazione relativa al documento "Attention is All You Need".
- Strumento di ricerca: Un motore di ricerca ottimizzato per risultati completi, accurati e affidabili. Utile per rispondere a domande sugli eventi attuali.
- Utilizza il seguente formato:
- La domanda di input a cui devi rispondere.
- Il tuo processo di pensiero.
- L'azione da intraprendere (cioè, quale strumento utilizzare).
- L'output dello strumento.
- La risposta finale.
Con questo prompt, possiamo creare l'agente ReAct:
1agent = ReActAgent( 2 name="Gemini 1.5 Pro", 3 tools=tools, 4 system_message=system_prompt 5)
Qui, tools
è l'elenco degli strumenti che abbiamo definito in precedenza e system_prompt
è il prompt che abbiamo creato in base al modello ReAct.
Ora possiamo utilizzare l'AgentExecutor
per eseguire l'agente e fornirgli delle query:
1executor = AgentExecutor( 2 agent=agent, 3 tools=tools, 4 verbose=True 5) 6 7result = executor.run("What is the current weather in LA?") 8print(result)
L'agente seguirà il suo processo di pensiero, utilizzerà gli strumenti appropriati e fornirà la risposta finale. Puoi anche ispezionare le tracce utilizzando la libreria LangTrace per comprendere il processo decisionale dell'agente.
Interazione con l'Agente
Interazione con l'Agente
L'agente che abbiamo impostato è un Agente Reattivo, il che significa che può pianificare, eseguire azioni e aggiornare il suo stato interno in base ai risultati di tali azioni. Vediamo come possiamo interagire con questo agente.
Prima di tutto, faremo all'agente una semplice domanda sul meteo attuale a Los Angeles:
1question = "What is the current weather at LA?" 2result = agent.run(question) 3print(result)
L'agente segue un processo di pensiero, decide di utilizzare lo strumento di ricerca per cercare il meteo attuale, esegue la ricerca e fornisce la risposta finale.
Successivamente, chiederemo all'agente un elenco di medaglie d'oro per paese nelle Olimpiadi attuali:
1question = "Can you give me a list of gold medals per country in the current Olympics?" 2result = agent.run(question) 3print(result)
In questo caso, l'agente decide nuovamente di utilizzare lo strumento di ricerca per cercare le informazioni pertinenti, elabora i risultati e fornisce la risposta.
Infine, chiederemo all'agente di spiegare il concetto di attenzione nei trasformatori:
1question = "Can you explain the concept of attention in transformers?" 2result = agent.run(question) 3print(result)
In questo caso, l'agente riconosce che la domanda è relativa al documento "Attention is All You Need", quindi decide di utilizzare lo strumento di recupero per recuperare le informazioni rilevanti dal documento. Successivamente, elabora le informazioni e fornisce una spiegazione concisa del concetto fondamentale dell'attenzione a prodotto scalare.
In tutte queste interazioni, puoi vedere il processo di pensiero dell'agente e i passaggi che compie per arrivare alla risposta finale. L'utilizzo di strumenti come LangTrace ci aiuta a comprendere il funzionamento interno dell'agente e le prestazioni del sistema.
Conclusione
Conclusione
Il modello sperimentale Gemini 1.5 Pro ha dimostrato le sue capacità come agente efficace, sfruttando strumenti come RAG e la ricerca web per fornire risposte complete e concise a varie query. L'utilizzo di LangTrace è stato fondamentale per tracciare il processo di pensiero e i passaggi di esecuzione dell'agente, fornendo preziose informazioni per ottimizzare le prestazioni del sistema.
Sebbene le informazioni sul meteo dell'agente fossero leggermente fuori, la sua capacità di riscrivere le query e recuperare informazioni più rilevanti dimostra la sua adattabilità e le sue capacità di problem-solving. Le spiegazioni dettagliate sui concetti fondamentali dell'attenzione nei trasformatori evidenziano ulteriormente la profondità di comprensione del modello e il suo potenziale per servire come strumento prezioso per gli utenti che cercano informazioni e approfondimenti.
Complessivamente, il modello sperimentale Gemini 1.5 Pro si è dimostrato un agente promettente, in grado di integrare strumenti esterni, pianificare ed eseguire risposte complete. Mentre il campo dei modelli di linguaggio su larga scala e dei sistemi basati su agenti continua a evolversi, questo esempio serve da testimonianza dei progressi nel campo e del potenziale per agenti ancora più sofisticati e capaci in futuro.
FAQ
FAQ