File size: 4,735 Bytes
e00b344
 
 
 
 
 
 
 
 
086f7bc
6dc4bab
086f7bc
 
 
 
d231026
 
086f7bc
6497148
 
 
 
086f7bc
6497148
086f7bc
66cc31d
de72557
086f7bc
6497148
086f7bc
 
3c98a42
 
 
 
 
 
 
 
6497148
3c98a42
 
 
 
6497148
12b1f19
 
086f7bc
6497148
 
086f7bc
 
 
de72557
507ca0b
086f7bc
e00b344
f802f3d
dd547ea
 
 
 
 
 
 
d603b99
e00b344
de72557
e00b344
 
086f7bc
e00b344
 
 
de72557
b2af965
6dc4bab
 
 
 
 
 
 
b2af965
 
 
 
 
 
e00b344
 
 
 
de72557
6dc4bab
de72557
 
 
 
 
 
 
 
e00b344
de72557
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
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": 50,  # 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("<h1 style='text-align: center;'>Impact Bullet Generator</h1>", unsafe_allow_html=True)
st.markdown("<h4 style='text-align: center;'>Transforma los pensamientos de tu audiencia en beneficios persuasivos que inspiren a la acción.</h4>", unsafe_allow_html=True)

# Crear columnas
col1, col2 = st.columns([1, 2])

# Columnas de entrada
with col1:
    target_audience = st.text_input("Público objetivo:", placeholder="Ejemplo: Estudiantes universitarios")
    product = st.text_input("Producto relacionado:", placeholder="Ejemplo: Curso de productividad")
    
    # Slider para la creatividad
    creativity = st.slider("Creatividad (Temperatura)", min_value=0.0, max_value=1.0, value=0.7, step=0.1)
    
    # Slider para el número de bullets
    num_bullets = st.slider("Número de Bullets", min_value=1, max_value=10, value=5, step=1)
    
    focus_points = st.multiselect(
        "Selecciona los enfoques que deseas utilizar:",
        ["Curiosidad", "CASI Imposible", "Autoridad y Credibilidad", "Contraste"],
        default=[]
    )

    submit = st.button("Generar Beneficios")

# Mostrar los beneficios generados
if submit:
    if focus_points and product and target_audience:
        benefits = generate_benefits(focus_points, product, target_audience, creativity, num_bullets)
        formatted_benefits = '<br style="line-height: 2;">'.join(benefits)
        
        col2.markdown(f"""
            <div style="border: 1px solid #000000; padding: 5px; border-radius: 8px; background-color: #ffffff;">
                <h4>Mira los beneficios generados:</h4>
                <p style="line-height: 2;">{formatted_benefits}</p>
            </div>
        """, unsafe_allow_html=True)
    else:
        col2.error("Por favor, proporciona al menos un enfoque, un producto y un público objetivo para generar beneficios.")