Spaces:
Runtime error
Runtime error
| """ | |
| 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." | |