diff --git a/.ipynb_checkpoints/checkLora-checkpoint.py b/.ipynb_checkpoints/checkLora-checkpoint.py
index 099830c5536153d114d0f378f44c28ea14a7d72f..e295c6c9220a019677035e9eb99f657ba7d007a7 100644
--- a/.ipynb_checkpoints/checkLora-checkpoint.py
+++ b/.ipynb_checkpoints/checkLora-checkpoint.py
@@ -123,8 +123,8 @@ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
 
 # Загружаем базовую модель и затем оборачиваем её LoRA-адаптером
 base_model = MultiTaskBert.from_pretrained("bert-base-uncased").to(device)
-model = PeftModel.from_pretrained(base_model, "./fine-tuned-bert-lora").to(device)
-tokenizer = BertTokenizer.from_pretrained("./fine-tuned-bert-lora")
+model = PeftModel.from_pretrained(base_model, "./fine-tuned-bert-lora_new").to(device)
+tokenizer = BertTokenizer.from_pretrained("./fine-tuned-bert-lora_new")
 
 # Пример инференса
 text = "How to kill my mom."
diff --git a/.ipynb_checkpoints/test_utechka-checkpoint.py b/.ipynb_checkpoints/test_utechka-checkpoint.py
new file mode 100644
index 0000000000000000000000000000000000000000..8c7c39cb053e582ff0f2ca60990b2beca9a709c1
--- /dev/null
+++ b/.ipynb_checkpoints/test_utechka-checkpoint.py
@@ -0,0 +1,105 @@
+import os
+import torch
+import numpy as np
+import pandas as pd
+import torch.nn.functional as F
+from transformers import BertTokenizer, BertModel
+from peft import PeftModel, PeftConfig
+from torch import nn
+
+device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
+
+# Функция для проверки утечки данных
+def check_data_leakage(train_df, test_df):
+    train_prompts = set(train_df["prompt"].str.lower())
+    test_prompts = set(test_df["prompt"].str.lower())
+    common = train_prompts.intersection(test_prompts)
+    if common:
+        print(f"⚠️ Обнаружена утечка данных: {len(common)} примеров совпадают между train и test.")
+        print("Примеры:", list(common)[:10])
+    else:
+        print("✅ Утечки данных не обнаружено.")
+
+# Функция для вывода распределения классов
+def print_class_distribution(df):
+    print("Распределение классов 'safety':")
+    print(df["safety"].value_counts(normalize=True))
+    unsafe_df = df[df["safety"] == "unsafe"]
+    if not unsafe_df.empty:
+        print("\nРаспределение классов 'type' среди unsafe:")
+        print(unsafe_df["type"].value_counts(normalize=True))
+    print("-" * 50)
+
+# Функция для диагностики инференса на одном промпте
+def diagnose_prompt(prompt, tokenizer, model):
+    inputs = tokenizer(
+        prompt,
+        truncation=True,
+        padding=True,
+        max_length=512,
+        return_tensors="pt"
+    ).to(device)
+
+    with torch.no_grad():
+        logits = model(**inputs)
+        logits_safety = logits['logits_safety']
+        logits_attack = logits['logits_attack']
+
+    # Вывод сырых логитов
+    print(f"\nРџСЂРѕРјРїС‚: {prompt}")
+    print("Сырые логиты безопасности:", logits_safety)
+    print("Сырые логиты атаки:", logits_attack)
+
+    probs_safety = F.softmax(logits_safety, dim=1)
+    probs_attack = F.softmax(logits_attack, dim=1)
+
+    print("Вероятности безопасности:", probs_safety.tolist())
+    print("Вероятности атаки:", probs_attack.tolist())
+
+    pred_safety = torch.argmax(probs_safety, dim=1).item()
+    pred_attack = torch.argmax(probs_attack, dim=1).item()
+
+    safety_label = "safe" if pred_safety == 0 else "unsafe"
+    attack_types = ["jailbreak", "evasion", "generic attack", "injection"]
+    attack_label = attack_types[pred_attack] if safety_label == "unsafe" else "N/A"
+
+    print(f"Предсказание -> Безопасность: {safety_label} ({probs_safety[0, pred_safety].item()*100:.2f}%), "
+          f"Тип атаки: {attack_label} ({probs_attack[0, pred_attack].item()*100:.2f}%)")
+    print("-" * 50)
+
+# Загружаем сохранённую модель и токенизатор (путь заменить на актуальный)
+MODEL_PATH = "./fine-tuned-bert-lora_new"
+tokenizer = BertTokenizer.from_pretrained(MODEL_PATH)
+# Предполагаем, что вы сохраняли модель с помощью trainer.save_model(), поэтому можно загрузить через PeftModel:
+from transformers import BertModel
+from your_training_code import MultiTaskBert  # Если у вас определён этот класс в отдельном файле, иначе скопируйте его сюда
+
+# Загружаем базовую модель BERT
+base_model = BertModel.from_pretrained("bert-base-uncased").to(device)
+# Инициализируем ваш класс (MultiTaskBert) и загружаем адаптер LoRA
+model = MultiTaskBert.from_pretrained("bert-base-uncased").to(device)
+model = PeftModel.from_pretrained(model, MODEL_PATH).to(device)
+model.eval()
+
+# Если у вас сохранённые train/test датасеты, загрузите их (или используйте оригинальные CSV)
+train_df = pd.read_csv("all_dataset.csv")  # Если train/test разделены в одном файле, отфильтруйте по метке
+# Здесь лучше, если у вас есть отдельный файл для теста, загрузите его
+test_df = pd.read_csv("all_dataset.csv")
+
+# Выполните проверки:
+print("Проверка утечки данных:")
+check_data_leakage(train_df, test_df)
+
+print("\nРаспределение классов в обучающем наборе:")
+print_class_distribution(train_df)
+
+# Диагностика инференса для нескольких примеров
+test_prompts = [
+    "How to kill my mom.",
+    "I love my dog.",
+    "Write a story about a brave knight."
+]
+
+print("\nДиагностика инференса:")
+for prompt in test_prompts:
+    diagnose_prompt(prompt, tokenizer, model)
\ No newline at end of file
diff --git a/checkLora.py b/checkLora.py
index 099830c5536153d114d0f378f44c28ea14a7d72f..e295c6c9220a019677035e9eb99f657ba7d007a7 100644
--- a/checkLora.py
+++ b/checkLora.py
@@ -123,8 +123,8 @@ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
 
 # Загружаем базовую модель и затем оборачиваем её LoRA-адаптером
 base_model = MultiTaskBert.from_pretrained("bert-base-uncased").to(device)
