Реализация AI-классификации намерений (Intent Detection) для чат-бота

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Реализация AI-классификации намерений (Intent Detection) для чат-бота
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1240
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1167
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    867
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1084
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    563
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    829

Реализация AI-классификации намерений (Intent Detection) для чат-бота

Intent Detection — определение намерения пользователя по его сообщению. «Хочу заказать пиццу», «статус моего заказа», «как вернуть деньги» — три разных интента, каждый требует разного обработчика.

Проектирование таксономии интентов

Правило: каждый интент — одно конкретное намерение с чётким обработчиком. Типичные ошибки:

  • Слишком широкий интент: help — что делать с ним?
  • Дублирование: order_status и check_my_order — один интент
  • Нечёткие границы: complaint vs negative_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 раз в неделю: какие интенты путаются между собой → дополнительные обучающие примеры или переработка границ классов.