from dotenv import load_dotenv import streamlit as st import os import google.generativeai as genai import random # Cargar las variables de entorno load_dotenv() # Configurar la API de Google genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) # Función para obtener una mención del producto de manera probabilística def get_random_product_mention(): mentions = ["Directa", "Indirecta", "Metafórica"] probabilities = [0.34, 0.33, 0.33] return random.choices(mentions, probabilities)[0] # Crear la instrucción de mención basada en la opción seleccionada def get_mention_instruction(product_mention, product): if product_mention == "Directa": return f"Introduce directamente el producto '{product}' como la solución clara al problema que enfrenta el lector." elif product_mention == "Indirecta": return f"Referencia sutilmente el producto '{product}' como una posible solución al problema del lector sin nombrarlo explícitamente." elif product_mention == "Metafórica": return f"Introduce el producto '{product}' usando una metáfora, conectándolo simbólicamente a la solución que necesita el lector." return "" # Ejemplos de llamados a la acción por tipo cta_types = { "urgencia": [ "Inscríbete ahora y asegúrate tu lugar antes de que se agoten las plazas.", "No pierdas más tiempo, comienza tu transformación hoy.", ], "descuento": [ "Aprovecha el 50% de descuento por tiempo limitado.", "Haz tu pedido ahora y obtén un 30% de descuento adicional.", ], "exclusividad": [ "Accede de inmediato a nuestro contenido exclusivo solo para miembros.", "Sé parte de este grupo selecto y disfruta de beneficios únicos.", ], "beneficio_claro": [ "Mejora tu productividad en solo una semana.", "Transforma tu carrera profesional con nuestras herramientas avanzadas.", ], "personalización": [ "Descubre cómo podemos personalizar esta oferta para ti.", "Hazlo tuyo: elige las opciones que mejor se adapten a tus necesidades.", ], } # Función para generar llamados a la acción def generate_ctas(number_of_ctas, target_audience, product, call_to_action, temperature): product_mention = get_random_product_mention() mention_instruction = get_mention_instruction(product_mention, product) # Configuración del modelo generation_config = { "temperature": temperature, "top_p": 0.85, "top_k": 128, "max_output_tokens": 2048, "response_mime_type": "text/plain", } model = genai.GenerativeModel( model_name="gemini-1.5-flash", generation_config=generation_config, system_instruction="You are a world-class copywriter with expertise in crafting action-driven CTAs that convert. Your task is to create action-oriented, high-conversion CTAs tailored for specific audiences. Focus on urgency, clear benefits, and strong motivations to encourage immediate action. Use Spanish and provide results in a numbered list format." ) # Crear un mensaje para el modelo que incluye tipos específicos de CTA selected_types = random.sample(list(cta_types.keys()), min(number_of_ctas, len(cta_types))) ctas_instruction = ( f"Tu tarea es crear {number_of_ctas} llamados a la acción efectivos dirigidos a {target_audience}, " f"para promover {call_to_action}. Usa la siguiente mención: {mention_instruction}. " "Asegúrate de utilizar diferentes estilos de CTA en la salida." ) chat_session = model.start_chat( history=[ { "role": "user", "parts": [ctas_instruction], }, ] ) response = chat_session.send_message("Genera los llamados a la acción") # Enviar mensaje para obtener la respuesta return response.text # Regresar la respuesta directamente # Configurar la interfaz de usuario con Streamlit st.set_page_config(page_title="Enchanted CTAs", layout="wide") # Centrar el título y el subtítulo st.markdown("
{generated_ctas}