from .search import SearchEngine class ShoppingAgent: def __init__(self): self.search_engine = SearchEngine() self.search_engine.load() def runtime_info(self): return self.search_engine.runtime_info() def montar_resposta(self, query, resultados): if not resultados: return f'Não encontrei produtos relevantes para "{query}".' nomes = [item["product_name"] for item in resultados[:3]] if len(nomes) == 1: return f'Encontrei um produto relevante para "{query}": {nomes[0]}.' if len(nomes) == 2: return f'Encontrei produtos relevantes para "{query}", com destaque para {nomes[0]} e {nomes[1]}.' return ( f'Encontrei produtos relevantes para "{query}", com destaque para ' f'{nomes[0]}, {nomes[1]} e {nomes[2]}.' ) def verificar_resposta(self, resposta, resultados): if not resultados: return resposta nomes_resultados = [item["product_name"] for item in resultados] resposta_limpa = resposta.lower() mencoes_validas = any(nome.lower() in resposta_limpa for nome in nomes_resultados) if mencoes_validas: return resposta top1 = resultados[0]["product_name"] return f"{resposta} O item mais relevante encontrado foi {top1}." def responder(self, query, top_k=5): busca = self.search_engine.buscar(query, top_k=top_k) resultados = busca["resultados"] resposta_inicial = self.montar_resposta(query, resultados) resposta_final = self.verificar_resposta(resposta_inicial, resultados) return { "query": query, "categoria_inferida": busca["categoria_inferida"], "answer": resposta_final, "products": resultados, }