File size: 3,804 Bytes
a1c7ef3
 
 
 
 
01fb5e4
b44c1d6
01fb5e4
a1c7ef3
01fb5e4
a1c7ef3
01fb5e4
a1c7ef3
 
b44c1d6
a1c7ef3
01fb5e4
b44c1d6
a1c7ef3
01fb5e4
 
a1c7ef3
01fb5e4
 
 
 
 
b44c1d6
 
a1c7ef3
01fb5e4
b44c1d6
01fb5e4
 
a1c7ef3
 
b44c1d6
a1c7ef3
 
 
 
 
01fb5e4
 
a1c7ef3
 
 
 
 
 
 
01fb5e4
a1c7ef3
01fb5e4
a1c7ef3
01fb5e4
 
 
 
 
 
 
b44c1d6
01fb5e4
a1c7ef3
01fb5e4
a1c7ef3
b44c1d6
01fb5e4
 
b44c1d6
 
 
a1c7ef3
 
 
 
 
 
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

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()