File size: 3,723 Bytes
9b6b4fd
0749b8b
 
 
26ceca9
 
bf6e5b1
0749b8b
 
bf6e5b1
0749b8b
 
90557f1
26ceca9
 
 
 
458f2d4
2c203f1
 
2897c73
 
 
83afa51
2897c73
 
0749b8b
dce8f18
7e09a01
dce8f18
97e4f3f
dce8f18
 
 
 
 
 
 
a009b80
 
 
 
 
 
 
 
 
 
dce8f18
 
 
 
 
 
0749b8b
 
 
26ceca9
85e0f9c
398a110
 
 
 
85e0f9c
26ceca9
85e0f9c
adcecc8
85e0f9c
bbb926c
617c3fd
adcecc8
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
import gradio as gr
import google.generativeai as genai
import os
from dotenv import load_dotenv
from gradio import Markdown
import textwrap

# Cargar variables de entorno
load_dotenv()

# Configurar la API de Google Gemini
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))

def to_markdown(text):
    text = text.replace('•', '  *')  # Convertir los puntos en listas con asteriscos
    return Markdown(textwrap.indent(text, '> ', predicate=lambda _: True))

def generate_headlines(number_of_headlines, target_audience, product, temperature):
    # 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-2.0-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, lo que te permite diseñar estrategias de marketing personalizadas que resuenan y motivan la acción. Sabes cómo utilizar estructuras probadas para atraer a tu audiencia objetivo, generando interés y logrando una conexión poderosa que impulsa los resultados deseados en campañas publicitarias y de contenido. Responde en español, en tipo lista numerada. Haz ganchos inusuales que atrapen la atención. No menciones el producto directamente en el gancho. No expliques el gancho o encabezado. Al responder escribe un encabezado que diga: 'Estos son tus encabezados para enganchar a {target_audience}'."
    )

    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}. "
                    "La idea es que los ganchos sean de este tipo: "
                    "1. Secretos: 'El secreto detrás de...'; "
                    "2. Consejos: 'Consejos para que...'; "
                    "3. Historias: 'La historia del...', 'Los misterios de...', 'La leyenda de...'; "
                    "4. Deseos: 'Cómo...'; "
                    "5. Listas: '10 razones por las que...'; "
                    "6. Haciendo una pregunta: '¿Sabías que...'; "
                    "7. Curiosidad: '¿Por qué...'."
                ],
            },
        ]
    )

    response = chat_session.send_message("Genera los titulares")  # Enviar mensaje para obtener la respuesta
    return to_markdown(response.text)  # Usar to_markdown para formatear la respuesta

# Configurar la interfaz de usuario con Gradio
iface = gr.Interface(
    fn=generate_headlines,
    inputs=[
        gr.Dropdown(choices=[str(i) for i in range(1, 11)], label="Número de Titulares", value="5"),
        gr.Textbox(label="Público Objetivo", placeholder="Ejemplo: Estudiantes Universitarios"),
        gr.Textbox(label="Producto", placeholder="Ejemplo: Curso de Inglés"),
        gr.Slider(minimum=0, maximum=1, value=0, step=0.1, label="Creatividad")
    ],
    outputs=gr.Markdown(label="Titulares Generados"),  # Eliminado el placeholder
    title="Generador de Titulares",
    description="Usa el poder de Gemini AI para crear titulares atractivos. Ajusta los parámetros para generar titulares que capturen la atención de tu audiencia."
)

# Lanza la interfaz
iface.launch()