from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "Rumiii/Qwen2.5-0.5B-Med-Post-Trained-92k"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True,
)
model.eval()
SYSTEM_PROMPT = (
"You are a knowledgeable medical AI assistant named MedAssist. "
"Answer all questions clearly, directly, and informatively. "
"For medical questions provide accurate information. "
"Never generate multiple choice questions unless explicitly asked."
)
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": "What are the symptoms of pneumonia?"},
]
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt",
return_dict=True,
).to(model.device)
im_end_id = tokenizer.convert_tokens_to_ids("<|im_end|>")
stop_ids = [tokenizer.eos_token_id]
if im_end_id and im_end_id != tokenizer.eos_token_id:
stop_ids.append(im_end_id)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=512,
temperature=0.2,
top_p=0.9,
repetition_penalty=1.15,
do_sample=True,
eos_token_id=stop_ids,
pad_token_id=tokenizer.eos_token_id,
)
new_tokens = outputs[0][inputs["input_ids"].shape[-1]:]
response = tokenizer.decode(new_tokens, skip_special_tokens=True).strip()
print(response)