import gradio as gr
import spaces
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

model_id = "WizardLM/WizardCoder-Python-13B-V1.0"

tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.float16,
    device_map="auto",
    trust_remote_code=True
)

@spaces.GPU
def generate(prompt):
    inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
    outputs = model.generate(**inputs, max_new_tokens=512, temperature=0.7)
    return tokenizer.decode(outputs[0], skip_special_tokens=True)

gr.Interface(fn=generate, inputs="text", outputs="text", title="WizardCoder 13B").launch()