Agenten aangedreven door Gemini Pro: Ontgrendelen van agentschapswerkstromen met LangTrace

Ontdek hoe Gemini Pro en LangTrace agentische workflows voor geavanceerde LLM-mogelijkheden ontgrendelen. Verken planning, gebruik van externe tools en tracering voor AI-systemen die klaar zijn voor productie.

15 januari 2025

party-gif

Ontgrendel de kracht van AI-aangedreven agenten met het Gemini Pro Experimental-model. Ontdek hoe dit toonaangevende taalmodel naadloos externe tools en API's kan integreren om complexe taken aan te pakken en uitgebreide en op maat gemaakte antwoorden te leveren. Ontdek de voordelen van deze agentgebaseerde aanpak en ontgrendel nieuwe mogelijkheden voor uw content en workflows.

Wat is een Agent en hoe werkt het?

Een agent is in wezen een groot taalmodel (LLM) met extra mogelijkheden, waaronder:

  1. Planning: De agent kan de gebruikersquery opdelen en een uitgebreid plan opstellen om deze aan te pakken.

  2. Externe tools/API's: De agent heeft toegang tot externe tools of API's die hij kan gebruiken om zijn plan uit te voeren.

  3. Geheugen: De agent houdt bij waar hij zich bevindt in de planuitvoering en welke extra stappen hij nog moet ondernemen.

In het gegeven voorbeeld gebruikt de agent het experimentele Gemini 1.5 Pro-model als LLM, en heeft hij toegang tot twee tools:

  1. RAG (Retrieval-Augmented Generation): Dit fungeert als de kennisbank van de agent, waarbij gebruik wordt gemaakt van het paper "Attention is All You Need".

  2. Websearch: De agent kan informatie op het web opzoeken om zijn kennis aan te vullen.

De agent gebruikt LangTrace om alle stappen die hij neemt bij de uitvoering van het plan bij te houden. Deze observeerbaarheid is cruciaal voor het begrijpen van het besluitvormingsproces van de agent, vooral in een productieomgeving.

De omgeving instellen

Om aan de slag te gaan, moeten we de benodigde pakketten installeren en de vereiste API-sleutels instellen. Zo pakken we het aan:

  1. Pakketten installeren: We installeren het Google Generative AI-pakket, LangChain, Tavly Python (onze zoekmachine), FAISS (vectoropslag) en de LangTrace Python SDK.

  2. Pakketten importeren: We importeren de recursieve tekenreekstekensplitser, de PDF-loader, de Tavly-zoekresultaten en het Google generatieve AI-insluitingsmodel.

  3. API-sleutels instellen:

    • Tavly API-sleutel: U kunt de Tavly API-sleutel krijgen door op de link "get API key" te klikken in de videobeschrijving.
    • Google API-sleutel: U kunt de Google API-sleutel krijgen van uw Google AI Studio.
    • LangTrace API-sleutel: U moet een account aanmaken op LangTrace, een open source observabiliteitsplatform voor LLM-toepassingen. U kunt dan op "generate API key" klikken om uw API-sleutel te krijgen.
  4. Omgevingsvariabelen instellen: We stellen de Tavly API-sleutel en de LangTrace API-sleutel in als omgevingsvariabelen.

  5. Fouten afhandelen: Als u fouten ziet met betrekking tot LangSmith-integraties, maakt u zich daar geen zorgen over. We zijn alleen geïnteresseerd in LangChain en de Gemini Pro-integratie op dit moment.

Nu we de omgeving hebben ingesteld, kunnen we verder gaan met de volgende stappen voor het bouwen van de agent en het integreren van de benodigde tools.

De RAG-pijplijn maken

Om een basisRAG-pijplijn in te stellen, moeten we eerst het PDF-document laden dat als onze kennisbank zal dienen. In dit geval hebben we het bestand "transformers.pdf", dat 12 pagina's aan inhoud bevat.

Vervolgens gebruiken we de RecursiveCharacterTextSplitter van de langchain.text_splitter-module om het document op te delen in kleinere stukken, elk met maximaal 500 tokens en een overlap van 100 tokens. Hierdoor kunnen we in totaal 24 verschillende chunks maken die voor het ophalen kunnen worden gebruikt.

