Heim > Artikel > Backend-Entwicklung > Erstellen eines einfachen RAG-Agenten mit LlamaIndex
LlamaIndex ist ein Framework zum Erstellen kontexterweiterter generativer KI-Anwendungen mit LLMs.
Kontexterweiterung bezieht sich auf eine Technik, bei der einem LLM-Modell zusätzliche relevante Informationen oder Kontext bereitgestellt werden, wodurch sein Verständnis und seine Antworten auf eine bestimmte Anfrage verbessert werden. Diese Erweiterung umfasst typischerweise das Abrufen, Integrieren oder Anhängen externer Datenquellen wie Dokumente oder Einbettungen an die Modelleingabe. Das Ziel besteht darin, das Modell fundierter zu machen, indem es mit dem notwendigen Kontext ausgestattet wird, der ihm hilft, bessere, genauere und differenziertere Antworten zu geben. Retrieval Augmented Generation (RAG) ist das beliebteste Beispiel für Kontexterweiterung.
Agenten sind automatisierte Argumentations- und Entscheidungsmaschinen, die von LLMs unterstützt werden und Tools zur Durchführung von Recherchen, Datenextraktion, Websuche und anderen Aufgaben verwenden. Sie können für einfache Anwendungsfälle wie die Beantwortung von Fragen auf der Grundlage der Daten verwendet werden, um Entscheidungen zu treffen und Maßnahmen zu ergreifen, um Aufgaben zu erledigen.
In diesem Beitrag erstellen wir einen einfachen RAG-Agenten mit LlamaIndex.
Wir verwenden Python, um mithilfe von LlamaIndex einen einfachen RAG-Agenten zu erstellen. Lassen Sie uns zunächst die erforderlichen Abhängigkeiten wie folgt installieren:
pip install llama-index python-dotenv
Wir werden den gpt-4o-mini von OpenAI als LLM verwenden. Sie müssen den API-Schlüssel in die Umgebungsvariablendatei einfügen. Weitere Informationen zum Einrichten eines lokalen LLM mit LLamaIndex finden Sie hier.
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex, Settings from llama_index.llms.openai import OpenAI from dotenv import load_dotenv # Load environment variables (e.g., OPENAI_API_KEY) load_dotenv() # Configure OpenAI model Settings.llm = OpenAI(model="gpt-4o-mini") # Load documents from the local directory documents = SimpleDirectoryReader("./data").load_data() # Create an index from documents for querying index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine()
Lassen Sie uns nun einige grundlegende Funktionen definieren, die der Agent zum Ausführen von Aufgaben verwenden kann.
def multiply(a: float, b: float) -> float: """Multiply two numbers and returns the product""" return a * b def add(a: float, b: float) -> float: """Add two numbers and returns the sum""" return a + b
Als nächstes erstellen wir Tools aus den Funktionen und der Abfrage-Engine, die wir zuvor definiert haben, die der Agent zum Ausführen von Aufgaben verwenden wird. Diese Tools fungieren als Dienstprogramme, die der Agent bei der Bearbeitung verschiedener Arten von Abfragen nutzen kann.
from llama_index.core.tools import FunctionTool, QueryEngineTool # Wrap functions as tools add_tool = FunctionTool.from_defaults(fn=add) multiply_tool = FunctionTool.from_defaults(fn=multiply) # Create a query engine tool for document retrieval space_facts_tool = QueryEngineTool.from_defaults( query_engine, name="space_facts_tool", description="A RAG engine with information about fun space facts." )
Wir erstellen nun den Agenten mit ReActAgent. Der Agent ist dafür verantwortlich, zu entscheiden, wann er die Tools nutzt und wie er auf Anfragen reagiert.
from llama_index.core.agent import ReActAgent # Create the agent with the tools agent = ReActAgent.from_tools( [multiply_tool, add_tool, space_facts_tool], verbose=True )
Dieser Agent verwendet das ReAct-Framework, das es dem Modell ermöglicht, zu argumentieren und zu handeln, indem es die gegebenen Werkzeuge in einer logischen Reihenfolge verwendet. Der Agent wird mit den von uns erstellten Tools initialisiert und das Flag verbose=True gibt detaillierte Informationen darüber aus, wie der Agent Aufgaben begründet und ausführt.
Lassen Sie uns abschließend den Agenten in einer interaktiven Schleife ausführen, in der er Benutzeranfragen verarbeitet, bis wir ihn beenden.
while True: query = input("Query: ") if query == "/bye": exit() response = agent.chat(query) print(response) print("-" * 10)
Das obige ist der detaillierte Inhalt vonErstellen eines einfachen RAG-Agenten mit LlamaIndex. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!