Spaces:
Sleeping
Sleeping
File size: 5,250 Bytes
09b8bec 25d1401 d3c442c 09b8bec d3c442c 25d1401 09b8bec 25d1401 09b8bec 25d1401 d3c442c 09b8bec 25d1401 09b8bec d3c442c 09b8bec d3c442c 09b8bec d3c442c 25d1401 09b8bec d3c442c 09b8bec d3c442c 09b8bec d3c442c 09b8bec d3c442c 09b8bec d3c442c 09b8bec d3c442c 09b8bec d3c442c 09b8bec d3c442c 09b8bec d3c442c 09b8bec d3c442c 09b8bec d3c442c 09b8bec d3c442c 09b8bec 25d1401 09b8bec d3c442c |
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 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
from dotenv import load_dotenv
import streamlit as st
import os
import google.generativeai as genai
from ads_formulas import ads_formulas # Import the ads formulas
from style import styles
from prompts import create_fb_ad_instruction
from emotional_angles import emotional_angles
from copywriter_personas import copywriter_personas
from ad_objectives import ad_objectives # Import ad objectives
# 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 modelo
@st.cache_resource
def get_model(temperature):
generation_config = {
"temperature": temperature,
}
return genai.GenerativeModel('gemini-2.0-flash', generation_config=generation_config)
# Function to generate Facebook ads
def generate_fb_ad(target_audience, product, temperature, selected_formula, selected_angle, selected_persona, ad_objective=None):
if not target_audience or not product:
return "Por favor, completa todos los campos requeridos."
model = get_model(temperature)
ad_instruction = create_fb_ad_instruction(
target_audience,
product,
selected_formula,
selected_angle,
selected_persona,
ad_objective,
language="español" # Fixed to Spanish
)
response = model.generate_content([ad_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="Facebook Ads 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;'>Facebook Ads Generator</h1>", unsafe_allow_html=True)
st.markdown("<h4 style='text-align: center;'>Crea anuncios persuasivos que conectan con tu audiencia y generan conversiones.</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
with col1:
ad_target_audience = st.text_input("¿Quién es tu público objetivo?", placeholder="Ejemplo: Madres trabajadoras de 30-45 años")
ad_product = st.text_input("¿Qué producto tienes en mente?", placeholder="Ejemplo: Curso de gestión del tiempo")
with st.expander("Opciones avanzadas"):
# Selector de fórmula de anuncio
ad_formula_key = st.selectbox(
"Fórmula de anuncio",
options=list(ads_formulas.keys()),
label_visibility="visible"
)
ad_formula = ads_formulas[ad_formula_key]
# Selector de ángulo emocional
emotional_angle_key = st.selectbox(
"Ángulo emocional",
options=list(emotional_angles.keys()),
label_visibility="visible"
)
emotional_angle = emotional_angles[emotional_angle_key]
# Selector de personalidad de copywriter
ad_persona_key = st.selectbox(
"Estilo de copywriter",
options=list(copywriter_personas.keys()),
index=0,
format_func=lambda x: x.replace("_", " "),
label_visibility="visible"
)
ad_persona = copywriter_personas[ad_persona_key]
# Selector de objetivo de anuncio
ad_objective_key = st.selectbox(
"Objetivo de la campaña",
options=list(ad_objectives.keys()),
label_visibility="visible"
)
selected_objective = ad_objectives[ad_objective_key] if ad_objective_key != "ninguno" else None
# Removed language selector
ad_temperature = st.slider(
"Nivel de creatividad",
min_value=0.0,
max_value=2.0,
value=1.0,
step=0.1,
label_visibility="visible"
)
submit_ad = st.button("GENERAR ANUNCIO")
# Mostrar el anuncio generado
if submit_ad:
if ad_target_audience and ad_product:
with st.spinner('Generando anuncio...'):
generated_ad = generate_fb_ad(
ad_target_audience,
ad_product,
ad_temperature,
ad_formula,
emotional_angle,
ad_persona,
selected_objective
# Removed language parameter
)
if not isinstance(generated_ad, str):
col2.error("Error al generar el anuncio")
else:
col2.markdown(f"""
<div style="{styles['results_container']}">
<h3>Anuncio Generado:</h3>
<p>{generated_ad}</p>
</div>
""", unsafe_allow_html=True)
else:
col2.warning("Por favor, completa todos los campos antes de generar el anuncio.") |