ComeçarComece de graça

Com estado por design: construa uma ferramenta de busca RAG

Na lição anterior, você viu como criar e pesquisar uma base de conhecimento de manuais de eletrodomésticos baseada em vetores usando embeddings.

Agora, você vai construir uma ferramenta personalizada que encapsula essa lógica de busca, para que um agente possa usá-la para responder a perguntas sobre eletrodomésticos.

A ferramenta que você vai escrever será uma subclasse da classe base Tool e exporá uma única entrada: uma pergunta sobre a operação do eletrodoméstico

Você já tem acesso a:

  • Uma variável chamada vector_store, que contém seu índice FAISS pré-construído
  • Blocos de documentos com conteúdo de manuais de eletrodomésticos, incorporados e prontos para busca

Sua tarefa é implementar a estrutura e a lógica da ferramenta que tornará essa base de conhecimento acessível a um agente.

Este exercício faz parte do curso

Agentes de IA com Hugging Face smolagents

Ver curso

Instruções do exercício

  • Aceite um parâmetro vector_store no método __init__().
  • Adicione query como parâmetro do método forward().
  • Use self.k para definir quantos documentos relevantes devem ser retornados pela busca por similaridade.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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."
Editar e executar o código