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.35, 0.25, 0.40] 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 beneficios por tipo benefit_types = { "directos": [ "El armario del baño es el mejor lugar para guardar medicamentos, ¿verdad? Incorrecto. Es el peor. Los hechos están en la página 10.", "El mejor tiempo verbal que le da a tus clientes la sensación de que ya te han comprado.", "La historia de un joven emprendedor que transformó su vida aplicando esta técnica simple pero poderosa." ], "misterios": [ "Los misterios de cómo algunas personas parecen tener éxito sin esfuerzo, mientras otras luchan. La clave está en esta pequeña diferencia.", "Los misterios de cómo una técnica sencilla te permite reducir el estrés al instante, sin necesidad de dejar tu trabajo o cambiar tu estilo de vida." ], "leyendas": [ "La leyenda de aquellos que dominaron la productividad con un solo hábito. ¿Te atreves a descubrirlo?", "La verdad que nunca te han contado en la escuela, o en casa, sobre cómo ganarte la vida con la música." ], "historias_personales": [ "La historia de un padre ocupado que, con solo 10 minutos al día, logró transformar su salud y bienestar.", "¿Sabías que muchas personas están usando este método y han mejorado su bienestar en solo 7 días?" ], "preguntas_retoricas": [ "¿Cuándo es una buena idea decirle a una chica que te gusta? Si no se lo dices en ese momento, despídete de conocerla íntimamente." ], } # Función para generar bullets de beneficios def generate_benefits(number_of_benefits, 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", } # Configuración del modelo generativo y las instrucciones del sistema model = genai.GenerativeModel( model_name="gemini-1.5-flash", generation_config=generation_config, system_instruction=( f"Eres un experto copywriter especializado en escribir beneficios atractivos para {target_audience} sobre {product} que promueven la acción de {call_to_action}. " "Tu tarea es ayudarme a escribir bullets que destaquen los beneficios de asistir, descargar o inscribirme al webinar. " "Recuerda que cada bullet debe ser breve, claro y persuasivo, y seguir la estructura 'Beneficio + Conector + Valor'. " "Los bullets deben inspirar interés y motivar al lector a tomar acción. " ) ) # Selección aleatoria de tipos de beneficios, manteniendo variedad en la salida selected_types = random.sample(list(benefit_types.keys()), min(number_of_benefits, len(benefit_types))) # Crear un mensaje para el modelo que incluye los beneficios generados según los tipos seleccionados benefits_instruction = ( f"Tu tarea es crear {number_of_benefits} bullets efectivos dirigidos a {target_audience}, " f"para promover {call_to_action} usando la siguiente mención: {mention_instruction}. " "Asegúrate de que cada bullet siga la estructura de 'Beneficio + Conector + Valor', " "como los ejemplos proporcionados anteriormente." ) # Generar el resultado utilizando el modelo con la instrucción de beneficios específica try: response = model.generate_content([benefits_instruction]) # Extraer el texto de la respuesta generated_benefits = response.candidates[0].content.parts[0].text.strip() # Retornar el resultado return generated_benefits except Exception as e: raise ValueError(f"Error al generar los beneficios: {str(e)}") # Configurar la interfaz de usuario con Streamlit st.set_page_config(page_title="Quick Prompt", layout="wide") # Centrar el título y el subtítulo st.markdown("
{generated_benefits}