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 = """ [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] """ # Agregar historial de conversación (si existe) for user_prompt, bot_response in history: prompt += f"[INST] {user_prompt} [/INST]" prompt += f" {bot_response} " # 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=""" """, 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)