AgentPDF / app.py
rwayz's picture
Deploy
6b29104
"""
Aplicação principal do AgentPDF.
Este é o ponto de entrada da aplicação que inicializa
a interface Gradio e configura o ambiente.
"""
import os
import sys
import warnings
from pathlib import Path
# Adiciona o diretório raiz ao path
root_dir = Path(__file__).parent
sys.path.insert(0, str(root_dir))
# Suprime warnings desnecessários
warnings.filterwarnings("ignore", category=UserWarning)
warnings.filterwarnings("ignore", category=FutureWarning)
from interface.modern_interface import create_modern_gradio_app
from utils.config import Config
from utils.logger import main_logger, setup_logger
def setup_environment():
"""Configura o ambiente da aplicação."""
# Configura logging
setup_logger("AgentPDF", "INFO")
# Verifica configurações
if not Config.validate_config():
main_logger.warning("⚠️ Configuração incompleta detectada!")
main_logger.warning(" Certifique-se de configurar OPENAI_API_KEY no arquivo .env")
main_logger.warning(" A aplicação pode não funcionar corretamente sem a chave da API.")
# Cria diretórios necessários
os.makedirs(Config.UPLOAD_DIR, exist_ok=True)
os.makedirs(Config.TEMP_DIR, exist_ok=True)
main_logger.info("🚀 Ambiente configurado com sucesso!")
def main():
"""Função principal da aplicação."""
try:
# Banner de inicialização
print("""
╔══════════════════════════════════════════════════════════════╗
║ 🤖 AgentPDF ║
║ ║
║ Chat Inteligente com Documentos PDF ║
║ ║
║ Powered by LangChain + LangGraph + GPT-4o-mini ║
╚══════════════════════════════════════════════════════════════╝
""")
# Configura ambiente
setup_environment()
# Informações de inicialização
main_logger.info("🔧 Inicializando AgentPDF...")
main_logger.info(f"📁 Diretório de upload: {Config.UPLOAD_DIR}")
main_logger.info(f"🌐 Porta: {Config.GRADIO_PORT}")
main_logger.info(f"🔑 OpenAI API configurada: {'✅' if Config.OPENAI_API_KEY else '❌'}")
# Cria e executa a aplicação Gradio
main_logger.info("🎨 Criando interface Gradio moderna...")
app = create_modern_gradio_app()
main_logger.info("🚀 Iniciando servidor...")
main_logger.info(f"🌍 Acesse: http://localhost:{Config.GRADIO_PORT}")
# Executa a aplicação
app.launch(
server_name="0.0.0.0",
server_port=Config.GRADIO_PORT,
share=Config.GRADIO_SHARE,
show_error=True,
quiet=False
)
except KeyboardInterrupt:
main_logger.info("👋 Aplicação interrompida pelo usuário")
sys.exit(0)
except Exception as e:
main_logger.error(f"❌ Erro fatal na aplicação: {e}")
main_logger.exception("Detalhes do erro:")
sys.exit(1)
if __name__ == "__main__":
main()