Как внедрить Intent Detection: таксономия, модель и мониторинг
«Хочу заказать пиццу», «статус моего заказа», «как вернуть деньги» — три разных интента. Если чат-бот не отличит их, пользователь уходит. Без качественного intent detection бот не сможет корректно маршрутизировать запрос, обрабатывать ошибки и поддерживать диалог. Неверная классификация намерений приводит к потере клиентов и увеличению нагрузки на операторов. Мы решаем эту задачу, проектируя таксономию, выбирая модель (BERT, LLM или гибридный подход) и внедряя мониторинг.
Результат — точность >90% на целевых интентах, p99 latency <200 мс. Наши решения по intent detection протестированы на реальных нагрузках: до 10 000 запросов в сутки, спад качества не более 3% через полгода. Опыт — 7+ лет в NLP, более 20 проектов, включая ботов для e-commerce, финтеха и техподдержки. Экономия на обработке запросов для клиентов: до 60% снижения затрат на ручную поддержку. Быстрая окупаемость — уже через 2–3 месяца.
Проектирование таксономии интентов
Правило: каждый интент — одно конкретное намерение с чётким обработчиком. Типичные ошибки:
- Слишком широкий интент:
help— неясно, что делать. - Дублирование:
order_statusиcheck_my_order— один интент. - Нечёткие границы:
complaintvsnegative_feedback— часто неочевидны.
Для чат-бота средней сложности: 20–50 интентов. Более 100 — признак плохой архитектуры; пересмотрите иерархию.
Почему гибридный подход лучше классического?
Классический подход (Rasa NLU, Dialogflow) обучается на labeled примерах: детерминированный, быстрый (<10 ms), но требует 50–200 примеров на интент и не адаптируется без переобучения. LLM-based (GPT-4o-mini с few-shot) не требует обучения, гибкий, но медленнее (200–500 ms) и дороже по cost per token. Гибрид — BERT как первый проход (быстрый, дешёвый), LLM как fallback для low-confidence и нестандартных случаев. В наших проектах мы используем именно такую схему: она даёт баланс скорости и покрытия.
| Подход | Скорость (p50) | Обучение | Гибкость | Стоимость инференса |
|---|---|---|---|---|
| BERT fine-tuned | <10 ms | 50–200 примеров/интент | Низкая | <$0.0001/запрос |
| LLM (GPT-4o-mini) | 200–500 ms | zero-shot | Высокая | $0.002/запрос |
| Гибрид (BERT→LLM) | <15 ms (BERT) / fallback | Комбинированный | Средняя | $0.0003/запрос |
Сравнение по ключевым метрикам: гибрид в 10 раз быстрее чистого LLM при сопоставимом покрытии. Подробнее о модели BERT.
Как мы реализуем гибридный классификатор?
-
Аудит и проектирование таксономии. Анализируем историю диалогов, выделяем частые темы, строим карту намерений. Проводим воркшоп с вашей командой, чтобы определить границы интентов. Результат — документ с иерархией, слотами и правилами fallback.
-
Разметка датасета. Собираем 100–300 примеров на интент (реальные пользовательские фразы). Добавляем confusion matrix-негативные примеры — фразы из похожих интентов, чтобы «растянуть» границы классов. Пример: «я хочу изменить заказ» vs «я хочу отменить заказ» — разные интенты, но в датасете должны быть оба.
-
Обучение и калибровка. Fine-tuning BERT (например, DeepPavlov/rubert-base-cased) с кросс-энтропией. Калибруем confidence threshold (обычно 0.6): при меньшей уверенности — отдаём запрос LLM.
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"]) - Интеграция и деплой. Деплоим модель через Triton Inference Server или ONNX Runtime — latency p99 <50 ms на GPU. Настраиваем мониторинг: confusion matrix раз в неделю, логи OOS, пайплайн обратной связи. Гарантируем, что модель не «проседает» на новых данных: если метрика accuracy падает ниже 85% — автоматический триггер на дообучение.
Мониторинг confusion matrix и предотвращение дрейфа
Confusion matrix — главный инструмент для выявления проблемных пар интентов. Если, например, order_status и change_order часто путаются, добавляем в датасет больше confusing negatives. Регулярный анализ OOS-логов помогает обнаружить новые намерения пользователей, которые стоит вынести в отдельные интенты. В результате точность классификации не падает со временем.
| Метрика | Без мониторинга | С мониторингом |
|---|---|---|
| Accuracy через 6 мес. | 82% | 88% |
| Доля OOS-запросов | 15% | 8% |
Deliverables проекта
- Документация таксономии интентов (Google Docs / Confluence)
- Датасет с разметкой (формат JSONL, CSV)
- Обученная модель + Docker-образ для деплоя
- Интеграция с вашим ботом (REST API, gRPC)
- Нагрузочное тестирование (результат: p99 latency <200 ms)
- Мониторинг и алертинг (Grafana dashboards)
- Обучение двух ваших инженеров работе с пайплайном
Сроки и как заказать
Сроки разработки — от 2 до 6 недель в зависимости от сложности таксономии и объёма датасета. Стоимость рассчитывается индивидуально после аудита. Оценим ваш проект бесплатно — свяжитесь с нами для консультации. Закажите разработку intent detection и получите снижение ошибок интерпретации на 30–70%. Получите консультацию — мы подберём оптимальный стек под ваш бюджет.







