LoslegenKostenlos starten

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

<Kurs>AI-Agents mit Hugging Face smolagents</Kurs>
Kurs ansehen

Übungsanweisungen

  • 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 praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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