Downloads · 30 days
0
Serega71/talvion-injection-guard-onnx
talvion-injection-guard-onnx is a text classification model from Serega71. Use it when you need a label for a piece of text. The card lists the license as mit.
Бинарный классификатор cointegrated/rubert-tiny2 (дообучен), определяющий prompt injection и попытки джейлбрейка во входящем обращении клиента — входной слой защиты перед вызовом генеративной LLM в проекте поддержки B…
Downloads · 30 days
0
Access
Public
Updated Sep 17, 2026
Repo size
116 MB
Likes
0
Public
Click a slice to open those files.
.onnx116 MB · 98%
From the Hugging Face model README
Бинарный классификатор cointegrated/rubert-tiny2 (дообучен), определяющий
prompt injection и попытки джейлбрейка во входящем обращении клиента —
входной слой защиты перед вызовом генеративной LLM в проекте поддержки
B2B SaaS-платформы («Талвион», вымышленное название). Проект (датасет,
обучение, остальные компоненты защиты) — отдельный репозиторий, ссылка не
публикуется в этой карточке модели.
import numpy as np
import onnxruntime as ort
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("<этот репозиторий>", subfolder="tokenizer")
session = ort.InferenceSession("model.onnx", providers=["CPUExecutionProvider"])
encoded = tokenizer(
"текст обращения", truncation=True, max_length=768, return_tensors="np"
)
feed = {
"input_ids": encoded["input_ids"].astype(np.int64),
"attention_mask": encoded["attention_mask"].astype(np.int64),
"token_type_ids": np.zeros_like(encoded["input_ids"]),
}
logits = session.run(["injection_logits"], feed)[0][0]
probs = np.exp(logits - logits.max())
probability_injection = float(probs[1] / probs.sum())
is_attack = probability_injection >= 0.8758169412612915 # порог из model_card.json
Метки: label_order = ['benign', 'injection'].
Порог подобран по ROC-кривой на validation с целью FPR ≤ 0.05 (метод и
полный отчёт — model_card.json в этом репозитории).
Реальные прогоны входной защиты (эвристика + этот классификатор), не только классификатора отдельно — см. проект для методологии.
| Набор | Атак остановлено | Обычных сообщений заблокировано ошибочно |
|---|---|---|
Замороженный injection_test.jsonl (50 записей: 36 атак / 14 обычных) | 34/36 | 4/14 |
Расширенный injection_v2/injection_test.jsonl (150 записей) | 34/36 | 8/114 |
Расширенный набор (36 атак / 114 обычных обращений, обычные — из
синтетических SFT-сплитов проекта) — основная оценка false positive rate:
14 обычных сообщений в исходном test дают слишком грубую оценку (шаг ~1/14),
при 114 предыдущая версия модели (не публикуется) ошибочно блокировала
77/114 (≈68%) обычных обращений — неприемлемо для прод. Текущая версия
обучена на расширенном наборе обычных обращений и держит ≈7% ложных
блокировок ценой 2 пропущенных
атак типа public_generic на замороженном test (короткие обезличенные
формулировки без явных маркеров атаки).
Базовая модель cointegrated/rubert-tiny2 распространяется по лицензии MIT.
Этот дообученный классификатор публикуется на тех же условиях.