Agenten, die von Gemini Pro angetrieben werden: Erschließen von agentengesteuerten Arbeitsabläufen mit LangTrace
Entdecken Sie, wie Gemini Pro und LangTrace agentenbasierte Workflows für fortgeschrittene LLM-Fähigkeiten erschließen. Erkunden Sie Planung, Nutzung externer Tools und Nachverfolgung für produktionsreife KI-Systeme.
15. Januar 2025
Erschließen Sie die Kraft von KI-gesteuerten Agenten mit dem Gemini Pro Experimental-Modell. Entdecken Sie, wie dieses hochmoderne Sprachmodell externe Tools und APIs nahtlos integrieren kann, um komplexe Aufgaben zu bewältigen und umfassende und maßgeschneiderte Antworten zu liefern. Entdecken Sie die Vorteile dieses agentenbasierten Ansatzes und erschließen Sie neue Möglichkeiten für Ihre Inhalte und Arbeitsabläufe.
Was ist ein Agent und wie funktioniert er?
Einrichten der Umgebung
Erstellen der RAG-Pipeline
Einrichten der Tools
Erstellen des Agenten
Interaktion mit dem Agenten
Schlussfolgerung
Was ist ein Agent und wie funktioniert er?
Was ist ein Agent und wie funktioniert er?
Ein Agent ist im Wesentlichen ein großes Sprachmodell (LLM) mit zusätzlichen Fähigkeiten, einschließlich:
-
Planung: Der Agent kann die Benutzerabfrage zerlegen und einen umfassenden Plan zu ihrer Bearbeitung entwickeln.
-
Externe Tools/APIs: Der Agent hat Zugriff auf externe Tools oder APIs, die er zur Ausführung seines Plans verwenden kann.
-
Speicher: Der Agent verfolgt, wo er sich in der Planausführung befindet und welche zusätzlichen Schritte er noch unternehmen muss.
Im bereitgestellten Beispiel verwendet der Agent das experimentelle Gemini 1.5 Pro-Modell als LLM und hat Zugriff auf zwei Tools:
-
RAG (Retrieval-Augmented Generation): Dies fungiert als Wissensbasis des Agenten und verwendet den Aufsatz "Attention is All You Need".
-
Websuche: Der Agent kann im Internet nach Informationen suchen, um sein Wissen zu ergänzen.
Der Agent verwendet LangTrace, um alle Schritte bei der Ausführung des Plans zu verfolgen. Diese Beobachtbarkeit ist entscheidend für das Verständnis des Entscheidungsprozesses des Agenten, insbesondere in einer Produktionsumgebung.
Einrichten der Umgebung
Einrichten der Umgebung
Um loszulegen, müssen wir die erforderlichen Pakete installieren und die notwendigen API-Schlüssel einrichten. So gehen wir dabei vor:
-
Pakete installieren: Wir werden das Google Generative AI-Paket, LangChain, Tavly Python (unsere Suchmaschine), FAISS (Vektorspeicher) und das LangTrace Python SDK installieren.
-
Pakete importieren: Wir werden den rekursiven Zeichenfolgen-Textteiler, den PDF-Loader, die Tavly-Suchergebnisse und das Google Generative AI-Einbettungsmodell importieren.
-
API-Schlüssel einrichten:
- Tavly API-Schlüssel: Den Tavly API-Schlüssel können Sie erhalten, indem Sie auf den Link "API-Schlüssel abrufen" klicken, der in der Videobeschreibung angegeben ist.
- Google API-Schlüssel: Den Google API-Schlüssel können Sie aus Ihrem Google AI Studio beziehen.
- LangTrace API-Schlüssel: Sie müssen ein Konto bei LangTrace, einer Open-Source-Observability-Plattform für LLM-Anwendungen, erstellen. Klicken Sie dann auf "API-Schlüssel generieren", um Ihren API-Schlüssel zu erhalten.
-
Umgebungsvariablen festlegen: Wir werden den Tavly API-Schlüssel und den LangTrace API-Schlüssel als Umgebungsvariablen festlegen.
-
Fehler behandeln: Wenn Sie Fehler im Zusammenhang mit LangSmith-Integrationen sehen, machen Sie sich darüber keine Sorgen. Wir sind hier nur an LangChain und der Gemini Pro-Integration interessiert.
Nun, da wir die Umgebung eingerichtet haben, können wir zu den nächsten Schritten übergehen und den Agenten aufbauen und die erforderlichen Tools integrieren.
Erstellen der RAG-Pipeline
Erstellen der RAG-Pipeline
Um eine grundlegende RAG-Pipeline einzurichten, müssen wir zunächst das PDF-Dokument laden, das als unsere Wissensbasis dienen wird. In diesem Fall haben wir die Datei "transformers.pdf", die 12 Seiten Inhalt enthält.
Als Nächstes verwenden wir den RecursiveCharacterTextSplitter
aus dem Modul langchain.text_splitter
, um das Dokument in kleinere Stücke mit jeweils bis zu 500 Token und einer Überlappung von 100 Token zu unterteilen. Dadurch können wir insgesamt 24 verschiedene Chunks erstellen, die für den Abruf verwendet werden können.
Anschließend laden wir das Google Generative AI-Einbettungsmodell, das verwendet wird, um Einbettungen für jedes der Dokumentenchunks zu berechnen. Die Einbettungen haben eine Dimensionalität von 768.
Um die Einbettungen zu speichern, verwenden wir den FAISS-Vektorstore. Dies ermöglicht es uns, bei Bereitstellung einer Abfrage effizient Ähnlichkeitssuchen auf den Dokumentenchunks durchzuführen.
Schließlich erstellen wir ein RetrievalQA
-Tool, das vom Agenten verwendet werden kann, um relevante Informationen aus der Wissensbasis abzurufen. Das Tool ist mit dem FAISS-Retriever und einer Beschreibung konfiguriert, die darauf hinweist, dass es für den Abruf von Informationen in Bezug auf den Aufsatz "Attention is All You Need" nützlich ist.
Mit dieser Einrichtung wird der Agent in der Lage sein, die RAG-Pipeline zu nutzen, um bei der Beantwortung von Fragen zu Transformatoren und verwandten Themen relevante Informationen zu finden und abzurufen.
Einrichten der Tools
Einrichten der Tools
Um die Tools für unseren Agenten einzurichten, müssen wir zunächst die erforderlichen Pakete installieren:
1# Erforderliche Pakete installieren 2!pip install google-generative-ai langchain tavlpy faiss-cpu langtracing
Als Nächstes importieren wir die erforderlichen Module und richten die API-Schlüssel für die verschiedenen Dienste ein, die wir verwenden werden:
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# Tavly API-Schlüssel einrichten 9TAVLY_API_KEY = os.environ.get("TAVLY_API_KEY") 10 11# LangTrace API-Schlüssel einrichten 12LANGTRACING_API_KEY = os.environ.get("LANGTRACING_API_KEY")
Anschließend richten wir die RAG (Retrieval Augmented Generation)-Pipeline ein, indem wir das PDF-Dokument laden, es in Chunks unterteilen und die Einbettungen und den Vektorstore erstellen:
1# PDF-Dokument laden 2loader = PyPDFLoader("transformers.pdf") 3documents = loader.load() 4 5# Dokument in Chunks unterteilen 6text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100, length_function=len) 7chunks = text_splitter.split_documents(documents) 8 9# Einbettungen und Vektorstore erstellen 10embeddings = OpenAIEmbeddings() 11vector_store = FAISS.from_documents(chunks, embeddings)
Schließlich erstellen wir die beiden Tools, auf die unser Agent Zugriff haben wird: das Abruf-Tool und das Suchtools:
1from langchain.agents import Tool 2 3# Das Abruf-Tool erstellen 4retriever_tool = Tool( 5 name="retriever_tool", 6 description="Für alle Informationen zur Transformers-Architektur verwenden Sie dieses Tool. Nützlich für den Abruf von Informationen in Bezug auf den Aufsatz "Attention is all you need".", 7 func=lambda query: vector_store.similarity_search(query, k=3) 8) 9 10# Das Suchtools erstellen 11search_tool = Tool( 12 name="search_tool", 13 description="Eine Suchmaschine, die für umfassende, genaue und vertrauenswürdige Ergebnisse optimiert ist. Nützlich, wenn Sie Fragen zu aktuellen Ereignissen beantworten müssen. Die Eingabe sollte eine Suchanfrage sein.", 14 func=lambda query: Tavly(TAVLY_API_KEY).search(query) 15)
Mit den eingerichteten Tools sind wir nun bereit, den Agenten zu erstellen und ihn zum Beantworten von Fragen zu verwenden.
Erstellen des Agenten
Erstellen des Agenten
Um den Agenten zu erstellen, werden wir die ReAct-Agenten-Klasse von LangChain verwenden. Dies ist eine spezielle Art von Agent, der Planung durchführen, Speicher haben und auf die Tools zugreifen kann, die wir ihm zur Verfügung stellen möchten.
Zuerst müssen wir dem Agenten eine detaillierte Eingabeaufforderung oder Anweisungen zur Steuerung der Tools und zur Erstellung eines Plans geben. LangChain stellt eine Vorlage für diesen Zweck über den LangChain Hub bereit, der dem Llama Index Hub ähnlich ist.
Wir werden die ReAct-Vorlage verwenden und sie nach Bedarf anpassen. Die Eingabeaufforderung enthält Folgendes:
- Beantworten Sie die folgenden Fragen so gut wie möglich.
- Sie haben Zugriff auf die folgenden Tools:
- Abruf-Tool: Für alle Informationen in Bezug auf den Aufsatz "Attention is All You Need".
- Suchtools: Eine Suchmaschine, die für umfassende, genaue und vertrauenswürdige Ergebnisse optimiert ist. Nützlich zum Beantworten von Fragen zu aktuellen Ereignissen.
- Verwenden Sie das folgende Format:
- Die zu beantwortende Eingabefrage.
- Ihr Denkprozess.
- Die zu ergreifende Aktion (d.h. welches Tool zu verwenden).
- Die Ausgabe des Tools.
- Die endgültige Antwort.
Mit dieser Eingabeaufforderung können wir den ReAct-Agenten erstellen:
1agent = ReActAgent( 2 name="Gemini 1.5 Pro", 3 tools=tools, 4 system_message=system_prompt 5)
Hier ist tools
die Liste der Tools, die wir zuvor definiert haben, und system_prompt
ist die Eingabeaufforderung, die wir basierend auf der ReAct-Vorlage erstellt haben.
Nun können wir den AgentExecutor
verwenden, um den Agenten auszuführen und ihm Abfragen zu übergeben:
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)
Der Agent wird seinen Denkprozess durchlaufen, die geeigneten Tools verwenden und die endgültige Antwort liefern. Sie können auch die Spuren mithilfe der LangTrace-Bibliothek untersuchen, um den Entscheidungsprozess des Agenten zu verstehen.
Interaktion mit dem Agenten
Interaktion mit dem Agenten
Der Agent, den wir eingerichtet haben, ist ein Reaktiver Agent, was bedeutet, dass er planen, Aktionen ausführen und seinen internen Zustand basierend auf den Ergebnissen dieser Aktionen aktualisieren kann. Lassen Sie uns sehen, wie wir mit diesem Agenten interagieren können.
Zuerst werden wir den Agenten eine einfache Frage zum aktuellen Wetter in Los Angeles stellen:
1question = "What is the current weather at LA?" 2result = agent.run(question) 3print(result)
Der Agent durchläuft einen Denkprozess, entscheidet sich, das Suchtools zu verwenden, um das aktuelle Wetter nachzuschlagen, führt die Suche aus und liefert dann die endgültige Antwort.
Als Nächstes fragen wir den Agenten nach einer Liste der Goldmedaillen pro Land bei den aktuellen Olympischen Spielen:
1question = "Can you give me a list of gold medals per country in the current Olympics?" 2result = agent.run(question) 3print(result)
Hier entscheidet sich der Agent erneut, das Suchtools zu verwenden, um die relevanten Informationen nachzuschlagen, verarbeitet die Ergebnisse und liefert die Antwort.
Schließlich bitten wir den Agenten, das Konzept der Aufmerksamkeit in Transformatoren zu erklären:
1question = "Can you explain the concept of attention in transformers?" 2result = agent.run(question) 3print(result)
In diesem Fall erkennt der Agent, dass die Frage mit dem Aufsatz "Attention is All You Need" in Zusammenhang steht, daher entscheidet er sich, das Abruf-Tool zu verwenden, um relevante Informationen aus dem Aufsatz abzurufen. Er verarbeitet dann die Informationen und liefert eine prägnante Erklärung des Kernkonzepts der skalierten Punktprodukt-Aufmerksamkeit.
Bei all diesen Interaktionen können Sie den Denkprozess des Agenten und die Schritte, die er unternimmt, um zur endgültigen Antwort zu gelangen, beobachten. Die Verwendung von Tools wie LangTrace hilft uns, die internen Abläufe des Agenten und die Leistung des Systems zu verstehen.
Schlussfolgerung
Schlussfolgerung
Das experimentelle Gemini 1.5 Pro-Modell hat seine Fähigkeiten als effektiver Agent unter Beweis gestellt, indem es Tools wie RAG und Websuche nutzt, um umfassende und prägnante Antworten auf verschiedene Abfragen zu liefern. Der Einsatz von LangTrace war entscheidend, um den Denkprozess und die Ausführungsschritte des Agenten zu verfolgen und wertvolle Erkenntnisse für die Optimierung der Systemleistung zu gewinnen.
Obwohl die Wetterinformationen des Modells etwas ungenau waren, zeigt die Fähigkeit des Agenten, Abfragen umzuformulieren und relevantere Informationen abzurufen, seine Anpassungsfähigkeit und Problemlösungskompetenz. Die detaillierten Erklärungen zu den Kernkonzepten der Aufmerksamkeit in Transformatoren unterstreichen darüber hinaus die Tiefe des Verständnisses des Modells und sein Potenzial, als wertvolles Werkzeug für Benutzer zu dienen, die nach Informationen un
FAQ
FAQ