Spaces:
Runtime error
Runtime error
| # app.py | |
| import gradio as gr | |
| from transformers import pipeline | |
| # --- 1. Carga del Modelo de Lenguaje --- | |
| # Utilizamos un pipeline de Hugging Face para simplificar la interacci贸n con el modelo. | |
| # Intentamos cargar el modelo en GPU (device=0) si est谩 disponible para un rendimiento m谩s r谩pido, | |
| # de lo contrario, se carga en CPU. | |
| try: | |
| generator = pipeline("text-generation", model="google/gemma-2b-it", device=0) | |
| except Exception: | |
| generator = pipeline("text-generation", model="google/gemma-2b-it") | |
| # --- 2. Funci贸n para Generar Contenido Educativo --- | |
| def generar_contenido_audiovisual(tema, idioma): | |
| """ | |
| Genera un m贸dulo de aprendizaje interactivo sobre un tipo de audiovisual espec铆fico | |
| basado en el tema y el idioma. | |
| """ | |
| # Definimos un prompt detallado para guiar al modelo. | |
| # El modelo actuar谩 como un experto en educaci贸n y audiovisual. | |
| prompt = f"Act煤a como un experto en educaci贸n y audiovisual. Genera un m贸dulo de aprendizaje interactivo sobre '{tema}'.\n" \ | |
| f"Este m贸dulo debe incluir:\n" \ | |
| f"1. Una introducci贸n concisa.\n" \ | |
| f"2. Caracter铆sticas principales del tipo de audiovisual.\n" \ | |
| f"3. Ejemplos relevantes.\n" \ | |
| f"4. Una actividad pr谩ctica o pregunta de reflexi贸n para el estudiante.\n" \ | |
| f"El contenido debe ser adecuado para estudiantes de tecnolog铆a e inform谩tica y estar redactado en '{idioma}'.\n" \ | |
| f"Aseg煤rate de que la explicaci贸n sea clara, concisa y atractiva." | |
| # Usamos el generador para obtener una respuesta del modelo. | |
| # max_new_tokens: Controla la longitud m谩xima del texto generado. Un valor m谩s alto permite m谩s contenido. | |
| # num_return_sequences: Genera una 煤nica respuesta. | |
| # truncation=True: Para manejar prompts largos si es necesario. | |
| response = generator( | |
| prompt, | |
| max_new_tokens=1500, # Un valor de 1500 tokens deber铆a ser suficiente para un m贸dulo completo | |
| num_return_sequences=1, | |
| truncation=True, | |
| add_special_tokens=True | |
| ) | |
| # El resultado del pipeline es una lista de diccionarios; extraemos el texto. | |
| # A veces, el prompt puede repetirse en la salida, as铆 que lo eliminamos si es el caso. | |
| generated_text = response[0]['generated_text'] | |
| if generated_text.startswith(prompt): | |
| generated_text = generated_text[len(prompt):].strip() | |
| return generated_text | |
| # --- 3. Definici贸n de la Interfaz de Usuario con Gradio --- | |
| # Configuramos los componentes de entrada (inputs) y salida (outputs) para la aplicaci贸n. | |
| interfaz = gr.Interface( | |
| fn=generar_contenido_audiovisual, # La funci贸n Python que se ejecutar谩 | |
| inputs=[ | |
| gr.Textbox( | |
| label="Tema del Audiovisual", | |
| lines=2, | |
| placeholder="Ej. Cine Documental, Animaci贸n 3D, Videoclip Musical" | |
| ), | |
| gr.Radio( | |
| ["Espa帽ol", "Ingl茅s"], | |
| label="Idioma del Contenido" | |
| ) | |
| ], | |
| outputs=gr.Markdown(label="Contenido del M贸dulo de Aprendizaje"), # Usamos Markdown para un formato de texto enriquecido | |
| title="馃挕 Ambiente Virtual de Aprendizaje: Tipos de Audiovisual 馃帴", | |
| description="Explora diferentes tipos de audiovisuales. Ingresa un tema y el idioma para generar un m贸dulo de aprendizaje personalizado. Ideal para docentes y estudiantes de tecnolog铆a e inform谩tica.", | |
| theme="huggingface", # Un tema visual que se integra bien con Hugging Face Spaces | |
| examples=[ # Ejemplos predefinidos para facilitar la prueba y el uso | |
| ["Cortometraje de Ficci贸n", "Espa帽ol"], | |
| ["Realidad Virtual Inmersiva", "Ingl茅s"], | |
| ["Vlog de YouTube", "Espa帽ol"] | |
| ] | |
| ) | |
| # --- 4. Lanzamiento de la Aplicaci贸n --- | |
| if __name__ == "__main__": | |
| interfaz.launch() |