Spaces:
Sleeping
Sleeping
File size: 4,601 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 ed990d5 2e0a5bb 7abaf14 fc62042 d8705e8 fc62042 d8705e8 ed990d5 2e0a5bb ed990d5 2e0a5bb ed990d5 fc62042 e00b344 fc62042 afe461a c7251fe fc62042 d8705e8 afe461a d8705e8 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 117 118 119 120 121 |
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)
# Create tabs instead of nested expanders
tab1, tab2 = st.tabs(["Fórmula", "Ángulo"])
with tab1:
temperature = st.slider("Creatividad", min_value=0.0, max_value=2.0, value=1.0, step=0.1)
selected_formula_key = st.selectbox(
"Selecciona una fórmula para tus beneficios",
options=list(bullet_formulas.keys())
)
selected_formula = bullet_formulas[selected_formula_key]
with tab2:
selected_angle_key = st.selectbox(
"Selecciona el ángulo para tus beneficios",
options=list(bullet_angles.keys())
)
selected_angle = bullet_angles[selected_angle_key]
# Show angle details
st.markdown(f"""
**Style:** {selected_angle['style']}
**Keywords:** {', '.join(selected_angle['keywords'])}
""")
# Button at the bottom
submit = st.button("Generar Beneficios")
# 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="padding: 15px; border: 1px solid #ddd; border-radius: 8px;">
<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.") |