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 "" # Función para generar titulares def generate_headlines(number_of_headlines, target_audience, product, temperature): product_mention = get_random_product_mention() mention_instruction = get_mention_instruction(product_mention, product) # Crear la configuración del modelo generation_config = { "temperature": temperature, # Usar el valor del slider aquí "top_p": 0.95, "top_k": 64, "max_output_tokens": 2048, "response_mime_type": "text/plain", } model = genai.GenerativeModel( model_name="gemini-1.5-flash", generation_config=generation_config, system_instruction="Eres un copywriter de clase mundial, con experiencia en la creación de ganchos, titulares y líneas de asunto que capturan la atención de inmediato. Tu habilidad radica en comprender profundamente las emociones, deseos y desafíos de una audiencia específica." ) chat_session = model.start_chat( history=[ { "role": "user", "parts": [ f"Tu tarea es crear {number_of_headlines} ganchos o encabezados titulares llamativos diseñados para {target_audience} con el fin de generar interés en {product}. " f"Usa la siguiente mención: {mention_instruction}. " "Generate captivating bullets that draw from a random mix of the following examples:" "¿El mejor lugar para guardar los medicamentos? El botiquín del baño, ¿verdad? Incorrecto. En realidad, es el peor. ¡Descubre la verdad en la página 10!" "El tiempo verbal ideal que hace que tus clientes sientan que ya han comprado de ti." "La fascinante historia de... ¿Qué secretos se esconden detrás de las leyendas?" "Un sistema sencillo para redactar textos persuasivos sin tener que convencer a nadie de que compre." "La verdad que nunca te contaron en la escuela, ni en casa, sobre cómo ganar dinero con la música." "¿Sabías que... hay un dato sorprendente que podría cambiar tu perspectiva para siempre?" "¿Cuándo es el momento adecuado para confesarle a una chica que te gusta? Si no lo dices en ese instante, despídete de la posibilidad de conocerla de una manera más íntima." "Ensure the bullets are engaging and connect the audience's emotions, needs, and desires, creating a strong pull to continue reading." "When responding, only write the headlines in list format, do not explain anything, do not label what type they belong to, and do not write any observations or recommendations." ], }, ] ) response = chat_session.send_message("Genera los titulares") # 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="Generador de Titulares", layout="wide") # Centrar el título y el subtítulo st.markdown("