Update app.py
Browse files
app.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
# Código actualizado
|
| 2 |
|
| 3 |
from dotenv import load_dotenv
|
| 4 |
import streamlit as st
|
|
@@ -28,56 +28,60 @@ def get_mention_instruction(product_mention, product):
|
|
| 28 |
return f"Introduce el producto '{product}' usando una metáfora, conectándolo simbólicamente a la solución que necesita el lector."
|
| 29 |
return ""
|
| 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 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
}
|
| 78 |
|
| 79 |
# Función para generar titulares
|
| 80 |
-
def generate_headlines(number_of_headlines, target_audience, product, temperature,
|
| 81 |
product_mention = get_random_product_mention()
|
| 82 |
mention_instruction = get_mention_instruction(product_mention, product)
|
| 83 |
|
|
@@ -100,8 +104,8 @@ def generate_headlines(number_of_headlines, target_audience, product, temperatur
|
|
| 100 |
headlines_instruction = (
|
| 101 |
f"Tu tarea es crear {number_of_headlines} ganchos o encabezados titulares llamativos diseñados para {target_audience} "
|
| 102 |
f"con el fin de generar interés en {product}. Usa la siguiente mención: {mention_instruction}. "
|
| 103 |
-
f"Asegúrate de utilizar
|
| 104 |
-
f"
|
| 105 |
)
|
| 106 |
|
| 107 |
chat_session = model.start_chat(
|
|
@@ -116,22 +120,6 @@ def generate_headlines(number_of_headlines, target_audience, product, temperatur
|
|
| 116 |
response = chat_session.send_message("Genera los titulares") # Enviar mensaje para obtener la respuesta
|
| 117 |
return response.text # Regresar la respuesta directamente
|
| 118 |
|
| 119 |
-
# Añadir más fórmulas de titulares al acordeón
|
| 120 |
-
headline_formulas = {
|
| 121 |
-
"fórmula_1": [
|
| 122 |
-
"Descubre cómo {beneficio} con solo {acción}.",
|
| 123 |
-
"Aprende a {acción} y transforma tu vida con {beneficio}.",
|
| 124 |
-
],
|
| 125 |
-
"fórmula_2": [
|
| 126 |
-
"¿Estás listo para {acción} y {beneficio}?",
|
| 127 |
-
"La guía definitiva para {acción} y conseguir {beneficio}.",
|
| 128 |
-
],
|
| 129 |
-
"fórmula_3": [
|
| 130 |
-
"Todo lo que necesitas saber sobre {tema} y cómo {acción}.",
|
| 131 |
-
"Lo que nunca te dijeron sobre {tema} y cómo {acción} para mejorar {resultado}.",
|
| 132 |
-
],
|
| 133 |
-
}
|
| 134 |
-
|
| 135 |
# Configurar la interfaz de usuario con Streamlit
|
| 136 |
st.set_page_config(page_title="Enchanted Hooks", layout="wide")
|
| 137 |
|
|
@@ -171,36 +159,38 @@ with col1:
|
|
| 171 |
product = st.text_input("¿Qué producto tienes en mente?", placeholder="Ejemplo: Curso de Inglés")
|
| 172 |
number_of_headlines = st.selectbox("Número de Titulares", options=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], index=4)
|
| 173 |
|
| 174 |
-
# Crear
|
| 175 |
with st.expander("Personaliza tus titulares"):
|
| 176 |
temperature = st.slider("Creatividad", min_value=0.0, max_value=1.0, value=0.5, step=0.1)
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
options=list(headline_types.keys()),
|
| 180 |
-
default=["pregunta", "historia"]
|
| 181 |
-
)
|
| 182 |
-
|
| 183 |
-
# Crear nuevo acordeón para elegir fórmulas de titulares
|
| 184 |
-
with st.expander("Elige una fórmula para los titulares"):
|
| 185 |
-
selected_formula = st.selectbox(
|
| 186 |
"Selecciona una fórmula para tus titulares",
|
| 187 |
options=list(headline_formulas.keys())
|
| 188 |
)
|
|
|
|
|
|
|
| 189 |
# Mostrar ejemplos de la fórmula seleccionada
|
| 190 |
-
st.markdown("Ejemplos de la fórmula seleccionada:")
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 194 |
|
| 195 |
# Botón de enviar
|
| 196 |
submit = st.button("Generar Titulares")
|
| 197 |
|
| 198 |
# Mostrar los titulares generados
|
| 199 |
if submit:
|
| 200 |
-
if target_audience and product and
|
| 201 |
try:
|
| 202 |
# Obtener la respuesta del modelo
|
| 203 |
-
generated_headlines = generate_headlines(number_of_headlines, target_audience, product, temperature,
|
| 204 |
col2.markdown(f"""
|
| 205 |
<div style="border: 1px solid #000000; padding: 5px; border-radius: 8px; background-color: #ffffff;">
|
| 206 |
<h4>Observa la magia en acción:</h4>
|
|
@@ -210,4 +200,4 @@ if submit:
|
|
| 210 |
except ValueError as e:
|
| 211 |
col2.error(f"Error: {str(e)}")
|
| 212 |
else:
|
| 213 |
-
col2.error("Por favor, proporciona el público objetivo, el producto y selecciona
|
|
|
|
| 1 |
+
# Código actualizado con las modificaciones solicitadas para las fórmulas
|
| 2 |
|
| 3 |
from dotenv import load_dotenv
|
| 4 |
import streamlit as st
|
|
|
|
| 28 |
return f"Introduce el producto '{product}' usando una metáfora, conectándolo simbólicamente a la solución que necesita el lector."
|
| 29 |
return ""
|
| 30 |
|
| 31 |
+
# Fórmulas con ejemplos y explicaciones
|
| 32 |
+
headline_formulas = {
|
| 33 |
+
"fórmula_1": {
|
| 34 |
+
"description": "Plantillas creativas que combinan tres preguntas clave para generar titulares disruptivos",
|
| 35 |
+
"questions": [
|
| 36 |
+
"¿Qué es lo que el lector quiere conseguir?",
|
| 37 |
+
"¿En qué periodo de tiempo quiere conseguirlo?",
|
| 38 |
+
"¿Cuál es la objeción principal del lector que le impide lograrlo?"
|
| 39 |
+
],
|
| 40 |
+
"examples": [
|
| 41 |
+
"Sin gastar un solo centavo en publicidad, consigue tus primeros 100 clientes en 30 días.",
|
| 42 |
+
"En solo 10 minutos al día, pierde esos 5 kilos sin tener que dejar de comer lo que te gusta.",
|
| 43 |
+
"Como ahorrar para salir de viaje, en solo tres meses y sin dejar esas noches de cine."
|
| 44 |
+
]
|
| 45 |
+
},
|
| 46 |
+
"fórmula_2": {
|
| 47 |
+
"description": "La fórmula Suprema de Istvanova: Números + Adjetivo + Palabra Clave + Razón + Promesa",
|
| 48 |
+
"examples": [
|
| 49 |
+
"5 fórmulas secretas para mejorar tus cartas de venta e incrementar tus ventas",
|
| 50 |
+
"25 frases del éxito que llevaron a Abraham Lincoln a la presidencia y que te harán un gran líder",
|
| 51 |
+
"8 comandos claves que convierten a tu perro travieso en una adorable mascota",
|
| 52 |
+
"10 palabras prohibidas que debes evitar que mejorarán la relación con tu pareja antes de un mes"
|
| 53 |
+
]
|
| 54 |
+
},
|
| 55 |
+
"fórmula_3": {
|
| 56 |
+
"description": "La fórmula AIDA: Atención + Interés + Deseo + Acción",
|
| 57 |
+
"explanation": """
|
| 58 |
+
Atención: Es el primer paso y el más importante: debes captar la atención del lector de inmediato. Un buen encabezado debe destacar y despertar el interés, haciendo que el lector quiera seguir leyendo.
|
| 59 |
+
Ejemplo: "¿Cansado de no ver resultados en tu dieta?"
|
| 60 |
+
|
| 61 |
+
Interés: Una vez que tienes su atención, debes mantener su interés proporcionando más detalles relevantes. Aquí es donde el lector empieza a identificarse con el problema o la situación que se le presenta.
|
| 62 |
+
Ejemplo: "Descubre cómo perder peso sin dietas extremas ni horas en el gimnasio."
|
| 63 |
+
|
| 64 |
+
Deseo: El siguiente paso es despertar el deseo del lector. Muestra cómo tu solución puede mejorar su vida o resolver su problema de manera atractiva. El lector debe visualizar los beneficios de seguir tu consejo o usar tu producto.
|
| 65 |
+
Ejemplo: "Imagina verte en tu mejor forma, sin privarte de lo que te gusta."
|
| 66 |
+
|
| 67 |
+
Acción: Finalmente, debes motivar al lector a actuar. Llama a la acción de manera clara y directa para que el lector se sienta impulsado a tomar el siguiente paso.
|
| 68 |
+
Ejemplo: "Comienza ahora con nuestra guía gratis y cambia tu cuerpo de inmediato."
|
| 69 |
+
""",
|
| 70 |
+
"examples": [
|
| 71 |
+
"¿Cansado de no ver resultados en tu dieta?",
|
| 72 |
+
"Descubre cómo perder peso sin dietas extremas ni horas en el gimnasio.",
|
| 73 |
+
"Imagina verte en tu mejor forma, sin privarte de lo que te gusta.",
|
| 74 |
+
"Comienza ahora con nuestra guía gratis y cambia tu cuerpo de inmediato.",
|
| 75 |
+
"Imagina tener un teléfono tan rápido como cuando lo compraste.",
|
| 76 |
+
"Te mostramos cómo atraer clientes de manera automática sin tener experiencia previa.",
|
| 77 |
+
"¿Cansado de no ver resultados en tu dieta?",
|
| 78 |
+
"Imagina tener ventas constantes mientras duermes."
|
| 79 |
+
]
|
| 80 |
+
}
|
| 81 |
}
|
| 82 |
|
| 83 |
# Función para generar titulares
|
| 84 |
+
def generate_headlines(number_of_headlines, target_audience, product, temperature, selected_formula):
|
| 85 |
product_mention = get_random_product_mention()
|
| 86 |
mention_instruction = get_mention_instruction(product_mention, product)
|
| 87 |
|
|
|
|
| 104 |
headlines_instruction = (
|
| 105 |
f"Tu tarea es crear {number_of_headlines} ganchos o encabezados titulares llamativos diseñados para {target_audience} "
|
| 106 |
f"con el fin de generar interés en {product}. Usa la siguiente mención: {mention_instruction}. "
|
| 107 |
+
f"Asegúrate de utilizar la fórmula de titular seleccionada: {selected_formula['description']}. "
|
| 108 |
+
f"Usa los ejemplos proporcionados para guiar tu creatividad."
|
| 109 |
)
|
| 110 |
|
| 111 |
chat_session = model.start_chat(
|
|
|
|
| 120 |
response = chat_session.send_message("Genera los titulares") # Enviar mensaje para obtener la respuesta
|
| 121 |
return response.text # Regresar la respuesta directamente
|
| 122 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
# Configurar la interfaz de usuario con Streamlit
|
| 124 |
st.set_page_config(page_title="Enchanted Hooks", layout="wide")
|
| 125 |
|
|
|
|
| 159 |
product = st.text_input("¿Qué producto tienes en mente?", placeholder="Ejemplo: Curso de Inglés")
|
| 160 |
number_of_headlines = st.selectbox("Número de Titulares", options=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], index=4)
|
| 161 |
|
| 162 |
+
# Crear un único acordeón para fórmula y creatividad
|
| 163 |
with st.expander("Personaliza tus titulares"):
|
| 164 |
temperature = st.slider("Creatividad", min_value=0.0, max_value=1.0, value=0.5, step=0.1)
|
| 165 |
+
|
| 166 |
+
selected_formula_key = st.selectbox(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 167 |
"Selecciona una fórmula para tus titulares",
|
| 168 |
options=list(headline_formulas.keys())
|
| 169 |
)
|
| 170 |
+
selected_formula = headline_formulas[selected_formula_key]
|
| 171 |
+
|
| 172 |
# Mostrar ejemplos de la fórmula seleccionada
|
| 173 |
+
st.markdown(f"**Ejemplos de la fórmula seleccionada ({selected_formula_key}):**")
|
| 174 |
+
for example in selected_formula['examples']:
|
| 175 |
+
st.write(example)
|
| 176 |
+
|
| 177 |
+
if selected_formula_key == 'fórmula_3':
|
| 178 |
+
st.markdown(f"**Explicación de la fórmula AIDA:**")
|
| 179 |
+
st.markdown(selected_formula['explanation'])
|
| 180 |
+
elif selected_formula_key == 'fórmula_1':
|
| 181 |
+
st.markdown(f"**Preguntas clave para la fórmula 1:**")
|
| 182 |
+
for question in selected_formula['questions']:
|
| 183 |
+
st.write(question)
|
| 184 |
|
| 185 |
# Botón de enviar
|
| 186 |
submit = st.button("Generar Titulares")
|
| 187 |
|
| 188 |
# Mostrar los titulares generados
|
| 189 |
if submit:
|
| 190 |
+
if target_audience and product and selected_formula:
|
| 191 |
try:
|
| 192 |
# Obtener la respuesta del modelo
|
| 193 |
+
generated_headlines = generate_headlines(number_of_headlines, target_audience, product, temperature, selected_formula)
|
| 194 |
col2.markdown(f"""
|
| 195 |
<div style="border: 1px solid #000000; padding: 5px; border-radius: 8px; background-color: #ffffff;">
|
| 196 |
<h4>Observa la magia en acción:</h4>
|
|
|
|
| 200 |
except ValueError as e:
|
| 201 |
col2.error(f"Error: {str(e)}")
|
| 202 |
else:
|
| 203 |
+
col2.error("Por favor, proporciona el público objetivo, el producto y selecciona una fórmula.")
|