Поиск

Релиз

Содержание

Нужна помощь?

Не нашли ответ на свой вопрос? Свяжитесь с нашей службой поддержки.

Обратиться в поддержку

Автоматическая классификация заявок

Обновлено: 25 Июль 2026 Версия: 2.2

Автоматическая классификация заявок

Модуль автоматически определяет тип и категорию заявки по тексту (заголовок, тема, сообщение) с помощью машинного обучения. Обучение выполняется локально на данных вашей системы — перенос моделей между серверами с разными справочниками не требуется.

Принцип работы

  1. При создании заявки (если функция включена) система анализирует текст и пытается назначить тип и категорию.
  2. Автоклассификация выполняется только если модель помечена как готовая (Ready For Prediction в системной админке).
  3. Если модель ещё не обучена или не прошла проверки качества — поля не заполняются автоматически (кроме типа по умолчанию из справочника).
  4. Категория предсказывается после типа и только среди категорий, которые встречались вместе с этим типом в обучающих данных.
  5. При низкой уверенности модели тип или категория не назначаются — лучше пустое поле, чем ошибочная классификация.

Холодный старт (новая или «чистая» система)

Типичный сценарий после включения функции:

  1. Включите USE_INTELLIGENT_CLASSIFICATION = True в системных настройках.
  2. Первое время заявки не получают автоматический тип/категорию от ML (модели ещё нет).
  3. Исполнители вручную выставляют тип и категорию при обработке и закрывают заявки.
  4. По расписанию (или вручную) система обучает модель на закрытых заявках с ручной разметкой.
  5. Когда модель накопит достаточно примеров и качество достигнет порогов — автоклассификация включается сама.

Важно: при обновлении с версии, где использовались старые модели (обученные на UUID справочников), существующие модели не используются для предсказания до переобучения на локальных данных.


Настройки в пользовательской админке

Все параметры находятся в разделе «Настройки» → «Системные настройки» (/settings/), секция «Основные настройки». Подробное описание каждой настройки — в документе Системные настройки.

Основные переключатели

Настройка По умолчанию Назначение
USE_INTELLIGENT_CLASSIFICATION False Включение автоклассификации
SKIP_CLASSIFICATION_FOR_MANUAL_REQUESTS True Не классифицировать заявки, созданные вручную (только почта и бот)
CLASSIFIER_AUTO_TRAIN_ENABLED True Еженедельное автоматическое обучение/дообучение

Пороги предсказания

Настройка По умолчанию Назначение
CLASSIFIER_MIN_CONFIDENCE_TYPE 0.65 Минимальная уверенность для автоматического типа
CLASSIFIER_MIN_CONFIDENCE_CATEGORY 0.55 Минимальная уверенность для автоматической категории
CLASSIFIER_ALLOW_UUID_FALLBACK False Fallback при несовпадении справочников (не рекомендуется)

Пороги обучения и готовности модели

Настройка По умолчанию Назначение
CLASSIFIER_MIN_SAMPLES_TO_TRAIN 100 Минимум закрытых заявок для первого обучения
CLASSIFIER_MIN_SAMPLES_TO_PREDICT 200 Минимум обучающих примеров в модели для включения автопредсказания
CLASSIFIER_MIN_ACCURACY_TO_PREDICT 0.70 Минимальная accuracy на тестовой выборке
CLASSIFIER_MIN_SAMPLES_PER_CLASS 10 Минимум примеров на каждый тип/категорию
CLASSIFIER_TRAIN_ONLY_MANUAL_LABELS True Обучаться только на заявках с ручной разметкой типа/категории
CLASSIFIER_BOOTSTRAP_LOOKBACK_DAYS 90 Окно в днях для первичного обучения (закрытые заявки)

Еженедельное обучение по расписанию

Задача Celery retrain-classifiers-weekly запускается каждое воскресенье в 4:00 (настраивается в config/settings.py, создаётся автоматически при установке).

