NexusEter / app.py
nexuseter's picture
Update app.py
d5ee7fd verified
import json
import requests
import PyPDF2
import gradio as gr
from io import BytesIO
# Nome do JSON
json_filename = "nexus_eter_pdf.json"
# Tentar carregar JSON
try:
with open(json_filename, "r", encoding="utf-8") as file:
nexus_eter_data = json.load(file)
except FileNotFoundError:
nexus_eter_data = {"error": "❌ Arquivo JSON não encontrado!"}
except json.JSONDecodeError:
nexus_eter_data = {"error": "❌ Erro ao carregar JSON!"}
# Função para baixar um PDF hospedado
def baixar_pdf(pdf_url):
try:
pdf_url = pdf_url.replace("blob/", "")
response = requests.get(pdf_url)
if response.status_code == 200:
return BytesIO(response.content)
else:
return None
except:
return None
# Função para extrair texto de um PDF
def extrair_texto_pdf(pdf_url):
pdf_file = baixar_pdf(pdf_url)
if pdf_file is None:
return ""
pdf_reader = PyPDF2.PdfReader(pdf_file)
texto_extraido = ""
for page in pdf_reader.pages:
texto_extraido += page.extract_text() + "\n"
return texto_extraido
# Processar todos os PDFs ao iniciar
texto_total = ""
for pdf in nexus_eter_data["Nexus_Eter"]["PDF_Fontes"]:
texto_total += f"\n📜 **Fonte: {pdf['Nome']}**\n"
texto_total += extrair_texto_pdf(pdf["Link"])
# Função de busca no conteúdo extraído
def consultar_nexus_eter(pergunta):
if not texto_total.strip():
return "Erro: Nenhum conhecimento foi carregado."
resultados = [linha for linha in texto_total.split("\n") if pergunta.lower() in linha.lower()]
if resultados:
return "🔍 Nexus Éter encontrou:\n\n" + "\n".join(resultados[:10]) # Retorna até 10 respostas relevantes
else:
return "Nexus Éter responde: não encontrei essa resposta nos documentos."
# Criar interface
interface = gr.Interface(
fn=consultar_nexus_eter,
inputs=gr.Textbox(label="Pergunte qualquer coisa ao Nexus Éter"),
outputs="text",
title="Consulta Nexus Éter Expandido",
description="Nexus Éter agora busca respostas de múltiplos documentos hospedados."
)
interface.launch()