LoslegenKostenlos loslegen

Stateful by Design: Baue ein RAG-Such-Tool

In der vorherigen Lektion hast du gesehen, wie eine vektorbasierte Wissensbasis aus Gerätehandbüchern mit Embeddings aufgebaut und durchsucht werden kann.

Jetzt baust du ein benutzerdefiniertes Tool, das diese Suchlogik kapselt, damit ein Agent es nutzen kann, um Fragen zu Haushaltsgeräten zu beantworten.

Das Tool, das du schreibst, wird von der Basisklasse Tool erben und genau eine Eingabe bereitstellen: eine Frage zur Bedienung eines Geräts.

Du hast bereits Zugriff auf:

  • Eine Variable namens vector_store, die deinen vorab erstellten FAISS-Index enthält
  • Dokument-Chunks mit Inhalten aus Gerätehandbüchern, eingebettet und bereit für die Suche

Deine Aufgabe ist es, die Struktur und Logik des Tools zu implementieren, das diese Wissensbasis für einen Agenten zugänglich macht.

Diese Übung ist Teil des Kurses

AI-Agents mit Hugging Face smolagents

Kurs anzeigen

Anleitung zur Übung

  • Akzeptiere einen Parameter vector_store in der Methode __init__().
  • Füge query als Parameter der Methode forward() hinzu.
  • Verwende self.k, um festzulegen, wie viele relevante Dokumente von der Similarity-Suche zurückgegeben werden sollen.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

class ApplianceSearchTool(Tool):
    name = "appliance_manual_search"
    description = "Search appliance manuals for maintenance and usage information"
    inputs = {"query": {"type": "string", "description": "Question about appliance operation"}}
    output_type = "string"

    # Pass the vector store into the constructor
    def __init__(self, ____, k=3):
        super().__init__()
        self.vector_store = vector_store
        self.k = k

    # Accept the query string as input to the forward method
    def forward(self, ____):
        # Use self.k here to specify how many chunks to return
        docs = self.vector_store.similarity_search(query, k=____)
        return "\n\n".join(doc.page_content for doc in docs) or "No relevant manual sections found."
Code bearbeiten und ausführen