Vervolgens laden we het Google Generative AI-insluitingsmodel, dat wordt gebruikt om embeddings te berekenen voor elk van de documentchunks. De embeddings hebben een dimensionaliteit van 768.

Om de embeddings op te slaan, gebruiken we de FAISS-vectoropslag. Hiermee kunnen we efficiënt similariteitszoekingen uitvoeren op de documentchunks wanneer er een query wordt gegeven.

Tenslotte maken we een RetrievalQA-tool die door de agent kan worden gebruikt om relevante informatie uit de kennisbank op te halen. Het instrument is geconfigureerd met de FAISS-zoeker en een beschrijving die aangeeft dat het nuttig is voor het ophalen van informatie met betrekking tot het paper "Attention is All You Need".

Met deze setup zal de agent de RAG-pijplijn kunnen gebruiken om relevante informatie te vinden en op te halen bij het beantwoorden van vragen over transformers en gerelateerde onderwerpen.

De tools instellen

Om de tools voor onze agent in te stellen, moeten we eerst de benodigde pakketten installeren:

1# Install required packages 2!pip install google-generative-ai langchain tavlpy faiss-cpu langtracing

Vervolgens importeren we de benodigde modules en stellen we de API-sleutels in voor de verschillende services die we gaan gebruiken:

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# Set up Tavly API key 9TAVLY_API_KEY = os.environ.get("TAVLY_API_KEY") 10 11# Set up LangTrace API key 12LANGTRACING_API_KEY = os.environ.get("LANGTRACING_API_KEY")

Vervolgens stellen we de RAG (Retrieval Augmented Generation)-pijplijn in door het PDF-document te laden, het op te splitsen in chunks en de embeddings en vectoropslag te maken:

1# Load the PDF document 2loader = PyPDFLoader("transformers.pdf") 3documents = loader.load() 4 5# Split the document into chunks 6text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100, length_function=len) 7chunks = text_splitter.split_documents(documents) 8 9# Create embeddings and vector store 10embeddings = OpenAIEmbeddings() 11vector_store = FAISS.from_documents(chunks, embeddings)

Tenslotte maken we de twee tools waartoe onze agent toegang zal hebben: het ophaaltool en het zoektool:

1from langchain.agents import Tool 2 3# Create the retrieval tool 4retriever_tool = Tool( 5 name="retriever_tool", 6 description="For any information related to transformers architecture, use this tool. Useful for retrieving information related to Attention is all you need paper.", 7 func=lambda query: vector_store.similarity_search(query, k=3) 8) 9 10# Create the search tool 11search_tool = Tool( 12 name="search_tool", 13 description="A search engine optimized for comprehensive, accurate, and trusted results. Useful for when you need to answer questions about current events. Input should be a search query.", 14 func=lambda query: Tavly(TAVLY_API_KEY).search(query) 15)

Met de tools ingesteld, zijn we nu klaar om de agent te maken en te beginnen met het beantwoorden van vragen.

De Agent maken

Om de agent te maken, zullen we de ReAct-agentklasse van LangChain gebruiken. Dit is een speciaal type agent dat kan plannen, geheugen heeft en toegang heeft tot de tools die we willen dat hij gebruikt.

We moeten eerst een gedetailleerde prompt of instructies aan de agent geven voor het besturen van de tools en het opstellen van een plan. LangChain biedt een sjabloon hiervoor met behulp van de LangChain Hub, die vergelijkbaar is met de Llama Index Hub.

We zullen de ReAct-sjabloon gebruiken en deze indien nodig aanpassen. De prompt bevat het volgende:

  1. Beantwoord de volgende vragen zo goed mogelijk.
  2. U heeft toegang tot de volgende tools:
    • Ophaaltool: Voor informatie over het paper "Attention is All You Need".
    • Zoektool: Een zoekmachine geoptimaliseerd voor uitgebreide, nauwkeurige en betrouwbare resultaten. Nuttig voor het beantwoorden van vragen over actuele gebeurtenissen.
  3. Gebruik het volgende formaat:
    • De vraag die u moet beantwoorden.
    • Uw denkproces.
    • De actie die moet worden ondernomen (d.w.z. welk hulpmiddel moet worden gebruikt).
    • De uitvoer van het hulpmiddel.
    • Het uiteindelijke antwoord.

