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)}")
|
|