Spaces:
Sleeping
Sleeping
import warnings | |
from transformers import AutoModelForCausalLM, AutoTokenizer | |
import gradio as gr | |
# Ignore specific warnings | |
warnings.filterwarnings("ignore", category=FutureWarning, module="transformers.tokenization_utils_base") | |
# Load model and tokenizer | |
model_name = "EleutherAI/gpt-neo-1.3B" # Use a lightweight model | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForCausalLM.from_pretrained(model_name) | |
# Function to generate text | |
def generate_text(prompt, max_length=100): | |
inputs = tokenizer(prompt, return_tensors="pt") | |
outputs = model.generate(inputs.input_ids, max_length=max_length, do_sample=True, top_p=0.95, temperature=0.7) | |
text = tokenizer.decode(outputs[0], skip_special_tokens=True, clean_up_tokenization_spaces=True) | |
return text | |
# Function to generate situations and copy according to user selections | |
def generate_situations_and_copys(stage, product, situation): | |
prompt = f""" | |
Estás creando una campaña publicitaria para la etapa {stage} del funnel de marketing. El producto es: {product}. | |
La situación cotidiana es: {situation}. Integra el concepto de marca "Tú eliges" en el copy. | |
Genera 5 opciones de copy (titular y bajada): | |
""" | |
return generate_text(prompt) | |
# Gradio Interface | |
def main(stage, product, situation): | |
generated_copys = generate_situations_and_copys(stage, product, situation) | |
return generated_copys | |
# Dropdown options for Gradio | |
stages = ["Upper", "Middle", "Lower"] | |
products = { | |
"Upper": ["Convierte tu teléfono en un POS", "Más de 700 plantillas web con Wix"], | |
"Middle": ["Elige el modelo de dispositivo POS", "Entrega express en Lima"], | |
"Lower": ["Servicios de cobro inmediato", "Cargas Ilimitadas de productos a Wix"] | |
} | |
situations = { | |
"Upper": [ | |
"No elegiste dónde naciste, pero sí cómo gestionar tus ventas.", | |
"No pudiste elegir el nombre que te pusieron, pero sí puedes elegir que tu teléfono sea tu POS." | |
], | |
"Middle": [ | |
"No elegiste todas las decisiones difíciles, pero sí puedes elegir la herramienta perfecta para cada transacción.", | |
"No puedes elegir todas las circunstancias, pero sí el modelo de POS adecuado para tu negocio." | |
], | |
"Lower": [ | |
"No elegiste que el cliente pagara tarde, pero sí cómo cobrar rápido.", | |
"No puedes elegir el ritmo de las ventas, pero sí cómo acelerar los cobros." | |
] | |
} | |
def update_products(stage): | |
return gr.Dropdown.update(choices=products[stage]) | |
def update_situations(stage): | |
return gr.Dropdown.update(choices=situations[stage]) | |
# Gradio App Interface | |
with gr.Blocks() as demo: | |
gr.Markdown("# Herramienta de Generación de Copys Publicitarios") | |
with gr.Row(): | |
stage_input = gr.Dropdown(choices=stages, label="Etapa del Funnel", interactive=True) | |
product_input = gr.Dropdown(choices=[], label="Producto", interactive=True) | |
situation_input = gr.Dropdown(choices=[], label="Situación", interactive=True) | |
stage_input.change(fn=update_products, inputs=stage_input, outputs=product_input) | |
stage_input.change(fn=update_situations, inputs=stage_input, outputs=situation_input) | |
generate_button = gr.Button("Generar Copys") | |
output_text = gr.Textbox(label="Copys Generados") | |
generate_button.click(main, inputs=[stage_input, product_input, situation_input], outputs=output_text) | |
# Optional Custom Prompt Section | |
custom_prompt_input = gr.Textbox(label="Ingresa un prompt para personalizar el copy", value="") | |
generate_custom_button = gr.Button("Generar Copys Personalizados") | |
custom_output_text = gr.Textbox(label="Copys Personalizados") | |
generate_custom_button.click(fn=generate_text, inputs=custom_prompt_input, outputs=custom_output_text) | |
demo.launch() | |