JeCabrera commited on
Commit
64b113b
·
verified ·
1 Parent(s): 2356284

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +66 -32
app.py CHANGED
@@ -1,53 +1,87 @@
1
- import gradio as gr
2
- import anthropic
3
- import os # Importa el módulo os para manejar variables de entorno
 
 
4
 
5
- # Obtén la clave de API desde la variable de entorno
6
- api_key = os.getenv("ANTHROPIC_API_KEY")
7
 
8
- # Verifica si la clave de API está configurada
9
- if not api_key:
10
- raise ValueError("Falta la clave de API de Anthropoid. Asegúrate de configurarla en los secretos del repositorio.")
11
 
12
- # Configura el cliente de la API de Claude (Anthropic)
13
- client = anthropic.Anthropic(api_key=api_key)
 
 
 
14
 
 
 
 
 
 
 
 
 
 
 
 
15
  def generate_headlines(number_of_headlines, target_audience, product, temperature):
16
- # Llama a la API de Claude para generar titulares
17
- message = client.messages.create(
18
- model="claude-3-5-sonnet-20240620",
19
- max_tokens=1000, # Configurado a 1000 tokens
20
- temperature=temperature, # Usa el valor del slider aquí
21
- messages=[
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  {
23
  "role": "user",
24
- "content": [
25
- {
26
- "type": "text",
27
- "text": f"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 y escribe en forma de listado para que sea fácil copiar los encabezados, tu tarea es crea {number_of_headlines} titulares llamativos diseñados para {target_audience} con el fin de generar interés en {product}. Cada titular debe ser elaborado para fomentar una acción específica, como hacer una compra, registrarse o descargar. Utiliza una variedad de formatos (preguntas, afirmaciones audaces, hechos intrigantes) para probar diferentes enfoques."
28
- }
29
- ]
30
- }
 
 
 
 
 
 
31
  ]
32
  )
33
- return message.content
34
 
35
- # Configura la interfaz de usuario con Gradio
36
- def gradio_generate_headlines(number_of_headlines, target_audience, product, temperature):
37
- return generate_headlines(number_of_headlines, target_audience, product, temperature)
38
 
39
- ifaces = gr.Interface(
40
- fn=gradio_generate_headlines,
 
41
  inputs=[
42
  gr.Dropdown(choices=[str(i) for i in range(1, 11)], label="Número de Titulares", value="5"),
43
  gr.Textbox(label="Público Objetivo", placeholder="Ejemplo: Estudiantes Universitarios"),
44
  gr.Textbox(label="Producto", placeholder="Ejemplo: Curso de Inglés"),
45
  gr.Slider(minimum=0, maximum=1, value=0, step=0.1, label="Creatividad")
46
  ],
47
- outputs=gr.Textbox(label="Titulares Generados", lines=10, placeholder="Los titulares aparecerán aquí..."),
48
  title="Generador de Titulares",
49
- description="Usa el poder de Claude AI para crear titulares atractivos. Ajusta los parámetros para generar titulares que capturen la atención de tu audiencia."
50
  )
51
 
52
  # Lanza la interfaz
53
- ifaces.launch()
 
1
+ from dotenv import load_dotenv
2
+ import streamlit as st
3
+ import os
4
+ import google.generativeai as genai
5
+ import random
6
 
7
+ # Cargar las variables de entorno
8
+ load_dotenv()
9
 
10
+ # Configurar la API de Google
11
+ genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
 
12
 
13
+ # Función para obtener una mención del producto de manera probabilística
14
+ def get_random_product_mention():
15
+ mentions = ["Directa", "Indirecta", "Metafórica"]
16
+ probabilities = [0.34, 0.33, 0.33]
17
+ return random.choices(mentions, probabilities)[0]
18
 
19
+ # Crear la instrucción de mención basada en la opción seleccionada
20
+ def get_mention_instruction(product_mention, product):
21
+ if product_mention == "Directa":
22
+ return f"Introduce directamente el producto '{product}' como la solución clara al problema que enfrenta el lector."
23
+ elif product_mention == "Indirecta":
24
+ return f"Referencia sutilmente el producto '{product}' como una posible solución al problema del lector sin nombrarlo explícitamente."
25
+ elif product_mention == "Metafórica":
26
+ return f"Introduce el producto '{product}' usando una metáfora, conectándolo simbólicamente a la solución que necesita el lector."
27
+ return ""
28
+
29
+ # Función para generar titulares
30
  def generate_headlines(number_of_headlines, target_audience, product, temperature):
31
+ product_mention = get_random_product_mention()
32
+ mention_instruction = get_mention_instruction(product_mention, product)
33
+
34
+ # Crear la configuración del modelo
35
+ generation_config = {
36
+ "temperature": temperature, # Usar el valor del slider aquí
37
+ "top_p": 0.95,
38
+ "top_k": 64,
39
+ "max_output_tokens": 2048,
40
+ "response_mime_type": "text/plain",
41
+ }
42
+
43
+ model = genai.GenerativeModel(
44
+ model_name="gemini-1.5-flash",
45
+ generation_config=generation_config,
46
+ 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."
47
+ )
48
+
49
+ chat_session = model.start_chat(
50
+ history=[
51
  {
52
  "role": "user",
53
+ "parts": [
54
+ 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}. "
55
+ f"Usa la siguiente mención: {mention_instruction}. "
56
+ "Los ganchos deben ser de este tipo: "
57
+ "1. Secretos: 'El secreto detrás de...'; "
58
+ "2. Consejos: 'Consejos para que...'; "
59
+ "3. Historias: 'La historia del...', 'Los misterios de...', 'La leyenda de...'; "
60
+ "4. Deseos: 'Cómo...'; "
61
+ "5. Listas: '10 razones por las que...'; "
62
+ "6. Haciendo una pregunta: '¿Sabías que...'; "
63
+ "7. Curiosidad: '¿Por qué...'."
64
+ ],
65
+ },
66
  ]
67
  )
 
68
 
69
+ response = chat_session.send_message("Genera los titulares") # Enviar mensaje para obtener la respuesta
70
+ return response.text # Regresar la respuesta directamente
 
71
 
72
+ # Configurar la interfaz de usuario con Gradio
73
+ iface = gr.Interface(
74
+ fn=generate_headlines,
75
  inputs=[
76
  gr.Dropdown(choices=[str(i) for i in range(1, 11)], label="Número de Titulares", value="5"),
77
  gr.Textbox(label="Público Objetivo", placeholder="Ejemplo: Estudiantes Universitarios"),
78
  gr.Textbox(label="Producto", placeholder="Ejemplo: Curso de Inglés"),
79
  gr.Slider(minimum=0, maximum=1, value=0, step=0.1, label="Creatividad")
80
  ],
81
+ outputs=gr.Markdown(label="Titulares Generados"),
82
  title="Generador de Titulares",
83
+ 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."
84
  )
85
 
86
  # Lanza la interfaz
87
+ iface.launch()