final_project / app /agent.py
Ana2012
Deploy backend FastAPI para HF Spaces
614aa6b
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,
}