juanbenitez commited on
Commit
01fb5e4
verified
1 Parent(s): a1c7ef3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -31
app.py CHANGED
@@ -4,66 +4,78 @@ import gradio as gr
4
  from transformers import pipeline
5
 
6
  # --- 1. Carga del Modelo de Lenguaje ---
7
- # Usaremos un pipeline de Hugging Face para facilitar la interacci贸n con el modelo.
8
- # Puedes probar otros modelos si este no se ajusta perfectamente a tus necesidades
9
- # o si deseas uno m谩s grande/peque帽o.
10
- # Ejemplo con Gemma-2B-IT:
11
  try:
12
- generator = pipeline("text-generation", model="google/gemma-2b-it", device=0) # device=0 para usar GPU si est谩 disponible
13
  except Exception:
14
- generator = pipeline("text-generation", model="google/gemma-2b-it") # Si no hay GPU, usa CPU
15
-
16
 
17
  # --- 2. Funci贸n para Generar Contenido Educativo ---
18
  def generar_contenido_audiovisual(tema, duracion, lenguaje):
19
  """
20
- Genera contenido educativo sobre un tipo de audiovisual espec铆fico.
 
21
  """
 
 
22
  prompt = f"Act煤a como un experto en educaci贸n y audiovisual. Genera un m贸dulo de aprendizaje interactivo sobre '{tema}'.\n" \
23
- f"Incluye una introducci贸n, caracter铆sticas principales, ejemplos, y una actividad pr谩ctica.\n" \
24
- f"El contenido debe ser adecuado para una duraci贸n de '{duracion}' y estar en '{lenguaje}'.\n" \
 
 
 
 
25
  f"Aseg煤rate de que la explicaci贸n sea clara, concisa y atractiva para estudiantes de tecnolog铆a e inform谩tica."
26
 
27
- # Usamos el generador para obtener una respuesta del modelo
28
- # max_new_tokens controla la longitud m谩xima de la respuesta generada.
29
- # num_return_sequences es para generar m煤ltiples respuestas, pero para un AVA, una es suficiente.
30
- # truncation=True para manejar prompts largos si es necesario.
31
- # add_special_tokens=True para asegurar que el modelo maneje correctamente la entrada.
32
- # Puedes ajustar los par谩metros como 'do_sample', 'temperature', 'top_p' para controlar la creatividad.
33
  response = generator(
34
  prompt,
35
- max_new_tokens=1000, # Ajusta esto para m谩s o menos contenido
36
  num_return_sequences=1,
37
  truncation=True,
38
  add_special_tokens=True
39
  )
40
 
41
- # El resultado del pipeline es una lista de diccionarios, tomamos el texto generado.
42
- # A veces, el prompt inicial puede repetirse, as铆 que lo eliminamos si es el caso.
43
  generated_text = response[0]['generated_text']
44
  if generated_text.startswith(prompt):
45
  generated_text = generated_text[len(prompt):].strip()
46
 
47
  return generated_text
48
 
49
-
50
  # --- 3. Definici贸n de la Interfaz de Usuario con Gradio ---
51
- # Definimos los componentes de entrada y salida para nuestra funci贸n.
52
  interfaz = gr.Interface(
53
- fn=generar_contenido_audiovisual,
54
  inputs=[
55
- gr.Textbox(label="Tema del Audiovisual (ej. Cine Documental, Animaci贸n 3D, Videoclip Musical)", lines=2, placeholder="Ej. Cortometraje de Ficci贸n"),
56
- gr.Dropdown(["5 minutos", "15 minutos", "30 minutos", "Una clase completa (60 minutos)"], label="Duraci贸n Estimada del M贸dulo"),
57
- gr.Radio(["Espa帽ol", "Ingl茅s"], label="Lenguaje del Contenido")
 
 
 
 
 
 
 
 
 
 
58
  ],
59
- outputs=gr.Markdown(label="Contenido del M贸dulo de Aprendizaje"), # Usamos Markdown para un formato m谩s rico
60
  title="馃挕 Ambiente Virtual de Aprendizaje: Tipos de Audiovisual 馃帴",
61
  description="Explora diferentes tipos de audiovisuales. Ingresa un tema, la duraci贸n deseada y el lenguaje para generar un m贸dulo de aprendizaje personalizado. Ideal para docentes y estudiantes de tecnolog铆a e inform谩tica.",
62
- theme="huggingface", # Un tema que encaja bien con la plataforma
63
- examples=[
64
- ["Cine Documental", "30 minutos", "Espa帽ol"],
65
- ["Animaci贸n Stop Motion", "15 minutos", "Ingl茅s"],
66
- ["Realidad Virtual Inmersiva", "Una clase completa (60 minutos)", "Espa帽ol"]
67
  ]
68
  )
69
 
 
4
  from transformers import pipeline
5
 
6
  # --- 1. Carga del Modelo de Lenguaje ---
