Views
No views yet
delta_head: Predicts 2D continuous values for narrative state changeflag_head: Predicts 3 or more binary flags for game logic triggers1<SYS>
2NPC_ID=...
3TAGS:
4 location=...
5 quest_stage=...
6 relationship=...
7 trust=...
8 npc_mood=...
9 player_reputation=...
10 style=...
11REQUIRE:
12 ...
13FORMAT:
14 <RESPONSE>...</RESPONSE>
15 <DELTA ...>
16 <FLAG ...>
17</SYS>
18<CTX>
19player: ...
20npc: ...
21</CTX>
22<PLAYER>...
23<NPC>1from transformers import AutoTokenizer, AutoModelForCausalLM
2from peft import PeftModel
3import torch.nn as nn
4
5BASE_MODEL = "Qwen/Qwen2.5-3B-Instruct"
6ADAPTER_PATH = "minjae/npc_LoRA"
7
8tokenizer = AutoTokenizer.from_pretrained(ADAPTER_PATH, use_fast=True)
9model = AutoModelForCausalLM.from_pretrained(BASE_MODEL, device_map="auto", trust_remote_code=True)
10model = PeftModel.from_pretrained(model, ADAPTER_PATH)
11
12# Add heads
13hidden_size = model.config.hidden_size
14model.delta_head = nn.Linear(hidden_size, 2).to(model.device)
15model.flag_head = nn.Linear(hidden_size, 3).to(model.device)
16
17prompt = "<SYS>...<CTX>...<PLAYER>...<NPC>"
18inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
19
20with torch.no_grad():
21 outputs = model(**inputs, output_hidden_states=True)
22 gen_ids = model.generate(**inputs, max_new_tokens=100)
23 generated_text = tokenizer.decode(gen_ids[0], skip_special_tokens=True)
24
25 last_hidden = outputs.hidden_states[-1][:, -1, :]
26 delta = model.delta_head(last_hidden)
27 flag = model.flag_head(last_hidden)
28
29print("Response:", generated_text)
30print("Delta:", delta)
31print("Flags:", torch.sigmoid(flag))npc_LoRA/
├── lora-output-jason-mom-head/ # LoRA adapter files
├── README.md