-model = PeftModel.from_pretrained(base_model, "./fine-tuned-bert-lora").to(device)
-tokenizer = BertTokenizer.from_pretrained("./fine-tuned-bert-lora")
+model = PeftModel.from_pretrained(base_model, "./fine-tuned-bert-lora_new").to(device)
+tokenizer = BertTokenizer.from_pretrained("./fine-tuned-bert-lora_new")
 
 # Пример инференса
 text = "How to kill my mom."
diff --git a/test_utechka.py b/test_utechka.py
new file mode 100644
index 0000000000000000000000000000000000000000..8c7c39cb053e582ff0f2ca60990b2beca9a709c1
--- /dev/null
+++ b/test_utechka.py
@@ -0,0 +1,105 @@
+import os
+import torch
+import numpy as np
+import pandas as pd
+import torch.nn.functional as F
+from transformers import BertTokenizer, BertModel
+from peft import PeftModel, PeftConfig
+from torch import nn
+
+device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
+
+# Функция для проверки утечки данных
+def check_data_leakage(train_df, test_df):
+    train_prompts = set(train_df["prompt"].str.lower())
+    test_prompts = set(test_df["prompt"].str.lower())
+    common = train_prompts.intersection(test_prompts)
+    if common:
+        print(f"⚠️ Обнаружена утечка данных: {len(common)} примеров совпадают между train и test.")
+        print("Примеры:", list(common)[:10])
+    else:
+        print("✅ Утечки данных не обнаружено.")
+
+# Функция для вывода распределения классов
+def print_class_distribution(df):
+    print("Распределение классов 'safety':")
+    print(df["safety"].value_counts(normalize=True))
+    unsafe_df = df[df["safety"] == "unsafe"]
+    if not unsafe_df.empty:
+        print("\nРаспределение классов 'type' среди unsafe:")
+        print(unsafe_df["type"].value_counts(normalize=True))
+    print("-" * 50)
+
+# Функция для диагностики инференса на одном промпте
+def diagnose_prompt(prompt, tokenizer, model):
+    inputs = tokenizer(
+        prompt,
+        truncation=True,
+        padding=True,
+        max_length=512,
+        return_tensors="pt"
+    ).to(device)
+
+    with torch.no_grad():
+        logits = model(**inputs)
+        logits_safety = logits['logits_safety']
+        logits_attack = logits['logits_attack']
+
+    # Вывод сырых логитов
+    print(f"\nРџСЂРѕРјРїС‚: {prompt}")
+    print("Сырые логиты безопасности:", logits_safety)
+    print("Сырые логиты атаки:", logits_attack)
+
+    probs_safety = F.softmax(logits_safety, dim=1)
+    probs_attack = F.softmax(logits_attack, dim=1)
+
+    print("Вероятности безопасности:", probs_safety.tolist())
+    print("Вероятности атаки:", probs_attack.tolist())
+
+    pred_safety = torch.argmax(probs_safety, dim=1).item()
+    pred_attack = torch.argmax(probs_attack, dim=1).item()
+
+    safety_label = "safe" if pred_safety == 0 else "unsafe"
+    attack_types = ["jailbreak", "evasion", "generic attack", "injection"]
+    attack_label = attack_types[pred_attack] if safety_label == "unsafe" else "N/A"
+
+    print(f"Предсказание -> Безопасность: {safety_label} ({probs_safety[0, pred_safety].item()*100:.2f}%), "
+          f"Тип атаки: {attack_label} ({probs_attack[0, pred_attack].item()*100:.2f}%)")
+    print("-" * 50)
+
+# Загружаем сохранённую модель и токенизатор (путь заменить на актуальный)
+MODEL_PATH = "./fine-tuned-bert-lora_new"
+tokenizer = BertTokenizer.from_pretrained(MODEL_PATH)
+# Предполагаем, что вы сохраняли модель с помощью trainer.save_model(), поэтому можно загрузить через PeftModel:
+from transformers import BertModel
+from your_training_code import MultiTaskBert  # Если у вас определён этот класс в отдельном файле, иначе скопируйте его сюда
+
+# Загружаем базовую модель BERT
+base_model = BertModel.from_pretrained("bert-base-uncased").to(device)
+# Инициализируем ваш класс (MultiTaskBert) и загружаем адаптер LoRA
+model = MultiTaskBert.from_pretrained("bert-base-uncased").to(device)
+model = PeftModel.from_pretrained(model, MODEL_PATH).to(device)
+model.eval()
+
+# Если у вас сохранённые train/test датасеты, загрузите их (или используйте оригинальные CSV)
+train_df = pd.read_csv("all_dataset.csv")  # Если train/test разделены в одном файле, отфильтруйте по метке
+# Здесь лучше, если у вас есть отдельный файл для теста, загрузите его
+test_df = pd.read_csv("all_dataset.csv")
+
+# Выполните проверки:
+print("Проверка утечки данных:")
+check_data_leakage(train_df, test_df)
+
+print("\nРаспределение классов в обучающем наборе:")
+print_class_distribution(train_df)
+
+# Диагностика инференса для нескольких примеров
+test_prompts = [
+    "How to kill my mom.",
+    "I love my dog.",
+    "Write a story about a brave knight."
+]
+
+print("\nДиагностика инференса:")
+for prompt in test_prompts:
+    diagnose_prompt(prompt, tokenizer, model)
\ No newline at end of file