JeCabrera commited on
Commit
d51e47b
·
verified ·
1 Parent(s): b12713d

Upload 3 files

Browse files
Files changed (3) hide show
  1. app.py +71 -0
  2. gitattributes (1) +35 -0
  3. requirements.txt +3 -0
app.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import google.generativeai as genai
3
+ import os
4
+ from dotenv import load_dotenv
5
+ from gradio import Markdown
6
+ import textwrap
7
+
8
+ # Cargar variables de entorno
9
+ load_dotenv()
10
+
11
+ # Configurar la API de Google Gemini
12
+ genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
13
+
14
+ def to_markdown(text):
15
+ text = text.replace('•', ' *') # Convertir los puntos en listas con asteriscos
16
+ return Markdown(textwrap.indent(text, '> ', predicate=lambda _: True))
17
+
18
+ def generate_headlines(number_of_headlines, target_audience, product, temperature):
19
+ # Crear la configuración del modelo
20
+ generation_config = {
21
+ "temperature": temperature, # Usar el valor del slider aquí
22
+ "top_p": 0.95,
23
+ "top_k": 64,
24
+ "max_output_tokens": 2048,
25
+ "response_mime_type": "text/plain",
26
+ }
27
+
28
+ model = genai.GenerativeModel(
29
+ model_name="gemini-1.5-flash",
30
+ generation_config=generation_config,
31
+ 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}'."
32
+ )
33
+
34
+ chat_session = model.start_chat(
35
+ history=[
36
+ {
37
+ "role": "user",
38
+ "parts": [
39
+ 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}. "
40
+ "La idea es que los ganchos sean de este tipo: "
41
+ "1. Secretos: 'El secreto detrás de...'; "
42
+ "2. Consejos: 'Consejos para que...'; "
43
+ "3. Historias: 'La historia del...', 'Los misterios de...', 'La leyenda de...'; "
44
+ "4. Deseos: 'Cómo...'; "
45
+ "5. Listas: '10 razones por las que...'; "
46
+ "6. Haciendo una pregunta: '¿Sabías que...'; "
47
+ "7. Curiosidad: '¿Por qué...'."
48
+ ],
49
+ },
50
+ ]
51
+ )
52
+
53
+ response = chat_session.send_message("Genera los titulares") # Enviar mensaje para obtener la respuesta
54
+ return to_markdown(response.text) # Usar to_markdown para formatear la respuesta
55
+
56
+ # Configurar la interfaz de usuario con Gradio
57
+ iface = gr.Interface(
58
+ fn=generate_headlines,
59
+ inputs=[
60
+ gr.Dropdown(choices=[str(i) for i in range(1, 11)], label="Número de Titulares", value="5"),
61
+ gr.Textbox(label="Público Objetivo", placeholder="Ejemplo: Estudiantes Universitarios"),
62
+ gr.Textbox(label="Producto", placeholder="Ejemplo: Curso de Inglés"),
63
+ gr.Slider(minimum=0, maximum=1, value=0, step=0.1, label="Creatividad")
64
+ ],
65
+ outputs=gr.Markdown(label="Titulares Generados"), # Eliminado el placeholder
66
+ title="Generador de Titulares",
67
+ 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."
68
+ )
69
+
70
+ # Lanza la interfaz
71
+ iface.launch()
gitattributes (1) ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ gradio
2
+ google-generativeai
3
+ python-dotenv