Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -10,161 +10,104 @@ load_dotenv()
|
|
| 10 |
# Configurar la API de Google
|
| 11 |
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
|
| 12 |
|
| 13 |
-
# Ejemplos de
|
| 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 |
-
"Generate unusual, creative, and fascinating bullets with a format conversational that capture {target_audience}'s attention like these:"
|
| 72 |
-
"directos:"
|
| 73 |
-
"El armario del baño es el mejor lugar para guardar medicamentos, ¿verdad? Incorrecto. Es el peor. Los hechos están en la página 10."
|
| 74 |
-
"El mejor tiempo verbal que le da a tus clientes la sensación de que ya te han comprado."
|
| 75 |
-
"La historia de un joven emprendedor que transformó su vida aplicando esta técnica simple pero poderosa."
|
| 76 |
-
"misterios:"
|
| 77 |
-
"Los misterios de cómo algunas personas parecen tener éxito sin esfuerzo, mientras otras luchan. La clave está en esta pequeña diferencia."
|
| 78 |
-
"Los misterios de cómo una técnica sencilla te permite reducir el estrés al instante, sin necesidad de dejar tu trabajo o cambiar tu estilo de vida."
|
| 79 |
-
"leyendas:"
|
| 80 |
-
"La leyenda de aquellos que dominaron la productividad con un solo hábito. ¿Te atreves a descubrirlo?"
|
| 81 |
-
"La verdad que nunca te han contado en la escuela, o en casa, sobre cómo ganarte la vida con la música."
|
| 82 |
-
"historias personales:"
|
| 83 |
-
"La historia de un padre ocupado que, con solo 10 minutos al día, logró transformar su salud y bienestar."
|
| 84 |
-
"¿Sabías que muchas personas están usando este método y han mejorado su bienestar en solo 7 días?"
|
| 85 |
-
"preguntas_retoricas:"
|
| 86 |
-
"¿Cuándo es una buena idea decirle a una chica que te gusta? Si no se lo dices en ese momento, despídete de conocerla íntimamente."
|
| 87 |
-
"Respond in Spanish and use a numbered list format. "
|
| 88 |
-
"Never respond like this: 'Crea momentos inolvidables: Comparte la experiencia de cocinar con tus hijos, fomentando la unión familiar y creando recuerdos especiales.'"
|
| 89 |
-
f"When responding, always include a heading referencing {target_audience} as follows: 'Aquí hay {num_bullets} bullets para convencer a {target_audience}.'"
|
| 90 |
-
)
|
| 91 |
-
)
|
| 92 |
-
|
| 93 |
-
# Crear un mensaje para el modelo que incluye los CTAs generados según los tipos seleccionados
|
| 94 |
-
bullets_instruction = (
|
| 95 |
-
f"Tu tarea es escribir {num_bullets} bullets que denoten los beneficios al hablar de {product} que resolverán los problemas de {target_audience}. "
|
| 96 |
-
"Por favor, crea los bullets ahora."
|
| 97 |
-
)
|
| 98 |
-
|
| 99 |
-
# Crear un mensaje para el modelo que incluye los bullets generados
|
| 100 |
-
response = model.generate_content([bullets_instruction])
|
| 101 |
-
|
| 102 |
-
# Extraer el texto de la respuesta
|
| 103 |
-
generated_bullets = response.candidates[0].content.parts[0].text.strip() # Modificado aquí
|
| 104 |
-
|
| 105 |
-
# Retornar el resultado
|
| 106 |
-
return generated_bullets
|
| 107 |
-
except Exception as e:
|
| 108 |
-
raise ValueError(f"Error al generar los bullets: {str(e)}")
|
| 109 |
|
| 110 |
-
|
| 111 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 112 |
|
| 113 |
# Centrar el título y el subtítulo
|
| 114 |
-
st.markdown("<h1 style='text-align: center;'>
|
| 115 |
-
st.markdown("<h4 style='text-align: center;'>
|
| 116 |
-
|
| 117 |
-
#
|
| 118 |
-
st.
|
| 119 |
-
<style>
|
| 120 |
-
div.stButton > button {
|
| 121 |
-
background-color: #FFCC00;
|
| 122 |
-
color: black;
|
| 123 |
-
width: 90%;
|
| 124 |
-
height: 60px;
|
| 125 |
-
font-weight: bold;
|
| 126 |
-
font-size: 22px;
|
| 127 |
-
text-transform: uppercase;
|
| 128 |
-
border: 1px solid #000000;
|
| 129 |
-
border-radius: 8px;
|
| 130 |
-
display: block;
|
| 131 |
-
margin: 0 auto;
|
| 132 |
-
}
|
| 133 |
-
div.stButton > button:hover {
|
| 134 |
-
background-color: #FFD700;
|
| 135 |
-
color: black;
|
| 136 |
-
}
|
| 137 |
-
</style>
|
| 138 |
-
""", unsafe_allow_html=True)
|
| 139 |
-
|
| 140 |
-
# Crear dos columnas para el layout (40% y 60%)
|
| 141 |
-
col1, col2 = st.columns([2, 3])
|
| 142 |
|
|
|
|
| 143 |
with col1:
|
| 144 |
-
|
| 145 |
-
target_audience = st.text_input("¿Quién es tu público objetivo?")
|
| 146 |
-
product = st.text_input("¿Qué producto tienes en mente?")
|
| 147 |
|
| 148 |
-
# Campos de personalización sin acordeón
|
| 149 |
-
num_bullets = st.slider("Número de Bullets", min_value=1, max_value=10, value=5)
|
| 150 |
-
temperature = st.slider("Creatividad", min_value=0.0, max_value=1.0, value=0.5, step=0.1)
|
| 151 |
-
|
| 152 |
# Botón de enviar
|
| 153 |
submit = st.button("Generar Bullets")
|
| 154 |
|
| 155 |
# Mostrar los bullets generados
|
| 156 |
if submit:
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
<
|
| 163 |
-
|
| 164 |
-
<
|
| 165 |
-
</
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
st.error("Por favor, completa todos los campos.")
|
|
|
|
| 10 |
# Configurar la API de Google
|
| 11 |
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
|
| 12 |
|
| 13 |
+
# Ejemplos de beneficios, dolores y datos curiosos
|
| 14 |
+
benefits = [
|
| 15 |
+
"Mejora tu productividad diaria con técnicas efectivas.",
|
| 16 |
+
"Descubre cómo simplificar tus tareas y ganar tiempo.",
|
| 17 |
+
"Transforma tu carrera profesional con habilidades clave.",
|
| 18 |
+
"Accede a recursos exclusivos que te ayudarán a destacar.",
|
| 19 |
+
"Aprende a manejar tu tiempo para reducir el estrés."
|
| 20 |
+
]
|
| 21 |
+
|
| 22 |
+
pain_points = [
|
| 23 |
+
"¿Te sientes abrumado por la falta de organización?",
|
| 24 |
+
"¿Tus días se sienten interminables y sin propósito?",
|
| 25 |
+
"¿Te gustaría aumentar tu enfoque y evitar distracciones?",
|
| 26 |
+
"¿Te cuesta encontrar tiempo para lo que realmente importa?",
|
| 27 |
+
"¿Sientes que tu carrera no avanza como esperabas?"
|
| 28 |
+
]
|
| 29 |
+
|
| 30 |
+
curiosities = [
|
| 31 |
+
"¿Sabías que el 70% de las personas no logran sus objetivos anuales?",
|
| 32 |
+
"Estudios muestran que la gestión del tiempo mejora la salud mental.",
|
| 33 |
+
"El 80% de la productividad se logra en el 20% del tiempo.",
|
| 34 |
+
"Las personas que establecen metas tienen un 10 veces más de probabilidad de tener éxito.",
|
| 35 |
+
"Aprender a priorizar tareas puede aumentar tu eficacia en un 300%."
|
| 36 |
+
]
|
| 37 |
+
|
| 38 |
+
# Función para generar bullets informativos
|
| 39 |
+
def generate_bullets(number_of_bullets):
|
| 40 |
+
bullets = []
|
| 41 |
+
|
| 42 |
+
for _ in range(number_of_bullets):
|
| 43 |
+
category = random.choice(['benefit', 'pain_point', 'curiosity'])
|
| 44 |
+
if category == 'benefit':
|
| 45 |
+
bullet = random.choice(benefits)
|
| 46 |
+
elif category == 'pain_point':
|
| 47 |
+
bullet = random.choice(pain_points)
|
| 48 |
+
else:
|
| 49 |
+
bullet = random.choice(curiosities)
|
| 50 |
+
bullets.append(bullet)
|
| 51 |
+
|
| 52 |
+
return bullets
|
| 53 |
+
|
| 54 |
+
# Configurar la interfaz de usuario con Streamlit
|
| 55 |
+
st.set_page_config(page_title="QuickPrompt", layout="wide")
|
| 56 |
+
|
| 57 |
+
# Agregar el manual en el sidebar con mejor diseño
|
| 58 |
+
st.sidebar.markdown("## **Manual de Usuario para Quick Prompt**")
|
| 59 |
+
st.sidebar.write("""
|
| 60 |
+
**Bienvenido a Quick Prompt**
|
| 61 |
+
Quick Prompt está diseñado para ayudarte a crear bullets informativos que resalten los beneficios, dolores y curiosidades para atraer a tu audiencia.
|
| 62 |
+
|
| 63 |
+
### ¿Por qué son importantes estos bullets?
|
| 64 |
+
Estos bullets son elementos clave para captar la atención de tu audiencia y motivarles a tomar acción. Aquí te mostramos ejemplos de cada categoría:
|
| 65 |
+
- **Beneficios**: Mejora tu productividad diaria con técnicas efectivas.
|
| 66 |
+
- **Puntos de Dolor**: ¿Te sientes abrumado por la falta de organización?
|
| 67 |
+
- **Datos Curiosos**: ¿Sabías que el 70% de las personas no logran sus objetivos anuales?
|
| 68 |
+
|
| 69 |
+
### ¿Cómo utilizar Quick Prompt?
|
| 70 |
+
Sigue estos pasos para obtener resultados efectivos:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
|
| 72 |
+
1. **Define tu público objetivo**
|
| 73 |
+
Reflexiona sobre quiénes son y qué necesitan.
|
| 74 |
+
|
| 75 |
+
2. **Especifica el número de bullets que deseas generar**
|
| 76 |
+
Determina cuántos bullets necesitas para tu mensaje.
|
| 77 |
+
|
| 78 |
+
3. **Generar los bullets**
|
| 79 |
+
Haz clic en el botón para obtener los bullets informativos.
|
| 80 |
+
""")
|
| 81 |
+
|
| 82 |
+
# Footer del manual
|
| 83 |
+
st.sidebar.write("Transforma tu mensaje con bullets que conectan con tu audiencia.")
|
| 84 |
|
| 85 |
# Centrar el título y el subtítulo
|
| 86 |
+
st.markdown("<h1 style='text-align: center;'>Quick Prompt</h1>", unsafe_allow_html=True)
|
| 87 |
+
st.markdown("<h4 style='text-align: center;'>Genera bullets que cautiven y motiven a tu audiencia.</h4>", unsafe_allow_html=True)
|
| 88 |
+
|
| 89 |
+
# Crear columnas
|
| 90 |
+
col1, col2 = st.columns([1, 2])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 91 |
|
| 92 |
+
# Columnas de entrada
|
| 93 |
with col1:
|
| 94 |
+
number_of_bullets = st.selectbox("Número de bullets informativos", options=[1, 2, 3, 4, 5], index=2)
|
|
|
|
|
|
|
| 95 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
# Botón de enviar
|
| 97 |
submit = st.button("Generar Bullets")
|
| 98 |
|
| 99 |
# Mostrar los bullets generados
|
| 100 |
if submit:
|
| 101 |
+
try:
|
| 102 |
+
# Obtener la respuesta del modelo
|
| 103 |
+
generated_bullets = generate_bullets(number_of_bullets)
|
| 104 |
+
col2.markdown(f"""
|
| 105 |
+
<div style="border: 1px solid #000000; padding: 5px; border-radius: 8px; background-color: #ffffff;">
|
| 106 |
+
<h4>Bullets Generados:</h4>
|
| 107 |
+
<ul>
|
| 108 |
+
{''.join(f'<li>{bullet}</li>' for bullet in generated_bullets)}
|
| 109 |
+
</ul>
|
| 110 |
+
</div>
|
| 111 |
+
""", unsafe_allow_html=True)
|
| 112 |
+
except Exception as e:
|
| 113 |
+
col2.error(f"Error inesperado: {str(e)}")
|
|
|