JeCabrera commited on
Commit
d319348
·
verified ·
1 Parent(s): 73f378d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -35
app.py CHANGED
@@ -19,28 +19,16 @@ def get_random_product_mention():
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,10 +74,6 @@ def get_random_cta():
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,6 +100,7 @@ def generate_ctas(number_of_ctas, target_audience, product, call_to_action, temp
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,6 +110,9 @@ def generate_ctas(number_of_ctas, target_audience, product, call_to_action, temp
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,7 +126,7 @@ def generate_ctas(number_of_ctas, target_audience, product, call_to_action, temp
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,24 +181,14 @@ with col1:
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:
 
19
  # Función para crear el texto introductorio aleatorio
20
  def generate_intro_text():
21
  intros = [
22
+ "Y si a ti te gustaría aprender todo esto…",
23
+ "Así que si lo que quieres es llevarte todo, entonces...",
24
  "Es momento de tomar el control de tu futuro.",
 
25
  "No dejes pasar esta oportunidad única para mejorar tu vida.",
26
  "Ahora tienes la oportunidad de hacer algo increíble.",
27
  "El primer paso hacia tus sueños está frente a ti.",
28
+ "No lo pienses más, el cambio comienza aquí y ahora."
29
  ]
30
  return random.choice(intros)
31
 
 
 
 
 
 
 
 
 
 
 
 
32
  # Crear la instrucción de mención basada en la opción seleccionada
33
  def get_mention_instruction(product_mention, product):
34
  if product_mention == "Directa":
 
74
  cta = random.choice(cta_types[cta_type]) # Selección aleatoria del CTA dentro del tipo
75
  return cta
76
 
 
 
 
 
77
  # Función para generar llamados a la acción
78
  def generate_ctas(number_of_ctas, target_audience, product, call_to_action, temperature):
79
  product_mention = get_random_product_mention()
 
100
  "1. **Acción**: Palabras que invitan a realizar un movimiento (e.g., 'Descarga', 'Suscribete').\n"
101
  "2. **Valor**: Explica el beneficio que el usuario obtendrá al realizar la acción.\n\n"
102
  "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"
103
+ "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"
104
  "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"
105
  "**Ejemplos de CTAs en Voz Activa en Segunda Persona:**\n"
106
  "- 'Asiste a nuestro webinar para convertirte en un padre amoroso.'\n"
 
110
  )
111
  )
112
 
113
+ # Selección aleatoria de tipos de CTA, manteniendo variedad en la salida
114
+ selected_types = random.sample(list(cta_types.keys()), min(number_of_ctas, len(cta_types)))
115
+
116
  # Crear un mensaje para el modelo que incluye los CTAs generados según los tipos seleccionados
117
  ctas_instruction = (
118
  f"Tu tarea es crear {number_of_ctas} llamados a la acción efectivos dirigidos a {target_audience}, "
 
126
  response = model.generate_content([ctas_instruction])
127
 
128
  # Extraer el texto de la respuesta
129
+ generated_ctas = response.candidates[0].content.parts[0].text.strip() # Modificado aquí
130
 
131
  # Retornar el resultado
132
  return generated_ctas
 
181
  if submit:
182
  if target_audience and product and call_to_action:
183
  try:
184
+ intro_text = generate_intro_text() # Generar el texto introductorio
185
+ # Obtener la respuesta del modelo
 
 
186
  generated_ctas = generate_ctas(number_of_ctas, target_audience, product, call_to_action, temperature)
187
 
 
 
 
 
 
 
 
188
  col2.markdown(f"""
189
+ <div style="border: 1px solid #000000; padding: 5px; border-radius: 8px; background-color: #ffffff;">
190
+ <h4>{intro_text}</h4>
191
+ <p>{generated_ctas}</p>
 
192
  </div>
193
  """, unsafe_allow_html=True)
194
  except ValueError as e: