import json
import torch
from peft import PeftModel
from 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 = 3
exercise_type = "missing_letter"
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())