ÎncepețiÎncepe gratuit

Proiectat cu stare: construiește un instrument RAG de căutare

În lecția anterioară, ai văzut cum se poate construi și interoga o bază de cunoștințe bazată pe vectori, care conține manuale de electrocasnice, folosind încorporări (embeddings).

Acum vei construi un instrument personalizat care împachetează această logică de căutare, astfel încât un agent să îl poată folosi pentru a răspunde la întrebări despre electrocasnice.

Instrumentul pe care îl scrii va extinde clasa de bază Tool și va expune un singur input: o întrebare despre funcționarea unui electrocasnic.

Ai deja acces la:

  • O variabilă numită vector_store, care conține indexul FAISS pre-construit
  • Fragmente de documente cu conținut din manuale de electrocasnice, încorporate și pregătite pentru căutare

Sarcina ta este să implementezi structura și logica instrumentului care va face această bază de cunoștințe accesibilă unui agent.

Acest exercițiu face parte din cursul

Agenți AI cu Hugging Face smolagents

Vezi cursul

Instrucțiuni pentru exercițiu

  • Acceptă un parametru vector_store în metoda __init__().
  • Adaugă query ca parametru al metodei forward().
  • Folosește self.k pentru a stabili câte documente relevante să fie returnate din căutarea de similaritate.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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."
Editează și rulează codul