Что делает задача:

  1. Собирает закрытые заявки за последние 7 дней с установленными типом и категорией (с учётом фильтра «только ручная разметка», если он включён).
  2. Если модели ещё нет и накопилось достаточно примеров — выполняет первичное обучение (за последние 90 дней или шире).
  3. Если модель уже есть — дообучает её на новых данных; при ошибке дообучения выполняет полное переобучение.
  4. Пересчитывает флаг готовности модели (is_ready_for_prediction).
  5. Сбрасывает кеш классификатора в работающих процессах.

Требования:

  • Запущены Celery worker и Celery Beat.
  • Настройка CLASSIFIER_AUTO_TRAIN_ENABLED = True.
  • Доступ сервера к интернету при первом обучении (для загрузки модели эмбеддингов cointegrated/rubert-tiny2, ~50–100 МБ).

Отключить автоматическое обучение можно через CLASSIFIER_AUTO_TRAIN_ENABLED = False и обучать модели только вручную (см. ниже).


Управление моделями в системной админке Django

Путь: /admin/ServicedeskRequest classifiers

В списке моделей отображаются:

  • тип классификатора (тип / категория);
  • версия, метрики (accuracy, количество примеров);
  • Is ready for prediction — модель допускается к автоклассификации;
  • Embedding model — использованная модель эмбеддингов (cointegrated/rubert-tiny2);
  • дата обучения.

Рекомендации:

  • Для автоклассификации должна быть активна (Is active) одна модель каждого типа с флагом Ready For Prediction = True.
  • Старые модели после обновления системы лучше деактивировать и обучить новые локально.
  • В поле Metadata можно посмотреть причины, по которым модель не готова (readiness_reasons).

Ручное обучение (management-команды)

Выполняются на сервере приложения в виртуальном окружении проекта.

Экспорт данных для обучения

source .venv/bin/activate
python manage.py export_requests_for_training training_data.xlsx --only-with-category --status "Закрыто"

Полезные опции:

  • --only-with-category — только заявки с категорией;
  • --status "Закрыто" — фильтр по статусу;
  • --limit N — ограничить количество записей.

Полное обучение с нуля

python manage.py train_request_classifiers training_data.xlsx

Обучает отдельные модели для типа и категории. Метки берутся по имени типа/категории из справочников (не по UUID).

Опции:

  • --type-only / --category-only — обучить только один классификатор;
  • --use-gpu — GPU для генерации эмбеддингов (не обязательно).

Анализ ошибок классификации

python manage.py analyze_classifier_errors --excel-file training_data.xlsx --output analysis.xlsx

Показывает проблемные классы, путающиеся пары и рекомендации по улучшению данных.

Экспорт и импорт моделей (опционально)

Используется для переноса уже переобученных моделей между стендами с одинаковыми названиями типов и категорий:

python manage.py export_classifier_models models.json
python manage.py import_classifier_models models.json --deactivate-existing

На боевой системе с уникальными справочниками рекомендуется локальное обучение, а не импорт моделей с другого сервера.


Рекомендации администратору

  1. Включите USE_INTELLIGENT_CLASSIFICATION после того, как накопится история закрытых заявок с корректной ручной разметкой — или сразу, если готовы подождать несколько недель до первого автоматического назначения.
  2. Не импортируйте старые модели с UUID-метками — они не будут использоваться; лучше дождаться еженедельного обучения или запустить train_request_classifiers вручную.
  3. Следите за флагом Is ready for prediction в админке — пока он False, ML не влияет на заявки.
  4. Периодически запускайте analyze_classifier_errors и добавляйте примеры для проблемных категорий.
  5. Оставьте CLASSIFIER_TRAIN_ONLY_MANUAL_LABELS = True, чтобы модель училась на решениях исполнителей, а не на своих ошибках.
  6. При недостатке данных уменьшите пороги CLASSIFIER_MIN_SAMPLES_* или увеличьте CLASSIFIER_BOOTSTRAP_LOOKBACK_DAYS — только осознанно, это снижает качество.

Связанные документы