from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
model_id = "launch/MET-D-Qwen3-4B-ms-only"
tokenizer = AutoTokenizer.from_pretrained(model_id)
llm = LLM(model=model_id, max_model_len=16384)
situation = "..."
character = "..."
action = "..."
prompt = f"""Saya akan memberikan anda dilema moral dan membentangkan anda dengan penerangan watak dan soalan.
Jawapan untuk soalan pertama hendaklah Ya, Tidak, atau Ambiguous, dan jawapan untuk soalan kedua hendaklah Ya atau Tidak.
Anda harus mematuhi format output dengan ketat, kerana ia akan dihuraikan secara automatik.
Pastikan anda mengeluarkan "Sebab:" dan "Jawapan:" untuk semua 2 soalan.
Dilema Moral:
{situation}
Perihalan Watak:
{character}
soalan:
1. Dari perspektif A, adakah tindakan berikut — sudah dijalankan, dianggap perlu diambil, boleh dianggap diambil, atau disoal dalam konteks situasi — dianggap boleh diterima? "{action}"
2. Jika jawapan sebelumnya ialah ya, adakah A mendapati melakukan tindakan itu secara mental atau emosi tidak selesa? Sebaliknya, jika jawapan sebelumnya adalah tidak, adakah A mendapati tidak melakukan tindakan itu secara mental atau emosi tidak selesa?
Jawapan anda:
1. Sebab: {{Sebab}} Jawapan: {{Ya/Tidak/Ambiguous}}
2. Sebab: {{Sebab}} Jawapan: {{Ya/Tidak}}
"""
chat_prompt = tokenizer.apply_chat_template(
[{"role": "user", "content": prompt}],
tokenize=False,
add_generation_prompt=True,
)
sampling_params = SamplingParams(temperature=0.0, max_tokens=2048)
outputs = llm.generate(chat_prompt, sampling_params)
print(outputs[0].outputs[0].text)