""" Paso 3: Generación de descripciones culturales con GPT-2 Spanish. """ import torch from core.models import ModelManager DETAIL_INSTRUCTIONS = { 1: "en 1 frase breve", 2: "en 2-3 frases", 3: "en 3-4 frases detalladas con contexto histórico", } def generate_description( dish_name: str, manager: ModelManager, english_name: str = "", detail_level: int = 2, ) -> str: """ Genera descripción cultural del plato en español. Args: dish_name: Nombre del plato en español. manager: ModelManager con los modelos cargados. english_name: Traducción al inglés (opcional). detail_level: 1=breve, 2=medio, 3=detallado. Returns: Descripción del plato en español. """ prompt = ( f'Describe el plato español "{dish_name}" para turistas extranjeros ' f"{DETAIL_INSTRUCTIONS[detail_level]}. " "Incluye: ingredientes principales, método de preparación, " "y significado cultural.\n\nDescripción:" ) try: inputs = manager.description_tokenizer( prompt, return_tensors="pt", padding=True ).to(manager.device) with torch.no_grad(): outputs = manager.description_model.generate( **inputs, max_new_tokens=150 if detail_level <= 2 else 200, temperature=0.7, top_p=0.9, do_sample=True, pad_token_id=manager.description_tokenizer.eos_token_id, repetition_penalty=1.2, ) generated_text = manager.description_tokenizer.decode( outputs[0], skip_special_tokens=True ) description = generated_text.replace(prompt, "").strip() description = description.split("\n")[0][:500] return description if description else "Descripción no disponible." except Exception as e: print(f"❌ Error generando descripción: {e}") return "Error al generar descripción."