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
Anleitung zur Übung
- Akzeptiere einen Parameter
vector_storein der Methode__init__(). - Füge
queryals Parameter der Methodeforward()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."