Spaces:
Sleeping
Sleeping
| 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, | |
| } | |