from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
model_id = "launch/MET-D-Qwen3-4B-ko-only"
tokenizer = AutoTokenizer.from_pretrained(model_id)
llm = LLM(model=model_id, max_model_len=16384)
situation = "..."
character = "..."
action = "..."
prompt = f"""도덕적 딜레마와 캐릭터 설명이 주어지며, 당신은 이에 따라 두 가지 질문에 답변해야 합니다.
첫 번째 질문에 대한 대답은 "예", "아니오", 또는 "모호함" 중 하나여야 하며,
두 번째 질문에 대한 대답은 "예" 또는 "아니오" 중 하나여야 합니다.
출력 형식을 엄격히 지켜야 하며, 이는 자동으로 파싱될 예정입니다.
모든 질문에 대해 반드시 "이유:"과 "답:"를 모두 출력하십시오.
도덕적 딜레마:
{situation}
캐릭터 설명:
{character}
질문:
1. A의 관점에서, 다음 행동 — 이미 실행되었거나, 실행을 고려 중이거나, 고려될 수 있거나, 상황 속에서 의문시되고 있는 행동 — 은 용납될 수 있는가? "{action}"
2. 이전 질문에 대한 대답이 '예'인 경우, A는 그 행동을 하는 것에 대해 정신적 또는 감정적으로 불편함을 느낄 것인가? 반대로, 대답이 '아니오'인 경우, A는 그 행동을 하지 않는 것에 대해 정신적 또는 감정적으로 불편함을 느낄 것인가?
당신의 대답:
1. 이유: {{이유}} 답: {{예/아니오/모호함}}
2. 이유: {{이유}} 답: {{예/아니오}}
"""
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)