Met deze prompt kunnen we de ReAct-agent maken:

1agent = ReActAgent( 2 name="Gemini 1.5 Pro", 3 tools=tools, 4 system_message=system_prompt 5)

Hier is tools de lijst met tools die we eerder hebben gedefinieerd, en system_prompt is de prompt die we hebben gemaakt op basis van de ReAct-sjabloon.

Nu kunnen we de AgentExecutor gebruiken om de agent uit te voeren en hem vragen te stellen:

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)

De agent zal zijn denkproces doorlopen, de juiste tools gebruiken en het uiteindelijke antwoord geven. U kunt ook de traces met behulp van de LangTrace-bibliotheek bekijken om het besluitvormingsproces van de agent te begrijpen.

Interactie met de Agent

De agent die we hebben ingesteld, is een Reactive Agent, wat betekent dat hij kan plannen, acties uitvoeren en zijn interne staat bijwerken op basis van de resultaten van die acties. Laten we eens zien hoe we met deze agent kunnen communiceren.

Eerst zullen we de agent een eenvoudige vraag stellen over het huidige weer in Los Angeles:

1question = "What is the current weather at LA?" 2result = agent.run(question) 3print(result)

De agent doorloopt een denkproces, besluit om de zoektool te gebruiken om het huidige weer op te zoeken, voert de zoekopdracht uit en geeft vervolgens het uiteindelijke antwoord.

Vervolgens vragen we de agent om een lijst van gouden medailles per land in de huidige Olympische Spelen:

1question = "Can you give me a list of gold medals per country in the current Olympics?" 2result = agent.run(question) 3print(result)

Hier besluit de agent opnieuw om de zoektool te gebruiken om de relevante informatie op te zoeken, verwerkt de resultaten en geeft het antwoord.

Tenslotte vragen we de agent om het concept van aandacht in transformers uit te leggen:

1question = "Can you explain the concept of attention in transformers?" 2result = agent.run(question) 3print(result)

In dit geval herkent de agent dat de vraag betrekking heeft op het paper "Attention is All You Need", dus besluit hij om het ophaaltool te gebruiken om relevante informatie uit het paper op te halen. Hij verwerkt vervolgens de informatie en geeft een beknopte uitleg van het kernbegrip van geschaalde dot-product-aandacht.

Tijdens deze interacties kunt u het denkproces van de agent en de stappen die hij neemt om tot het uiteindelijke antwoord te komen, zien. Het gebruik van tools als LangTrace helpt ons om de interne werking van de agent en de prestaties van het systeem te begrijpen.

Conclusie

Het experimentele Gemini 1.5 Pro-model heeft zijn capaciteiten als een effectieve agent gedemonstreerd, waarbij het gebruik maakt van tools als RAG en websearch om uitgebreide en beknopte antwoorden te geven op verschillende vragen. Het gebruik van LangTrace is cruciaal geweest voor het bijhouden van het denkproces en de uitvoeringsstappen van de agent, wat waardevolle inzichten oplevert voor het optimaliseren van de systeemprestaties.

Hoewel de informatie over het weer iets afweek, toont de capaciteit van de agent om queries te herschrijven en relevantere informatie op te halen, zijn aanpassingsvermogen en probleemoplossende vaardigheden. De gedetailleerde uitleg over de kernconcepten van aandacht in transformers onderstreept verder de diepgaande kennis van het model en het potentieel om te dienen als een waardevol hulpmiddel voor gebruikers die op zoek zijn naar informatie en inzichten.

Overall heeft het experimentele Gemini 1.5 Pro-model bewezen een veelbelovende agent te zijn, in staat om externe tools te integreren, te plannen en uitgebreide antwoorden uit te voeren. Naarmate het veld van grote taalmodellen en op agenten gebaseerde systemen zich blijft ontwikkelen, dient dit voorbeeld als een getuigenis van de vooruitgang in het veld en het potentieel voor nog meer geavanceerde en capabele agenten in de toekomst.

FAQ