coder_v1 / app.py
whyumesh's picture
Update app.py
ea899f2 verified
import gradio as gr
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
import spaces
# Load model and tokenizer
model_name = "Qwen/Qwen2.5-Coder-1.5B-Instruct"
def load_model():
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto",
low_cpu_mem_usage=True # This requires Accelerate
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
return model, tokenizer
model, tokenizer = load_model()
@spaces.GPU(duration=60)
def fix_code(input_code):
messages = [
{"role": "system", "content": "You are a helpful coding assistant. Please analyze the following code, identify any errors, and provide the corrected version."},
{"role": "user", "content": f"Please fix this code:\n\n{input_code}"}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=1024,
temperature=0.7,
top_p=0.95,
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
return response
iface = gr.Interface(
fn=fix_code,
inputs=gr.Code(
label="Input Code",
language="python",
lines=10
),
outputs=gr.Code(
label="Corrected Code",
language="python",
lines=10
),
title="Code Correction Tool",
description="Enter your code with errors, and the AI will attempt to fix it.",
examples=[
["def fibonacci(n):\n if n = 0:\n return 0\n elif n == 1\n return 1\n else:\n return fibonacci(n-1) + fibonacci(n-2)"],
["for i in range(10)\n print(i"]
]
)
if __name__ == "__main__":
iface.launch()