Spaces:
Running
Running
File size: 3,104 Bytes
e43cade e75056a e43cade 352982b d63e7ff f216529 d1b4b73 e75056a e43cade 9ea5a21 e43cade 7fd17ee e75056a 7fd17ee e02d426 d63e7ff e75056a d63e7ff 8a284d2 d63e7ff e75056a d63e7ff e75056a d63e7ff e75056a d63e7ff d1b4b73 aa1e54a 7fd17ee aa1e54a e75056a 8a284d2 e75056a 7fd17ee e75056a 352982b e75056a 352982b aa1e54a e75056a 8a284d2 e75056a 7fd17ee e75056a 352982b e75056a 352982b 0e1f698 352982b 0e1f698 352982b 0e1f698 352982b 0e1f698 352982b 0e1f698 352982b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
"""
main.py - Entry point oficial para Hugging Face Spaces
Akira com OpenHermes GGUF + LoRA angolano + APIs + DB persistente
TUDO FUNCIONANDO NO HF SPACES CPU FREE!
"""
import os
import logging
from loguru import logger
from huggingface_hub import login
# ==========================
# 1. DIRETÓRIOS PERSISTENTES
# ==========================
DATA_DIR = "/home/user/data"
FINETUNED_DIR = "/home/user/data/finetuned_hermes"
os.makedirs(DATA_DIR, exist_ok=True)
os.makedirs(FINETUNED_DIR, exist_ok=True)
# ==========================
# 2. CONFIG GLOBAL
# ==========================
import modules.config as config
config.DB_PATH = os.path.join(DATA_DIR, "akira.db")
config.FINETUNED_PATH = FINETUNED_DIR
# ==========================
# 3. HF LOGIN (SECRET)
# ==========================
HF_TOKEN = os.getenv("HF_TOKEN")
if HF_TOKEN:
try:
login(token=HF_TOKEN)
logger.info("HF LOGIN OK COM TOKEN DO SECRET!")
except Exception as e:
logger.warning(f"HF LOGIN FALHOU: {e}")
else:
logger.info("Sem HF_TOKEN → modelos públicos OK")
# ==========================
# 4. LOGS BONITOS
# ==========================
logger.info("GGUF OpenHermes Q4_K_M já baixado no build → TUDO PRONTO!")
logger.info("Akira com sotaque de Luanda carregando...")
# ==========================
# 5. CARREGA O LOCAL LLM (GGUF + LoRA)
# ==========================
from modules.local_llm import HermesLLM
if HermesLLM.is_available():
logger.info("OpenHermes 2.5 Q4_K_M + LoRA → ONLINE EM 4.8 GB!")
logger.info("AKIRA COM SOTAQUE DE LUANDA 100% ATIVA!")
else:
logger.warning("Modelo local off → usando APIs (Mistral/Gemini)")
# ==========================
# 6. INICIA BANCO DE DADOS
# ==========================
from modules.database import Database
db = Database(config.DB_PATH)
# ==========================
# 7. INICIA TREINAMENTO PERIÓDICO
# ==========================
from modules.treinamento import Treinamento
treino = Treinamento(db, interval_hours=4)
if getattr(config, "START_PERIODIC_TRAINER", True):
treino.start_periodic_training()
logger.info("Treinamento LoRA angolano ativo a cada 4h!")
# ==========================
# 8. CRIA A APLICAÇÃO FLASK (COM AkiraAPI)
# ==========================
from modules.api import AkiraAPI
def create_app():
logger.info("Iniciando AkiraAPI com OpenHermes GGUF + LoRA angolano...")
try:
akira = AkiraAPI(config)
logger.info("AKIRAAPI CARREGADA COM SUCESSO!")
return akira.app
except Exception as e:
logger.exception(f"ERRO AO INICIAR AkiraAPI: {e}")
raise
app = create_app()
# ==========================
# ROTAS DE SAÚDE
# ==========================
@app.route("/")
def index():
return "AKIRA IA ONLINE! Bué fixe, kota! Vamos kandandar!", 200
@app.route("/health")
def health():
return "OK", 200
# ==========================
# EXECUÇÃO (NUNCA MAIS LOOP INFINITO AQUI!)
# ==========================
if __name__ == "__main__":
logger.info("SERVIDOR FLASK RODANDO EM http://0.0.0.0:7860")
app.run(host="0.0.0.0", port=7860, debug=False, threaded=True) |