from dotenv import load_dotenv import streamlit as st import os import google.generativeai as genai load_dotenv() genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) # Función para generar los beneficios (bullets) basados en el enfoque def generate_benefits(focus_points, product, target_audience, creativity, num_bullets): model = genai.GenerativeModel("gemini-1.5-flash") # Base del prompt para generar los bullets persuasivos prompt_base = f""" Eres un experto en copywriting y tu objetivo es crear bullets persuasivos que destaquen los beneficios del {product}, conecten emocionalmente con la audiencia {target_audience} y respondan a sus problemas, necesidades, deseos o situaciones específicas.\n\n Ten en cuenta lo siguiente:\n - Los bullets deben ser breves, concisos, como minititulares que impacten a la audiencia.\n - Deben captar la atención de inmediato y despertar curiosidad o acción.\n - Los beneficios deben ser claros, enfocados en el valor práctico y emocional del producto.\n Ahora, crea una lista de {num_bullets} bullets persuasivos para el siguiente producto y nicho objetivo.\n\n Producto: {product}\n Nicho objetivo: {target_audience}\n """ benefits = [] # Crear el prompt específico para cada enfoque y enviarlo al modelo for point in focus_points[:num_bullets]: # Limitar a los bullets indicados por el usuario # Crear el prompt para el enfoque seleccionado specific_prompt = prompt_base + f"\n\nEnfoque: {point}\n" # Configurar el modelo con parámetros de generación model = genai.GenerativeModel( model_name="gemini-1.5-flash", generation_config={ "temperature": creativity, # Usar la creatividad para definir la temperatura "top_p": 0.65, # Probabilidad de tokens para mayor diversidad "top_k": 280, # Número de tokens que se consideran en cada paso "max_output_tokens": 2048, # Limitar a 50 tokens para que el bullet sea corto "response_mime_type": "text/plain", # Respuesta en texto plano }, ) # Generar los beneficios con la API de Google response = model.generate_content([specific_prompt]) if response and response.parts: bullet = response.parts[0].text.strip() benefits.append(bullet) else: benefits.append("Lo siento, no se pudieron generar los beneficios para este enfoque.") return benefits # Configuración de Streamlit st.set_page_config(page_title="Quick Prompt", 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) # Centrar el título y el subtítulo st.markdown("
{formatted_benefits}