from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
model_id = "launch/MET-D-Qwen3-4B-zh-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)