import gradio as gr from huggingface_hub import InferenceClient # Inicializar el cliente de inferencia client = InferenceClient("Qwen/QwQ-32B-Preview") def respond( message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p, ): # Construir el contexto de mensajes messages = [{"role": "system", "content": system_message}] for user_msg, assistant_msg in history: if user_msg: messages.append({"role": "user", "content": user_msg}) if assistant_msg: messages.append({"role": "assistant", "content": assistant_msg}) messages.append({"role": "user", "content": message}) response = "" # Realizar la llamada al modelo con streaming deshabilitado para capturar toda la respuesta full_response = client.chat_completion( messages, max_tokens=max_tokens, stream=False, # Deshabilitar streaming para capturar toda la respuesta de una vez temperature=temperature, top_p=top_p, ) # Extraer el contenido de la respuesta if full_response and full_response.choices: response = full_response.choices[0].message['content'] return response # Definir los controles adicionales con mayor claridad y rangos adecuados system_message_input = gr.Textbox( value="Responde siempre en español, y el código siempre completo", label="Mensaje del Sistema", lines=2, placeholder="Instrucciones para el modelo...", ) max_tokens_slider = gr.Slider( minimum=512, maximum=8192, # Aumentar el máximo si el modelo lo soporta step=1, value=2048, # Aumentar el valor por defecto para respuestas más largas label="Máximo de Tokens Nuevos", ) temperature_slider = gr.Slider( minimum=0.1, maximum=2.0, # Ajustar el rango para mayor control step=0.1, value=0.7, label="Temperatura", ) top_p_slider = gr.Slider( minimum=0.1, maximum=1.0, step=0.05, value=0.95, label="Top-p (muestreo por núcleo)", ) # Configurar la interfaz de chat con una apariencia mejorada demo = gr.ChatInterface( fn=respond, additional_inputs=[ system_message_input, max_tokens_slider, temperature_slider, top_p_slider, ], title="Interfaz de Chat con QwQ-32B-Preview", description="Interactúa con el modelo QwQ-32B-Preview de Hugging Face. Ajusta los parámetros para personalizar las respuestas.", theme="default", # Puedes cambiar a otros temas como "huggingface", "dark", etc. ) if __name__ == "__main__": demo.launch(share=True) # `share=True` permite compartir la interfaz públicamente