Roboti's picture
Update app.py
1c45655 verified
import gradio as gr
from huggingface_hub import InferenceClient
# Configuraci贸n del cliente de Hugging Face
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
# Funci贸n para responder con recomendaciones de ventas
def respond(message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p, product_name, num_products, product_type):
# Mensajes base del sistema y del historial
messages = [{"role": "system", "content": system_message}]
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
# Mensaje del usuario actual
messages.append({"role": "user", "content": message})
# Solicitud detallada al modelo
detailed_request = f"""
Por favor, responde siempre en espa帽ol. Genera {num_products} productos complementarios para el siguiente producto: {product_name}.
El producto es de tipo: {product_type}.
Para cada producto complementario, proporciona:
1. El nombre del producto.
2. Un nicho de mercado espec铆fico al que se dirige el producto.
#3. Una idea innovadora para la venta o promoci贸n del producto en l铆nea.
Aseg煤rate de que los nichos y sobre todo micronichos que sean diferentes y las ideas innovadoras y aplicables a estrategias de marketing digital.
"""
messages.append({"role": "user", "content": detailed_request})
# Generaci贸n de respuesta usando el modelo
response = ""
for message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
token = message.choices[0].delta.content
response += token
return response
# Definici贸n de la interfaz de usuario con Gradio
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(value="Eres un asistente amigable que ayuda a generar estrategias de ventas", label="Mensaje del Sistema"),
gr.Slider(minimum=1, maximum=2048, value=2048, step=1, label="Max Nuevos Tokens"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperatura"),
gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (Nucleus Sampling)"),
gr.Textbox(value="", label="Producto para generar estrategias de ventas (Ej. 'Auriculares Bluetooth Premium')"),
gr.Slider(minimum=1, maximum=15, value=8, step=1, label="Cantidad de Productos Complementarios"),
gr.Radio(choices=["F铆sico", "Digital"], value="F铆sico", label="Tipo de Producto")
],
)
if __name__ == "__main__":
demo.launch()