Spaces:
Sleeping
Sleeping
from huggingface_hub import InferenceClient | |
import gradio as gr | |
# Cliente de Mixtral | |
client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1") | |
# Función para formatear el prompt | |
def format_prompt(message, history): | |
# Nuevo prompt para generar descripciones de inmuebles | |
prompt = """ | |
<s>[INST] # Crea una descripción atractiva de un inmueble en venta o alquiler. | |
# Usa la siguiente estructura en español: | |
# | |
# 1. Introducción emocionante sobre el inmueble y su ubicación, destacando qué lo hace único. | |
# 2. Descripción de las características principales del inmueble (número de habitaciones, baños, etc.). | |
# 3. Características en formato de lista. | |
# 4. Ventajas del entorno en formato de lista (ubicación, seguridad, accesibilidad, etc.). | |
# 5. Conclusión que invite al lector a actuar. | |
# Mantén la descripción breve y persuasiva. No menciones precios ni uses emojis. | |
# Responde siempre en español. | |
# Genera el texto siguiendo la estructura mencionada. | |
# Ejemplo: | |
# ¡Descubre el hogar de tus sueños en VILLA DEL PARQUE! | |
# Este encantador apartamento de 3 habitaciones y 2 baños ofrece la combinación perfecta de comodidad y estilo en una ubicación privilegiada. | |
# Situado en el tranquilo barrio de VILLA DEL PARQUE, disfrutarás de la cercanía a parques, escuelas y centros comerciales, | |
# haciendo de este apartamento una excelente opción para familias y profesionales por igual. | |
# | |
# Características: | |
# - 3 habitaciones amplias y bien iluminadas. | |
# - 2 baños modernos con acabados de alta calidad. | |
# - 1 lugar de garaje seguro para tu vehículo. | |
# - Área total de 70,0 m². | |
# | |
# Ventajas: | |
# - Entorno seguro y apacible. | |
# - Acceso conveniente a transporte público y principales vías. | |
# - Área residencial con un ambiente familiar y amigable. | |
# - Cercanía a servicios y áreas recreativas. | |
# ¡No pierdas la oportunidad de vivir en este maravilloso apartamento en VILLA DEL PARQUE! | |
# | |
# Aplica esta estructura al siguiente mensaje. [/INST]</s> | |
""" | |
# Agregar historial de conversación (si existe) | |
for user_prompt, bot_response in history: | |
prompt += f"[INST] {user_prompt} [/INST]" | |
prompt += f" {bot_response}</s> " | |
# Añadir el nuevo mensaje | |
prompt += f"[INST] {message} [/INST]" | |
return prompt | |
# Función para generar texto | |
def generate(prompt, history, temperature=0.2, max_new_tokens=500, top_p=0.95, repetition_penalty=1.0): | |
temperature = float(temperature) | |
if temperature < 1e-2: | |
temperature = 1e-2 | |
top_p = float(top_p) | |
generate_kwargs = dict( | |
temperature=temperature, | |
max_new_tokens=max_new_tokens, | |
top_p=top_p, | |
repetition_penalty=repetition_penalty, | |
do_sample=True, | |
seed=42, | |
) | |
# Formatear el prompt con historial | |
formatted_prompt = format_prompt(prompt, history) | |
# Generar texto en streaming | |
stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False) | |
output = "" | |
for response in stream: | |
output += response.token.text | |
yield output | |
return output | |
# Configurar Gradio para chatbot | |
mychatbot = gr.Chatbot( | |
avatar_images=["./user.png", "./botm.png"], bubble_full_width=False, show_label=False, show_copy_button=True, likeable=True | |
) | |
# Actualizamos el bloque de descripción y links del menú | |
demo = gr.ChatInterface(fn=generate, | |
chatbot=mychatbot, | |
title="Bot con I.A. para crear DESCRIPCIÓN DE PROPIEDADES", | |
description=""" | |
</style> | |
<div class="menu-container"> | |
<p class="menu-title">Bot con I.A. para crear DESCRIPCIÓN DE PROPIEDADES.</p> | |
<p class="menu-description"> | |
Si desea usar otro BOT de I.A. escoja:<br> | |
<a href='https://magnetimpact-publicaciones-bot.hf.space'>PUBLICACIONES |</a> | |
<a href='https://magnetimpact-descripcion-inmueble.hf.space'> DESCRIPCIÓN DE PROPIEDADES |</a> | |
<a href='https://wa.me/51927929109'> Desarrollado por MAGNET IMPACT - Agencia de Marketing Digital</a> | |
</p> | |
</div> | |
""", | |
retry_btn=None, | |
undo_btn=None | |
) | |
# Lanzar demo | |
demo.queue().launch(show_api=False) | |
# Obtener y mostrar URL | |
url = demo.url | |
print("URL del chatbot: ", url) | |