Intent Detection для чат-бота: таксономия, модель, мониторинг

Как внедрить Intent Detection: таксономия, модель и мониторинг

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1006

Как внедрить 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 — один интент.
  • Нечёткие границы: complaint vs negative_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.

Как мы реализуем гибридный классификатор?

  1. Аудит и проектирование таксономии. Анализируем историю диалогов, выделяем частые темы, строим карту намерений. Проводим воркшоп с вашей командой, чтобы определить границы интентов. Результат — документ с иерархией, слотами и правилами fallback.

  2. Разметка датасета. Собираем 100–300 примеров на интент (реальные пользовательские фразы). Добавляем confusion matrix-негативные примеры — фразы из похожих интентов, чтобы «растянуть» границы классов. Пример: «я хочу изменить заказ» vs «я хочу отменить заказ» — разные интенты, но в датасете должны быть оба.

  3. Обучение и калибровка. 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"]) 
  1. Интеграция и деплой. Деплоим модель через 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%. Получите консультацию — мы подберём оптимальный стек под ваш бюджет.