from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import torch, json
BASE = "Qwen/Qwen3-4B"; ADAPTER = "Cochon123/qwen3-4b-scrabble"
tok = AutoTokenizer.from_pretrained(ADAPTER)
model = AutoModelForCausalLM.from_pretrained(BASE, torch_dtype=torch.bfloat16,
device_map="cuda")
model = PeftModel.from_pretrained(model, ADAPTER).eval()
board = ["."*15]*15
board[7] = ".......CAT......."
rack = "AEGHOUV"
msgs = [{"role":"system","content":"Pick the highest-scoring legal Scrabble move..."},
{"role":"user","content":json.dumps({"rack":rack,"board":board})}]
text = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True,
enable_thinking=False)
out = model.generate(**tok(text, return_tensors="pt").to("cuda"),
max_new_tokens=120, do_sample=False)
print(tok.decode(out[0][tok(text, return_tensors="pt")["input_ids"].shape[1]:],
skip_special_tokens=True))