|
|
""" |
|
|
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 |
|
|
|
|
|
|
|
|
root_dir = Path(__file__).parent |
|
|
sys.path.insert(0, str(root_dir)) |
|
|
|
|
|
|
|
|
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.""" |
|
|
|
|
|
setup_logger("AgentPDF", "INFO") |
|
|
|
|
|
|
|
|
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.") |
|
|
|
|
|
|
|
|
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: |
|
|
|
|
|
print(""" |
|
|
╔══════════════════════════════════════════════════════════════╗ |
|
|
║ 🤖 AgentPDF ║ |
|
|
║ ║ |
|
|
║ Chat Inteligente com Documentos PDF ║ |
|
|
║ ║ |
|
|
║ Powered by LangChain + LangGraph + GPT-4o-mini ║ |
|
|
╚══════════════════════════════════════════════════════════════╝ |
|
|
""") |
|
|
|
|
|
|
|
|
setup_environment() |
|
|
|
|
|
|
|
|
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 '❌'}") |
|
|
|
|
|
|
|
|
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}") |
|
|
|
|
|
|
|
|
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() |
|
|
|