import os import gradio as gr import torch from transformers import BartForConditionalGeneration, BartTokenizer import asyncio import selectors # Parche para Python 3.13 y Gradio class SafeSelector(selectors.DefaultSelector): def get_map(self): try: return super().get_map() except Exception: return {} # Aplicar el parche antes de importar Transformers selector = SafeSelector() loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) # ID de tu repositorio con los archivos de image_80ac1b.png model_id = "ivanmorals/dostoevsky_bart" # Carga explícita del modelo y tokenizador tokenizer = BartTokenizer.from_pretrained(model_id) model = BartForConditionalGeneration.from_pretrained(model_id) def formal_to_dostoevsky(texto_informal): # Aseguramos que el input no esté vacío if not texto_informal.strip(): return "El silencio es, a veces, la confesión más aterradora..." inputs = tokenizer( texto_informal, return_tensors="pt", truncation=True, max_length=512 ) # Forzamos parámetros de generación específicos para transformación de estilo output_ids = model.generate( inputs["input_ids"], attention_mask=inputs["attention_mask"], max_length=300, min_length=30, # Forzamos a que desarrolle la idea num_beams=5, do_sample=True, # Necesario para usar temperature temperature=0.75, top_p=0.80, no_repeat_ngram_size=3, repetition_penalty=1.7, early_stopping=True ) # Decodificar omitiendo los tokens especiales resultado = tokenizer.decode(output_ids[0], skip_special_tokens=True) # Validación: Si el modelo sigue devolviendo lo mismo, forzamos un post-procesado básico if resultado.strip().lower() == texto_informal.strip().lower(): return f"¡Ah! ¿Acaso no comprendes que... {resultado}? Es la miseria del alma lo que habita en esas palabras." return resultado # Interfaz enfocada en la transformación de estilo demo = gr.Interface( fn=formal_to_dostoevsky, inputs=gr.Textbox( label="Texto de entrada", placeholder="Ej: 'Me siento mal porque no tengo dinero y la ciudad es fea.'" ), outputs=gr.Textbox(label="Versión de Dostoievski"), title="Dostoevsky-zador", description="Transforma pensamientos cotidianos en pasajes de angustia existencialista rusa." ) demo.launch()