JairoCesar commited on
Commit
ef818a6
·
verified ·
1 Parent(s): 5e4600e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -40
app.py CHANGED
@@ -23,29 +23,33 @@ def extract_and_clean_json(text):
23
  json_str = re.sub(r',\s*}', '}', json_str)
24
  json_str = re.sub(r',\s*]', ']', json_str)
25
 
26
- # Verificar si es un JSON válido
27
- data = json.loads(json_str)
28
- return data
 
 
 
 
 
 
29
  else:
30
  st.error("No se encontró un JSON válido en la respuesta")
31
  st.text("Respuesta original del modelo:")
32
  st.code(text)
33
  return None
34
- except json.JSONDecodeError as e:
35
- st.error(f"Error al decodificar JSON: {str(e)}")
36
- st.text("JSON procesado (después de limpieza):")
37
- st.code(json_str)
38
  st.text("Respuesta original del modelo:")
39
  st.code(text)
40
  return None
41
 
42
  def generate_presentation_content(topic, client):
43
- prompt_part1 = f"""Crea una presentación de PowerPoint sobre el tema: {topic}.
44
- Genera exactamente 5 diapositivas con la siguiente estructura:
45
  1. Título de la presentación
46
  2. Introducción
47
  3. Índice
48
- 4. Contenido principal (2 diapositivas)
49
 
50
  Formatea la salida como un JSON con la siguiente estructura:
51
  {{
@@ -59,38 +63,19 @@ def generate_presentation_content(topic, client):
59
  No incluyas saltos de línea o caracteres especiales dentro del JSON.
60
  """
61
 
62
- prompt_part2 = f"""Crea las siguientes 4 diapositivas de la presentación de PowerPoint sobre el tema: {topic}.
63
- Genera exactamente 4 diapositivas con la siguiente estructura:
64
- 5-8. Contenido principal (4 diapositivas)
65
-
66
- Formatea la salida como un JSON con la siguiente estructura:
67
- {{
68
- "slides": [
69
- {{"title": "Título de la diapositiva 5", "content": "Contenido de la diapositiva 5"}},
70
- {{"title": "Título de la diapositiva 6", "content": "Contenido de la diapositiva 6"}},
71
- ...
72
- ]
73
- }}
74
- Asegúrate de que la salida sea un JSON válido sin ningún texto adicional antes o después.
75
- No incluyas saltos de línea o caracteres especiales dentro del JSON.
76
- """
77
-
78
- response_part1 = client.text_generation(prompt_part1, max_new_tokens=1500, temperature=0.7)
79
- response_part2 = client.text_generation(prompt_part2, max_new_tokens=1500, temperature=0.7)
80
 
81
- slides_data_part1 = extract_and_clean_json(response_part1)
82
- slides_data_part2 = extract_and_clean_json(response_part2)
83
 
84
- if slides_data_part1 and slides_data_part2:
85
- if 'slides' in slides_data_part1 and 'slides' in slides_data_part2:
86
- slides = slides_data_part1['slides'] + slides_data_part2['slides']
87
- if len(slides) == 9:
88
- return slides
89
- else:
90
- st.error(f"El JSON no contiene exactamente 9 diapositivas. Contiene {len(slides)} diapositivas.")
91
- st.text("JSON procesado:")
92
- st.code(json.dumps(slides, indent=4))
93
- return None
94
  return None
95
 
96
  def apply_design(prs, design):
 
23
  json_str = re.sub(r',\s*}', '}', json_str)
24
  json_str = re.sub(r',\s*]', ']', json_str)
25
 
26
+ # Verificación y análisis del JSON
27
+ try:
28
+ data = json.loads(json_str)
29
+ return data
30
+ except json.JSONDecodeError as e:
31
+ st.error(f"Error al decodificar JSON limpio: {str(e)}")
32
+ st.text("JSON procesado (después de limpieza):")
33
+ st.code(json_str)
34
+ return None
35
  else:
36
  st.error("No se encontró un JSON válido en la respuesta")
37
  st.text("Respuesta original del modelo:")
38
  st.code(text)
39
  return None
40
+ except Exception as e:
41
+ st.error(f"Error inesperado al procesar el JSON: {str(e)}")
 
 
42
  st.text("Respuesta original del modelo:")
43
  st.code(text)
44
  return None
45
 
46
  def generate_presentation_content(topic, client):
47
+ prompt = f"""Crea una presentación de PowerPoint sobre el tema: {topic}.
48
+ Genera exactamente 9 diapositivas con la siguiente estructura:
49
  1. Título de la presentación
50
  2. Introducción
51
  3. Índice
52
+ 4-9. Contenido principal (6 diapositivas)
53
 
54
  Formatea la salida como un JSON con la siguiente estructura:
55
  {{
 
63
  No incluyas saltos de línea o caracteres especiales dentro del JSON.
64
  """
65
 
66
+ response = client.text_generation(prompt, max_new_tokens=1500, temperature=0.7)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
 
68
+ # Limpieza y procesamiento del JSON
69
+ slides_data = extract_and_clean_json(response)
70
 
71
+ if slides_data and 'slides' in slides_data:
72
+ if len(slides_data['slides']) == 9:
73
+ return slides_data['slides']
74
+ else:
75
+ st.error(f"El JSON no contiene exactamente 9 diapositivas. Contiene {len(slides_data['slides'])} diapositivas.")
76
+ st.text("JSON procesado:")
77
+ st.code(json.dumps(slides_data, indent=4))
78
+ return None
 
 
79
  return None
80
 
81
  def apply_design(prs, design):