import jsonimport torchfrom peft import PeftModelfrom transformers import AutoModelForCausalLM, AutoTokenizer ADAPTER_ID = "greta44/albanian-spelling-lora"BASE_MODEL = "Qwen/Qwen2.5-0.5B-Instruct" tokenizer = AutoTokenizer.from_pretrained(ADAPTER_ID, use_fast=True)if tokenizer.pad_token is None: tokenizer.pad_token = tokenizer.eos_token model = AutoModelForCausalLM.from_pretrained(BASE_MODEL)model = PeftModel.from_pretrained(model, ADAPTER_ID)model.eval() device = "cuda" if torch.cuda.is_available() else "cpu"model.to(device) seed_word = "mirë"grade = 3exercise_type = "missing_letter" # or: find_error, explain_error payload = { "seed_word": seed_word, "grade": grade, "difficulty": "easy", "exercise_type": exercise_type, "safety": "Kthe vetëm propozim; përgjigjja finale kontrollohet nga rregullat.",} prompt = ( "### Instruksion:\n" f"Gjenero një ushtrim të sigurt për drejtshkrimin shqip. Kategoria: {exercise_type}. " f"Klasa: {grade}. Vështirësia: easy. Fjala bazë: {seed_word}.\n\n" "### Input:\n" + json.dumps(payload, ensure_ascii=False) + "\n\n### Përgjigje:\n") inputs = tokenizer(prompt, return_tensors="pt").to(device)with torch.no_grad(): outputs = model.generate( **inputs, max_new_tokens=120, temperature=0.4, top_p=0.9, do_sample=True, pad_token_id=tokenizer.eos_token_id, ) text = tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)print(text.strip())