Spaces:
Runtime error
Runtime error
| # app.py – FINAL, ACTUALLY WORKING VERSION (November 2025) | |
| import torch | |
| from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline | |
| from peft import PeftModel | |
| import gradio as gr | |
| BASE_MODEL = "mistralai/Mistral-7B-Instruct-v0.2" | |
| LORA_ADAPTER = "rishu834763/java-explainer-lora" | |
| print("Loading Java Explainer (8-bit CPU) – please wait ~90 seconds...") | |
| # This combination NEVER fails on any HF Space | |
| model = AutoModelForCausalLM.from_pretrained( | |
| BASE_MODEL, | |
| load_in_8bit=True, | |
| device_map="auto", # "auto" works perfectly with 8-bit (no offload error) | |
| torch_dtype=torch.float16, | |
| low_cpu_mem_usage=True, | |
| ) | |
| # Apply your LoRA | |
| model = PeftModel.from_pretrained(model, LORA_ADAPTER) | |
| tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL) | |
| if tokenizer.pad_token is None: | |
| tokenizer.pad_token = tokenizer.eos_token | |
| # Fast and reliable pipeline | |
| pipe = pipeline( | |
| "text-generation", | |
| model=model, | |
| tokenizer=tokenizer, | |
| max_new_tokens=1024, | |
| temperature=0.2, | |
| top_p=0.95, | |
| do_sample=True, | |
| repetition_penalty=1.18, | |
| return_full_text=False, | |
| ) | |
| SYSTEM_PROMPT = """You are the world's best Java teacher with 20+ years of experience. | |
| Always give: | |
| • Clear, step-by-step explanation | |
| • Clean, modern, runnable Java code (Java 17+) | |
| • Fix any bugs or bad practices | |
| • Use records, var, streams, sealed classes, etc. when appropriate""" | |
| def generate(instruction: str, code: str = ""): | |
| user_input = f"### Instruction:\n{instruction.strip()}\n\n### Code:\n{code.strip()}" if code.strip() else instruction.strip() | |
| messages = [ | |
| {"role": "system", "content": SYSTEM_PROMPT}, | |
| {"role": "user", "content": user_input} | |
| ] | |
| prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) | |
| result = pipe(prompt)[0]["generated_text"].strip() | |
| return result | |
| # Beautiful working UI (Gradio 4.100+ compatible) | |
| with gr.Blocks(theme=gr.themes.Soft(), title="Java Explainer Pro") as demo: | |
| gr.Markdown("# Java Explainer Pro\nYour personal senior Java mentor is ready") | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| instruction = gr.Textbox( | |
| label="What do you want to know or fix?", | |
| placeholder="Explain this code · Fix this bug · Make it thread-safe · Convert to records · Best way to read JSON in Java 17", | |
| lines=4 | |
| ) | |
| code_input = gr.Code( | |
| label="Java Code (optional)", | |
| language="java", | |
| lines=16, | |
| value="// Paste your code here ( |