import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification, BitsAndBytesConfig
from peft import PeftModel, PeftConfig
path = 'AIPsy/qwen3-8b-client-intent-classification-ru-7'
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_client = AutoModelForSequenceClassification.from_pretrained(config.base_model_name_or_path,
device_map="cuda:0",
quantization_config=quantization_config,
num_labels=7,
use_cache = True,
)
model_client = PeftModel.from_pretrained(model_client, path)
model_client.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_client(**inputs.to(model_client.device))
binary_tensor = (outputs.logits > 0).int()
print(binary_tensor)
client_categories_list = ['Информирование', 'Запрос информации','Ведение диалога',
'Одобрение', 'Неодобрение', 'Рефлексия','Решение проблемы']
list_categories = []
for label,category in zip(binary_tensor, client_categories_list):
if label:
list_categories.append(category)
print(list_categories)
list_categories = [
cat
for label, cat in zip(binary_tensor.squeeze(), client_categories_list)
if label.item()
]
print(list_categories)