Spaces:
Running
Running
Upload app.py
Browse files
app.py
CHANGED
@@ -416,5 +416,114 @@ if prompt := st.chat_input('¿En qué puedo ayudarte hoy?'):
|
|
416 |
|
417 |
# Salir del bucle si la solicitud fue exitosa
|
418 |
break
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
419 |
|
420 |
|
|
|
416 |
|
417 |
# Salir del bucle si la solicitud fue exitosa
|
418 |
break
|
419 |
+
|
420 |
+
# Configuración inicial de la página
|
421 |
+
st.set_page_config(
|
422 |
+
page_title="RoboCopy - Creador de PUVs",
|
423 |
+
page_icon="🚀",
|
424 |
+
layout="wide"
|
425 |
+
)
|
426 |
+
|
427 |
+
# Título y subtítulo principales
|
428 |
+
st.title("💡 RoboCopy - Asistente de PUVs")
|
429 |
+
st.markdown("### Tu experto en crear Propuestas Únicas de Valor que convierten")
|
430 |
+
|
431 |
+
# Ejemplos de prompts
|
432 |
+
st.markdown("### 🎯 Prueba estos ejemplos:")
|
433 |
+
|
434 |
+
# Contenedor para los ejemplos
|
435 |
+
example_container = st.container()
|
436 |
+
col1, col2 = example_container.columns(2)
|
437 |
+
|
438 |
+
with col1:
|
439 |
+
if st.button("¿Cuál es la mejor fórmula para mi PUV? 🤔"):
|
440 |
+
prompt = "¿Podrías explicarme cuál es la mejor fórmula para crear una PUV efectiva para mi negocio?"
|
441 |
+
st.session_state.messages = []
|
442 |
+
st.session_state.current_chat_id = str(time.time())
|
443 |
+
st.rerun()
|
444 |
+
|
445 |
+
if st.button("Necesito una PUV para mi tienda online 🛍️"):
|
446 |
+
prompt = "Quiero crear una PUV para mi tienda online de ropa sostenible dirigida a mujeres de 25-35 años"
|
447 |
+
st.session_state.messages = []
|
448 |
+
st.session_state.current_chat_id = str(time.time())
|
449 |
+
st.rerun()
|
450 |
+
|
451 |
+
with col2:
|
452 |
+
if st.button("Ayúdame a mejorar mi PUV actual ✨"):
|
453 |
+
prompt = "¿Podrías ayudarme a mejorar mi PUV actual para hacerla más persuasiva?"
|
454 |
+
st.session_state.messages = []
|
455 |
+
st.session_state.current_chat_id = str(time.time())
|
456 |
+
st.rerun()
|
457 |
+
|
458 |
+
if st.button("Crear PUV para servicios profesionales 👔"):
|
459 |
+
prompt = "Necesito una PUV para mi servicio de consultoría en marketing digital"
|
460 |
+
st.session_state.messages = []
|
461 |
+
st.session_state.current_chat_id = str(time.time())
|
462 |
+
st.rerun()
|
463 |
+
|
464 |
+
# Separador visual
|
465 |
+
st.markdown("---")
|
466 |
+
|
467 |
+
# Implementación de reintentos con retroceso exponencial
|
468 |
+
max_retries = 3
|
469 |
+
retry_count = 0
|
470 |
+
while retry_count < max_retries:
|
471 |
+
try:
|
472 |
+
# Enviar mensaje al modelo
|
473 |
+
response = st.session_state.chat.send_message(prompt, stream=True)
|
474 |
+
|
475 |
+
# Procesar la respuesta completa
|
476 |
+
full_text = ""
|
477 |
+
for chunk in response:
|
478 |
+
full_text += chunk.text
|
479 |
+
|
480 |
+
# Mostrar respuesta del asistente con efecto de escritura
|
481 |
+
mensaje_mostrado = mostrar_con_efecto_escritura(full_text, velocidad=0.05)
|
482 |
+
|
483 |
+
# Añadir respuesta al historial
|
484 |
+
st.session_state.messages.append({
|
485 |
+
'role': MODEL_ROLE,
|
486 |
+
'content': mensaje_mostrado,
|
487 |
+
'avatar': AI_AVATAR_ICON,
|
488 |
+
})
|
489 |
+
|
490 |
+
# Actualizar historial
|
491 |
+
st.session_state.gemini_history = st.session_state.chat.history
|
492 |
+
|
493 |
+
# Actualizar chat en memoria
|
494 |
+
st.session_state.chats_in_memory[st.session_state.current_chat_id].update({
|
495 |
+
'messages': st.session_state.messages,
|
496 |
+
'gemini_history': st.session_state.gemini_history,
|
497 |
+
'title': st.session_state.chat_title
|
498 |
+
})
|
499 |
+
|
500 |
+
break
|
501 |
+
|
502 |
+
except Exception as e:
|
503 |
+
retry_count += 1
|
504 |
+
if retry_count >= max_retries:
|
505 |
+
error_message = f"Lo siento, estoy experimentando problemas para procesar tu solicitud. Por favor, intenta de nuevo más tarde. Error: {str(e)}"
|
506 |
+
|
507 |
+
with st.chat_message(name=MODEL_ROLE, avatar=AI_AVATAR_ICON):
|
508 |
+
st.error(error_message)
|
509 |
+
|
510 |
+
st.session_state.messages.append({
|
511 |
+
'role': MODEL_ROLE,
|
512 |
+
'content': error_message,
|
513 |
+
'avatar': AI_AVATAR_ICON,
|
514 |
+
})
|
515 |
+
|
516 |
+
# Actualizar chat en memoria con el error
|
517 |
+
st.session_state.chats_in_memory[st.session_state.current_chat_id].update({
|
518 |
+
'messages': st.session_state.messages,
|
519 |
+
'gemini_history': st.session_state.gemini_history,
|
520 |
+
'title': st.session_state.chat_title
|
521 |
+
})
|
522 |
+
else:
|
523 |
+
wait_time = (2 ** retry_count) + (time.time() % 1)
|
524 |
+
time.sleep(wait_time)
|
525 |
+
|
526 |
+
# Salir del bucle si la solicitud fue exitosa
|
527 |
+
break
|
528 |
|
529 |
|