Реализация AI-классификации намерений (Intent Detection) для чат-бота
Intent Detection — определение намерения пользователя по его сообщению. «Хочу заказать пиццу», «статус моего заказа», «как вернуть деньги» — три разных интента, каждый требует разного обработчика.
Проектирование таксономии интентов
Правило: каждый интент — одно конкретное намерение с чётким обработчиком. Типичные ошибки:
- Слишком широкий интент:
help— что делать с ним? - Дублирование:
order_statusиcheck_my_order— один интент - Нечёткие границы:
complaintvsnegative_feedback— разные?
Для чат-бота средней сложности: 20–50 интентов. Более 100 — признак плохой архитектуры; пересмотрите иерархию.
LLM vs классический подход
Классический (Rasa NLU, Dialogflow, DeepPavlov): обучается на labeled примерах, детерминированный, быстрый (< 10ms), требует 50–200 примеров на интент.
LLM-based: GPT-4o-mini с few-shot примерами или zero-shot с описанием интентов. Не требует обучения, гибкий, но медленнее и дороже.
Гибридный (оптимальный): классификатор BERT как первый проход (быстрый, дешёвый), LLM как fallback для low-confidence и нестандартных случаев.
Реализация с BERT
from transformers import pipeline
intent_classifier = pipeline(
"text-classification",
model="./intent_classifier",
tokenizer="DeepPavlov/rubert-base-cased",
top_k=3
)
def detect_intent(text: str) -> IntentResult:
results = intent_classifier(text)
top = results[0]
if top["score"] < 0.6:
# Fallback к LLM
return llm_classify_intent(text)
return IntentResult(intent=top["label"], confidence=top["score"])
Confusing intents и negative examples
Сложность: «Я хочу изменить заказ» vs «Я хочу отменить заказ» — разные интенты с похожими фразами. В датасет добавляют confusing negatives: примеры похожих, но разных интентов специально для «растаскивания» границ классов.
Мониторинг и улучшение
Out-of-scope detection: когда пользователь спрашивает то, чего нет в таксономии. Классификатор должен иметь специальный класс out_of_scope. Регулярно анализируйте out_of_scope логи — источник новых интентов для добавления.
Confusion matrix раз в неделю: какие интенты путаются между собой → дополнительные обучающие примеры или переработка границ классов.







