Spaces:
Running
Running
Update app.py
Browse files
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 |
-
#
|
| 27 |
-
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|
| 35 |
-
st.error(f"Error al
|
| 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 |
-
|
| 44 |
-
Genera exactamente
|
| 45 |
1. Título de la presentación
|
| 46 |
2. Introducción
|
| 47 |
3. Índice
|
| 48 |
-
4. Contenido principal (
|
| 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 |
-
|
| 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 |
-
|
| 82 |
-
|
| 83 |
|
| 84 |
-
if
|
| 85 |
-
if 'slides'
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 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):
|