Update app.py
Browse files
app.py
CHANGED
@@ -1,8 +1,7 @@
|
|
1 |
-
import
|
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
|
@@ -11,9 +10,11 @@ load_dotenv()
|
|
11 |
# Configurar la API de Google Gemini
|
12 |
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
|
13 |
|
|
|
14 |
def to_markdown(text):
|
15 |
-
return
|
16 |
|
|
|
17 |
def generate_opening_paragraph(target_audience, product, temperature, text_type, model_name):
|
18 |
# Crear la configuración del modelo
|
19 |
generation_config = {
|
@@ -27,7 +28,7 @@ def generate_opening_paragraph(target_audience, product, temperature, text_type,
|
|
27 |
model = genai.GenerativeModel(
|
28 |
model_name=model_name,
|
29 |
generation_config=generation_config,
|
30 |
-
system_instruction=f"Eres un especialista en copywriting altamente capacitado, enfocado en la creación de textos persuasivos que logran captar la atención del lector, mantener su interés y llevarlo a la acción. Tienes una profunda comprensión de la psicología del consumidor, y utilizas la persuasión de manera efectiva en cada palabra que escribes, conectando con las emociones y necesidades de tu audiencia. Dominas técnicas avanzadas de redacción, como el uso de encabezados poderosos, aperturas intrigantes, llamados a la acción efectivos y storytelling cautivador. Tu habilidad para ajustar el tono y estilo al contexto asegura que cada mensaje resuene profundamente. Tienes una amplia experiencia demostrada en generar resultados de ventas tanto para negocios en línea como offline. Las respuestas deben presentarse en formato de texto, en párrafos, sin mencionar directamente el producto o servicio, ni referirse al público objetivo de manera explícita. Al responder escribe un encabezado que diga: 'Este es tu
|
31 |
)
|
32 |
|
33 |
chat_session = model.start_chat(
|
@@ -35,35 +36,14 @@ def generate_opening_paragraph(target_audience, product, temperature, text_type,
|
|
35 |
{
|
36 |
"role": "user",
|
37 |
"parts": [
|
38 |
-
f"Crea un párrafo de apertura para una {text_type.lower()} que haga conciente a {target_audience} que tiene un problema
|
39 |
-
"Para escribir este párrafo de apertura utiliza una o algunas de estas técnicas de Apertura para Cartas de Ventas, escoge las
|
40 |
-
"1. Si.. Entonces"
|
41 |
-
"
|
42 |
-
"
|
43 |
-
"
|
44 |
-
"
|
45 |
-
"
|
46 |
-
"Aún más poderoso que la llave 'Si / Entonces' es la misma, pero agregando la figura de autoridad o credibilidad. Por ejemplo: 'Si quieres saber una manera secreta de volverte casi invencible en una pelea... entonces aquí te mostraré lo que hacían los gladiadores y los samuráis. Y por qué tú también puedes hacer lo mismo a partir de hoy.'"
|
47 |
-
"Una manera de notar el poder de estos párrafos de apertura es quitando la figura de autoridad. En este caso: los gladiadores y samuráis."
|
48 |
-
"Eso cambiaría el párrafo a: 'Si quieres saber una manera secreta de volverte casi invencible en una pelea... entonces aquí te mostraré por qué tú también puedes hacer lo mismo a partir de hoy.'"
|
49 |
-
"Como puedes ver, no tiene tanto impacto como la versión que agrega a los gladiadores y samuráis."
|
50 |
-
"3. Honestidad"
|
51 |
-
"Ser transparente es una de las mejores formas de obtener más clientes. Y también funciona con los párrafos de apertura."
|
52 |
-
"Por ejemplo, uno de los anuncios de Gary Halbert iniciaba de esta manera: 'Mi nombre es Betty Adams, y lo primero que debes saber sobre mí es que... no soy una doctora. Tampoco soy experta en nutrición. No fui a la universidad y ni siquiera tengo un grado académico. De hecho, la única cosa en la que me considero experta es...'"
|
53 |
-
"Y luego iba a un subtítulo en el que mencionaba cómo podía hacerte bajar 10 kilos de una manera muy sencilla."
|
54 |
-
"En este caso puedes notar todos los negativos que usa: 'no soy doctora', 'no soy experta en nutrición', 'no fui a la escuela', 'no tengo un grado académico'. Son cuatro cosas negativas lo cual fortalece su afirmación sobre lo que sí es. Ahora, esto no siempre va a funcionar para todas las cartas. Dependerá de tu mercado y tu cliente ideal. Si tu mercado no es escéptico, no necesitas usar este tipo de párrafo."
|
55 |
-
"4. Sensacionalista"
|
56 |
-
"Éste está relacionado con el encabezado sensacionalista. Aquí es donde dirías algo como:'Déjame contarte esta historia extraña sobre un hombre que fue arrestado debido a que tenía herpes.'"
|
57 |
-
"Es sensacionalista. Y lo sensacionalista vende. Siempre lo ha hecho y lo hará."
|
58 |
-
"Sin duda, el párrafo es extraño y hace pensar a tu lector: '¿Cómo alguien fue arrestado por tener herpes? ¿Qué hizo? ¿Qué sucedió?' Los deja enganchados, adictos a querer saber más. Tienen que saberlo."
|
59 |
-
"5. Haz una pregunta"
|
60 |
-
"Hacen que las personas se detengan si están interesadas. Uno de los mejores párrafos de apertura que hay es el siguiente: '¿Sabías que el valor a largo plazo de las tarjetas de béisbol es mucho mayor que el de las acciones y monedas raras?'"
|
61 |
-
"Así que cuando le hablas a alguien que está en el nicho de finanzas, inversionistas y demás, sobre este tema, estará interesado porque es diferente y lo deja listo para iniciar la aventura."
|
62 |
-
"6. 'Micro aperturas'"
|
63 |
-
"Este párrafo debe ser corto. Unas cuantas palabras... para que lean el siguiente. Esto es debido a que al ser breve, lo hace fácil de leer."
|
64 |
-
"Y si dices algo que ponga a tu lector en la mentalidad adecuada, esto puede ser bastante poderoso. Por ejemplo, si tu producto está dirigido a un mercado escéptico, puedes usar un párrafo como el siguiente: 'Yo era un escéptico total.'"
|
65 |
-
"Con esto estás yendo justo a su mente, a sus dudas."
|
66 |
-
"Uno que puedes usar con efectividad es: 'Imagina lo siguiente:'"
|
67 |
],
|
68 |
},
|
69 |
]
|
@@ -72,42 +52,30 @@ def generate_opening_paragraph(target_audience, product, temperature, text_type,
|
|
72 |
response = chat_session.send_message("Genera el párrafo de apertura")
|
73 |
return to_markdown(response.text)
|
74 |
|
75 |
-
#
|
76 |
-
|
77 |
-
<style>
|
78 |
-
body { font-family: Arial, sans-serif; }
|
79 |
-
.gradio-container { max-width: 800px; margin: auto; }
|
80 |
-
</style>
|
81 |
-
"""
|
82 |
|
83 |
-
|
84 |
-
|
|
|
|
|
|
|
|
|
|
|
85 |
|
86 |
-
|
87 |
-
|
88 |
-
target_audience = gr.Textbox(label="Público Objetivo", placeholder="Ejemplo: Estudiantes Universitarios")
|
89 |
-
product = gr.Textbox(label="Producto", placeholder="Ejemplo: Curso de Inglés")
|
90 |
-
temperature = gr.Slider(minimum=0, maximum=1, value=0.5, step=0.1, label="Creatividad")
|
91 |
-
text_type = gr.Dropdown(choices=["Página de Ventas", "Correo", "Historia"], label="Tipo de Texto", value="Página de Ventas")
|
92 |
-
model_selector = gr.Dropdown(choices=["gemini-1.5-flash", "gemini-1.5-pro"], value="gemini-1.5-flash", label="Selecciona el modelo")
|
93 |
-
|
94 |
-
# Colocar los botones en una misma fila
|
95 |
-
with gr.Row():
|
96 |
-
submit_btn = gr.Button("Generar Párrafo de Apertura", variant="primary")
|
97 |
-
clear_btn = gr.Button("Empezar de nuevo", variant="secondary")
|
98 |
-
|
99 |
-
with gr.Column():
|
100 |
-
output_text = gr.Markdown(label="Párrafo de Apertura Generado")
|
101 |
|
102 |
-
#
|
103 |
-
|
|
|
|
|
|
|
|
|
|
|
104 |
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
)
|
111 |
-
|
112 |
-
# Lanzar la interfaz
|
113 |
-
iface.launch()
|
|
|
1 |
+
import streamlit as st
|
2 |
import google.generativeai as genai
|
3 |
import os
|
4 |
from dotenv import load_dotenv
|
|
|
5 |
import textwrap
|
6 |
|
7 |
# Cargar variables de entorno
|
|
|
10 |
# Configurar la API de Google Gemini
|
11 |
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
|
12 |
|
13 |
+
# Función para formatear texto en Markdown
|
14 |
def to_markdown(text):
|
15 |
+
return textwrap.indent(text, '> ', predicate=lambda _: True)
|
16 |
|
17 |
+
# Función para generar el párrafo de apertura
|
18 |
def generate_opening_paragraph(target_audience, product, temperature, text_type, model_name):
|
19 |
# Crear la configuración del modelo
|
20 |
generation_config = {
|
|
|
28 |
model = genai.GenerativeModel(
|
29 |
model_name=model_name,
|
30 |
generation_config=generation_config,
|
31 |
+
system_instruction=f"Eres un especialista en copywriting altamente capacitado, enfocado en la creación de textos persuasivos que logran captar la atención del lector, mantener su interés y llevarlo a la acción. Tienes una profunda comprensión de la psicología del consumidor, y utilizas la persuasión de manera efectiva en cada palabra que escribes, conectando con las emociones y necesidades de tu audiencia. Dominas técnicas avanzadas de redacción, como el uso de encabezados poderosos, aperturas intrigantes, llamados a la acción efectivos y storytelling cautivador. Tu habilidad para ajustar el tono y estilo al contexto asegura que cada mensaje resuene profundamente. Tienes una amplia experiencia demostrada en generar resultados de ventas tanto para negocios en línea como offline. Las respuestas deben presentarse en formato de texto, en párrafos, sin mencionar directamente el producto o servicio, ni referirse al público objetivo de manera explícita. Al responder escribe un encabezado que diga: 'Este es tu párrafo de apertura para cautivar a {target_audience}'"
|
32 |
)
|
33 |
|
34 |
chat_session = model.start_chat(
|
|
|
36 |
{
|
37 |
"role": "user",
|
38 |
"parts": [
|
39 |
+
f"Crea un párrafo de apertura para una {text_type.lower()} que haga conciente a {target_audience} que tiene un problema explicándolos con situaciones reales de su vida, utiliza un lenguaje natural o conversacional. El objetivo de este párrafo es que tengan el deseo de seguir leyendo este párrafo y saber de qué se trata {product}. Utiliza la persuasión de manera efectiva en cada palabra, dominando técnicas avanzadas como el uso de encabezados poderosos y aperturas intrigantes."
|
40 |
+
"Para escribir este párrafo de apertura utiliza una o algunas de estas técnicas de Apertura para Cartas de Ventas, escoge las más adecuadas:"
|
41 |
+
"1. Si.. Entonces"
|
42 |
+
"2. Si / Entonces + Autoridad"
|
43 |
+
"3. Honestidad"
|
44 |
+
"4. Sensacionalista"
|
45 |
+
"5. Haz una pregunta"
|
46 |
+
"6. 'Micro aperturas'"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
],
|
48 |
},
|
49 |
]
|
|
|
52 |
response = chat_session.send_message("Genera el párrafo de apertura")
|
53 |
return to_markdown(response.text)
|
54 |
|
55 |
+
# Título de la aplicación
|
56 |
+
st.title("Generador de Párrafos de Apertura")
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
+
# Crear un formulario para la entrada del usuario
|
59 |
+
with st.form(key='my_form'):
|
60 |
+
target_audience = st.text_input("Público Objetivo", placeholder="Ejemplo: Estudiantes Universitarios")
|
61 |
+
product = st.text_input("Producto", placeholder="Ejemplo: Curso de Inglés")
|
62 |
+
temperature = st.slider("Creatividad", 0.0, 1.0, 0.5, 0.1)
|
63 |
+
text_type = st.selectbox("Tipo de Texto", ["Página de Ventas", "Correo", "Historia"])
|
64 |
+
model_selector = st.selectbox("Selecciona el modelo", ["gemini-1.5-flash", "gemini-1.5-pro"])
|
65 |
|
66 |
+
# Botón para enviar el formulario
|
67 |
+
submit_btn = st.form_submit_button("Generar Párrafo de Apertura")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
|
69 |
+
# Botón para limpiar el formulario (reiniciar)
|
70 |
+
if st.button("Empezar de nuevo"):
|
71 |
+
target_audience = ""
|
72 |
+
product = ""
|
73 |
+
temperature = 0.5
|
74 |
+
text_type = "Página de Ventas"
|
75 |
+
model_selector = "gemini-1.5-flash"
|
76 |
|
77 |
+
# Mostrar el resultado
|
78 |
+
if submit_btn:
|
79 |
+
# Llamar a la función para generar el párrafo
|
80 |
+
output_text = generate_opening_paragraph(target_audience, product, temperature, text_type, model_selector)
|
81 |
+
st.markdown(output_text)
|
|
|
|
|
|
|
|