7
+ # Utilizamos un pipeline de Hugging Face para simplificar la interacci贸n con el modelo.
8
+ # Se intenta cargar el modelo en GPU (device=0) si est谩 disponible para un rendimiento m谩s r谩pido,
9
+ # de lo contrario, se carga en CPU.
 
10
  try:
11
+ generator = pipeline("text-generation", model="google/gemma-2b-it", device=0)
12
  except Exception:
13
+ generator = pipeline("text-generation", model="google/gemma-2b-it")
 
14
 
15
  # --- 2. Funci贸n para Generar Contenido Educativo ---
16
  def generar_contenido_audiovisual(tema, duracion, lenguaje):
17
  """
18
+ Genera un m贸dulo de aprendizaje interactivo sobre un tipo de audiovisual espec铆fico
19
+ basado en el tema, duraci贸n y lenguaje.
20
  """
21
+ # Definimos un prompt detallado para guiar al modelo.
22
+ # El modelo actuar谩 como un experto en educaci贸n y audiovisual.
23
  prompt = f"Act煤a como un experto en educaci贸n y audiovisual. Genera un m贸dulo de aprendizaje interactivo sobre '{tema}'.\n" \
24
+ f"Este m贸dulo debe incluir:\n" \
25
+ f"1. Una introducci贸n concisa.\n" \
26
+ f"2. Caracter铆sticas principales del tipo de audiovisual.\n" \
27
+ f"3. Ejemplos relevantes.\n" \
28
+ f"4. Una actividad pr谩ctica o pregunta de reflexi贸n para el estudiante.\n" \
29
+ f"El contenido debe ser adecuado para una duraci贸n de '{duracion}' y estar redactado en '{lenguaje}'.\n" \
30
  f"Aseg煤rate de que la explicaci贸n sea clara, concisa y atractiva para estudiantes de tecnolog铆a e inform谩tica."
31
 
32
+ # Usamos el generador para obtener una respuesta del modelo.
33
+ # max_new_tokens: Controla la longitud m谩xima del texto generado. Ajusta si necesitas m谩s o menos contenido.
34
+ # num_return_sequences: Genera una 煤nica respuesta.
35
+ # truncation=True: Para manejar prompts largos si es necesario.
 
 
36
  response = generator(
37
  prompt,
38
+ max_new_tokens=1500, # Un valor m谩s alto para m贸dulos m谩s completos
39
  num_return_sequences=1,
40
  truncation=True,
41
  add_special_tokens=True
42
  )
43
 
44
+ # El resultado del pipeline es una lista de diccionarios; extraemos el texto.
45
+ # A veces, el prompt puede repetirse en la salida, as铆 que lo eliminamos si es el caso.
46
  generated_text = response[0]['generated_text']
47
  if generated_text.startswith(prompt):
48
  generated_text = generated_text[len(prompt):].strip()
49
 
50
  return generated_text
51
 
 
52
  # --- 3. Definici贸n de la Interfaz de Usuario con Gradio ---
53
+ # Configuramos los componentes de entrada (inputs) y salida (outputs) para la aplicaci贸n.
54
  interfaz = gr.Interface(
55
+ fn=generar_contenido_audiovisual, # La funci贸n Python que se ejecutar谩
56
  inputs=[
57
+ gr.Textbox(
58
+ label="Tema del Audiovisual",
59
+ lines=2,
60
+ placeholder="Ej. Cine Documental, Animaci贸n 3D, Videoclip Musical"
61
+ ),
62
+ gr.Dropdown(
63
+ ["5 minutos", "15 minutos", "30 minutos", "Una clase completa (60 minutos)"],
64
+ label="Duraci贸n Estimada del M贸dulo"
65
+ ),
66
+ gr.Radio(
67
+ ["Espa帽ol", "Ingl茅s"],
68
+ label="Lenguaje del Contenido"
69
+ )
70
  ],
71
+ outputs=gr.Markdown(label="Contenido del M贸dulo de Aprendizaje"), # Usamos Markdown para un formato de texto enriquecido
72
  title="馃挕 Ambiente Virtual de Aprendizaje: Tipos de Audiovisual 馃帴",
73
  description="Explora diferentes tipos de audiovisuales. Ingresa un tema, la duraci贸n deseada y el lenguaje para generar un m贸dulo de aprendizaje personalizado. Ideal para docentes y estudiantes de tecnolog铆a e inform谩tica.",
74
+ theme="huggingface", # Un tema visual que se integra bien con Hugging Face Spaces
75
+ examples=[ # Ejemplos predefinidos para facilitar la prueba y el uso
76
+ ["Cortometraje de Ficci贸n", "30 minutos", "Espa帽ol"],
77
+ ["Realidad Virtual Inmersiva", "Una clase completa (60 minutos)", "Ingl茅s"],
78
+ ["Vlog de YouTube", "5 minutos", "Espa帽ol"]
79
  ]
80
  )
81