File size: 4,345 Bytes
e00b344
 
 
 
d8705e8
 
 
84dbbc9
e00b344
eb6729d
e00b344
 
c7251fe
e00b344
 
fc62042
d8705e8
 
c7251fe
d8705e8
c7251fe
d8705e8
c7251fe
afe461a
 
d8705e8
 
812621f
d8705e8
afe461a
 
 
 
 
 
 
d8705e8
 
 
dd547ea
c7251fe
 
dd547ea
812621f
 
 
 
 
 
 
 
d8705e8
812621f
d603b99
c7251fe
fc62042
 
 
d8705e8
e00b344
 
fc62042
e00b344
 
ed990d5
e00b344
c7251fe
 
fc62042
c7251fe
20e4b5d
b11e1ae
 
fc62042
20e4b5d
d8705e8
fc62042
d8705e8
ed990d5
b11e1ae
ed990d5
20e4b5d
ed990d5
 
 
b11e1ae
 
 
ed990d5
20e4b5d
e00b344
fc62042
afe461a
c7251fe
fc62042
d8705e8
 
 
 
 
 
afe461a
 
d8705e8
 
 
 
 
54c7013
d8705e8
 
 
 
54c7013
c7251fe
812621f
1
2
3
4
5
6
7
8
9
10
11
12
13
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
from dotenv import load_dotenv
import streamlit as st
import os
import google.generativeai as genai
from bullet_formulas import bullet_formulas
from style import styles
from prompts import create_instruction
from angles import bullet_angles

# Cargar las variables de entorno
load_dotenv()

# Configurar la API de Google
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))

# Función para generar bullets de beneficios
@st.cache_resource
def get_model(temperature):
    generation_config = {
        "temperature": temperature,
    }
    return genai.GenerativeModel('gemini-2.0-flash', generation_config=generation_config)

# Update the generate_benefits function to include selected_angle
def generate_benefits(number_of_benefits, target_audience, product, temperature, selected_formula, selected_angle):
    if not target_audience or not product:
        return "Por favor, completa todos los campos requeridos."
    
    model = get_model(temperature)
    benefits_instruction = create_instruction(
        number_of_benefits, 
        target_audience, 
        product, 
        selected_formula,
        selected_angle
    )
    
    response = model.generate_content([benefits_instruction], generation_config={"temperature": temperature})
    return response.parts[0].text if response and response.parts else "Error generating content."

# Configurar la interfaz de usuario con Streamlit
st.set_page_config(page_title="Bullet Benefits Generator", layout="wide")

# Leer el contenido del archivo manual.md
with open("manual.md", "r", encoding="utf-8") as file:
    manual_content = file.read()

# Mostrar el contenido del manual en el sidebar
st.sidebar.markdown(manual_content)

# Ocultar elementos de la interfaz
st.markdown(styles["main_layout"], unsafe_allow_html=True)

# Centrar el título y el subtítulo
st.markdown("<h1 style='text-align: center;'>Bullet Benefits Generator</h1>", unsafe_allow_html=True)
st.markdown("<h4 style='text-align: center;'>Transforma características en beneficios irresistibles que conectan emocionalmente con tu audiencia.</h4>", unsafe_allow_html=True)

# Añadir CSS personalizado para el botón
st.markdown(styles["button"], unsafe_allow_html=True)

# Crear columnas
col1, col2 = st.columns([1, 2])  

# Columnas de entrada
# Inside the column section
with col1:
    target_audience = st.text_input("¿Quién es tu público objetivo?", placeholder="Ejemplo: Estudiantes Universitarios")
    product = st.text_input("¿Qué producto tienes en mente?", placeholder="Ejemplo: Curso de Inglés")
    number_of_benefits = st.selectbox("Número de Beneficios", options=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], index=4)

    # Fix indentation - remove extra spaces
    with st.expander("Opciones avanzadas"):
        st.subheader("Tipo de CTA:")
        selected_formula_key = st.selectbox(
            "",
            options=list(bullet_formulas.keys())
        )
        selected_formula = bullet_formulas[selected_formula_key]

        st.subheader("Tono del CTA:")
        selected_angle_key = st.selectbox(
            "",
            options=list(bullet_angles.keys())
        )
        selected_angle = bullet_angles[selected_angle_key]

        st.subheader("Nivel de creatividad:")
        temperature = st.slider("", min_value=0.0, max_value=2.0, value=1.0, step=0.1)

    submit = st.button("GENERAR LOS BULLETS POINTS")

# Mostrar los beneficios generados
# Update the submit section to include selected_angle
if submit:
    if target_audience and product and selected_formula:
        with st.spinner('Generando beneficios...'):
            generated_benefits = generate_benefits(
                number_of_benefits, 
                target_audience, 
                product, 
                temperature, 
                selected_formula,
                selected_angle
            )
            if not isinstance(generated_benefits, str):
                col2.error("Error al generar beneficios")
            else:
                col2.markdown(f"""
                    <div style="{styles['results_container']}">
                        <h3>Beneficios Generados:</h3>
                        <p>{generated_benefits}</p>
                    </div>
                """, unsafe_allow_html=True)

    else:
        col2.warning("Por favor, completa todos los campos antes de generar beneficios.")