import gradio as gr import torch from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig from huggingface_hub import hf_hub_download REPO = "JustScriptzz/nexus-plus-v2" def load_model(): tokenizer = AutoTokenizer.from_pretrained(REPO, trust_remote_code=True) bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.float16, bnb_4bit_use_double_quant=True, ) model = AutoModelForCausalLM.from_pretrained( REPO, quantization_config=bnb_config, device_map="auto", trust_remote_code=True, ) return model, tokenizer model, tokenizer = load_model() @torch.inference_mode() def chat(message, history): messages = [{"role": "user", "content": message}] text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) inputs = tokenizer(text, return_tensors="pt").to(model.device) outputs = model.generate( **inputs, max_new_tokens=512, temperature=0.7, top_p=0.8, do_sample=True, ) reply = tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True) return reply or "..." demo = gr.ChatInterface( fn=chat, title="Nexus Plus v2", description="Qwen3-4B fine-tuned with QLoRA — smarter, deeper reasoning", theme=gr.themes.Base( primary_hue="purple", neutral_hue="slate", font=gr.themes.GoogleFont("Inter"), ).set( body_background_fill="#0a0a0f", body_text_color="#e1e1e6", block_background_fill="#111118", block_border_color="#1e1e2e", block_label_text_color="#888", input_background_fill="#111118", input_background_fill_focus="#111118", button_primary_background_fill="#7c3aed", button_primary_background_fill_hover="#6d28d9", ), ) demo.launch()