Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -19,12 +19,28 @@ def get_random_product_mention():
|
|
19 |
# Función para crear el texto introductorio aleatorio
|
20 |
def generate_intro_text():
|
21 |
intros = [
|
22 |
-
"
|
23 |
-
"
|
24 |
-
"
|
|
|
|
|
|
|
|
|
|
|
25 |
]
|
26 |
return random.choice(intros)
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
# Crear la instrucción de mención basada en la opción seleccionada
|
29 |
def get_mention_instruction(product_mention, product):
|
30 |
if product_mention == "Directa":
|
@@ -70,6 +86,10 @@ def get_random_cta():
|
|
70 |
cta = random.choice(cta_types[cta_type]) # Selección aleatoria del CTA dentro del tipo
|
71 |
return cta
|
72 |
|
|
|
|
|
|
|
|
|
73 |
# Función para generar llamados a la acción
|
74 |
def generate_ctas(number_of_ctas, target_audience, product, call_to_action, temperature):
|
75 |
product_mention = get_random_product_mention()
|
@@ -96,7 +116,6 @@ def generate_ctas(number_of_ctas, target_audience, product, call_to_action, temp
|
|
96 |
"1. **Acción**: Palabras que invitan a realizar un movimiento (e.g., 'Descarga', 'Suscribete').\n"
|
97 |
"2. **Valor**: Explica el beneficio que el usuario obtendrá al realizar la acción.\n\n"
|
98 |
"Asegúrate de que cada llamado a la acción siga la estructura de 'Acción + conector + Valor', y evita incluir explicaciones como 'Acción: Descubrir' o 'Valor: Un oasis de paz en medio del caos'.\n"
|
99 |
-
"Important: Only answer CTAs, never include explanations or categories, like this: 'Registrarme ahora y descubrir cómo encontrar un poco de paz en medio del caos. (Este CTA apela al deseo de Han Solo de encontrar un momento de tranquilidad en su vida agitada.).'\n"
|
100 |
"Los llamados de acción deben de ser cortos y concisos, basate en estos ejemplos para realizar tu tarea de crear los CTA's:\n\n"
|
101 |
"**Ejemplos de CTAs en Voz Activa en Segunda Persona:**\n"
|
102 |
"- 'Asiste a nuestro webinar para convertirte en un padre amoroso.'\n"
|
@@ -106,9 +125,6 @@ def generate_ctas(number_of_ctas, target_audience, product, call_to_action, temp
|
|
106 |
)
|
107 |
)
|
108 |
|
109 |
-
# Selección aleatoria de tipos de CTA, manteniendo variedad en la salida
|
110 |
-
selected_types = random.sample(list(cta_types.keys()), min(number_of_ctas, len(cta_types)))
|
111 |
-
|
112 |
# Crear un mensaje para el modelo que incluye los CTAs generados según los tipos seleccionados
|
113 |
ctas_instruction = (
|
114 |
f"Tu tarea es crear {number_of_ctas} llamados a la acción efectivos dirigidos a {target_audience}, "
|
@@ -122,7 +138,7 @@ def generate_ctas(number_of_ctas, target_audience, product, call_to_action, temp
|
|
122 |
response = model.generate_content([ctas_instruction])
|
123 |
|
124 |
# Extraer el texto de la respuesta
|
125 |
-
generated_ctas = response.candidates[0].content.parts[0].text.strip()
|
126 |
|
127 |
# Retornar el resultado
|
128 |
return generated_ctas
|
@@ -177,14 +193,24 @@ with col1:
|
|
177 |
if submit:
|
178 |
if target_audience and product and call_to_action:
|
179 |
try:
|
180 |
-
|
181 |
-
|
|
|
|
|
182 |
generated_ctas = generate_ctas(number_of_ctas, target_audience, product, call_to_action, temperature)
|
183 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
col2.markdown(f"""
|
185 |
-
<div style="border: 1px solid #000000; padding:
|
186 |
-
<
|
187 |
-
|
|
|
188 |
</div>
|
189 |
""", unsafe_allow_html=True)
|
190 |
except ValueError as e:
|
|
|
19 |
# Función para crear el texto introductorio aleatorio
|
20 |
def generate_intro_text():
|
21 |
intros = [
|
22 |
+
"¿Sabías que puedes cambiar tu vida en un solo paso?",
|
23 |
+
"Imagínate alcanzando tus metas más rápido de lo que crees.",
|
24 |
+
"Es momento de tomar el control de tu futuro.",
|
25 |
+
"¿Te gustaría dominar una habilidad que te transforme?",
|
26 |
+
"No dejes pasar esta oportunidad única para mejorar tu vida.",
|
27 |
+
"Ahora tienes la oportunidad de hacer algo increíble.",
|
28 |
+
"El primer paso hacia tus sueños está frente a ti.",
|
29 |
+
"No lo pienses más, el cambio comienza aquí y ahora.",
|
30 |
]
|
31 |
return random.choice(intros)
|
32 |
|
33 |
+
# Función para generar texto inicial dinámico basado en contexto
|
34 |
+
def generate_dynamic_intro(target_audience, product, call_to_action):
|
35 |
+
templates = [
|
36 |
+
f"¿Estás listo para transformar tu vida con {product}?",
|
37 |
+
f"Imagina cómo {product} puede ayudarte a {call_to_action}.",
|
38 |
+
f"Para {target_audience}, {product} es la solución ideal para {call_to_action}.",
|
39 |
+
f"¿Quieres saber cómo {product} puede hacer tu vida más fácil? Descúbrelo ahora.",
|
40 |
+
f"{product} es la herramienta que necesitas para {call_to_action}.",
|
41 |
+
]
|
42 |
+
return random.choice(templates)
|
43 |
+
|
44 |
# Crear la instrucción de mención basada en la opción seleccionada
|
45 |
def get_mention_instruction(product_mention, product):
|
46 |
if product_mention == "Directa":
|
|
|
86 |
cta = random.choice(cta_types[cta_type]) # Selección aleatoria del CTA dentro del tipo
|
87 |
return cta
|
88 |
|
89 |
+
# Función para combinar texto inicial y CTA
|
90 |
+
def generate_intro_text_with_cta(intro_text, cta):
|
91 |
+
return f"{intro_text} {cta}"
|
92 |
+
|
93 |
# Función para generar llamados a la acción
|
94 |
def generate_ctas(number_of_ctas, target_audience, product, call_to_action, temperature):
|
95 |
product_mention = get_random_product_mention()
|
|
|
116 |
"1. **Acción**: Palabras que invitan a realizar un movimiento (e.g., 'Descarga', 'Suscribete').\n"
|
117 |
"2. **Valor**: Explica el beneficio que el usuario obtendrá al realizar la acción.\n\n"
|
118 |
"Asegúrate de que cada llamado a la acción siga la estructura de 'Acción + conector + Valor', y evita incluir explicaciones como 'Acción: Descubrir' o 'Valor: Un oasis de paz en medio del caos'.\n"
|
|
|
119 |
"Los llamados de acción deben de ser cortos y concisos, basate en estos ejemplos para realizar tu tarea de crear los CTA's:\n\n"
|
120 |
"**Ejemplos de CTAs en Voz Activa en Segunda Persona:**\n"
|
121 |
"- 'Asiste a nuestro webinar para convertirte en un padre amoroso.'\n"
|
|
|
125 |
)
|
126 |
)
|
127 |
|
|
|
|
|
|
|
128 |
# Crear un mensaje para el modelo que incluye los CTAs generados según los tipos seleccionados
|
129 |
ctas_instruction = (
|
130 |
f"Tu tarea es crear {number_of_ctas} llamados a la acción efectivos dirigidos a {target_audience}, "
|
|
|
138 |
response = model.generate_content([ctas_instruction])
|
139 |
|
140 |
# Extraer el texto de la respuesta
|
141 |
+
generated_ctas = response.candidates[0].content.parts[0].text.strip()
|
142 |
|
143 |
# Retornar el resultado
|
144 |
return generated_ctas
|
|
|
193 |
if submit:
|
194 |
if target_audience and product and call_to_action:
|
195 |
try:
|
196 |
+
# Generar texto inicial dinámico
|
197 |
+
intro_text = generate_dynamic_intro(target_audience, product, call_to_action)
|
198 |
+
|
199 |
+
# Generar CTAs
|
200 |
generated_ctas = generate_ctas(number_of_ctas, target_audience, product, call_to_action, temperature)
|
201 |
|
202 |
+
# Combinar con texto inicial
|
203 |
+
combined_ctas = [
|
204 |
+
generate_intro_text_with_cta(intro_text, cta.strip())
|
205 |
+
for cta in generated_ctas.split('\n')
|
206 |
+
]
|
207 |
+
|
208 |
+
# Mostrar CTAs combinados
|
209 |
col2.markdown(f"""
|
210 |
+
<div style="border: 1px solid #000000; padding: 10px; border-radius: 8px; background-color: #ffffff;">
|
211 |
+
<ul style="list-style-type: disc; margin-left: 20px;">
|
212 |
+
{''.join(f"<li>{combined_cta}</li>" for combined_cta in combined_ctas)}
|
213 |
+
</ul>
|
214 |
</div>
|
215 |
""", unsafe_allow_html=True)
|
216 |
except ValueError as e:
|