import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification, BitsAndBytesConfig
from peft import PeftModel, PeftConfig
path = 'AIPsy/qwen3-8b-therapist-intent-classification-ru-9'
config = PeftConfig.from_pretrained(path)
tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)
tokenizer.pad_token = tokenizer.eos_token
quantization_config = BitsAndBytesConfig(
load_in_4bit = True,
bnb_4bit_quant_type = 'nf4',
bnb_4bit_use_double_quant = True,
bnb_4bit_compute_dtype = torch.bfloat16
)
model_therapist = AutoModelForSequenceClassification.from_pretrained(config.base_model_name_or_path,
device_map="cuda:0",
quantization_config=quantization_config,
num_labels=9,
use_cache = True,
)
model_therapist = PeftModel.from_pretrained(model_therapist, path)
model_therapist.config.pad_token_id = tokenizer.pad_token_id
text = '''Клиент: Я считаю, что эта обида переросла в ненависть. Знаешь, такую прям вот, как раньше, кровная какая-то ненависть. То есть у меня к человеку настолько сильная неприязнь, что я вообще не хочу ничего не знать о нём, не слышать. У меня прям даже уже не боль, а как бы презрение.Я уже ненавижу его. Вот такое осталось состояние.
Терапевт: Хорошо, я тебя поняла. Вот так, давай сначала, знаешь как, определимся, вот у нас с тобой есть почти час, да, вот чего бы ты хотела от сегодняшней встречи? Какой бы вот итог, результат тебя бы удовлетворил? Скажи, пожалуйста.
Клиент: По факту мне хочется завершиться с этим ощущением ненависти, потому что никакого, никакой пользы я этого не вижу для себя, да, никаких у нас с ним не может быть. Я всё хочу оставить и этот вопрос закрыть, потому что, как показывает жизненный опыт на сегодняшний день, все эти эмоции ещё негативно отражаются в настоящих моих отношениях.
'''
inputs = tokenizer(str(text), padding=True, truncation=True, return_tensors="pt")
with torch.no_grad():
outputs = model_therapist(**inputs.to(model_therapist.device))
binary_tensor = (outputs.logits > 0).int()
print(binary_tensor)
list_categories = [
cat
for label, cat in zip(binary_tensor.squeeze(), therapist_categories_list)
if label.item()
]
print(list_categories)