from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
base = AutoModelForCausalLM.from_pretrained(
"unsloth/Qwen3-8B", dtype=torch.bfloat16, device_map="cuda"
)
model = PeftModel.from_pretrained(base, "steven0226/Qwen3-8B-DRCD-zhTW-QA-LoRA")
tokenizer = AutoTokenizer.from_pretrained("steven0226/Qwen3-8B-DRCD-zhTW-QA-LoRA")
messages = [
{"role": "system", "content": '你是精確的閱讀理解助手。根據「文章」回答「問題」:\n- 答案必須是文章中的連續原文片段,一字不改\n- 若文章中找不到答案,answer 填空字串、answerable 填 false\n- 只輸出 JSON:{"answer": "...", "answerable": true|false}'},
{"role": "user", "content": "文章:...\n\n問題:..."},
]
prompt = tokenizer.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True, enable_thinking=False
)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=128, do_sample=False)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))