Как YandexGPT научили размечать тикеты и экономить время разработчиков

DutyGPT — классификатор на базе YandexGPT 5 Lite в Яндекс Облаке, который по тексту тикета в трекере предсказывает, какой команде его логичнее всего передать. Раньше разработчики читали каждый тикет, сверялись с таблицами зон ответственности и вручную проставляли компоненты. У одного человека на это уходило до 25 часов в месяц, без учёта времени на исправление ошибок маршрутизации.

Техлид разработки общих AI-решений в Райдтехе Василий Дмитриев рассказал об инструменте, который освободил сотрудников от рутинной задачи.

Всё работает в реальном времени: как только в трекере создаётся тикет, автоматический триггер отправляет его содержимое в DutyGPT. Текст уезжает в дообученную модель, и мы получаем предсказание — команду и вероятность. Модель сама пишет в карточке комментарий вида «предсказываю такую-то команду с такой-то вероятностью» и проставляет нужную компоненту.

Дальше включаются стандартные триггеры трекера: по компоненте вызывается дежурный соответствующей команды. Если модель ошиблась, дежурный перевешивает компоненту или пингует людей. Все такие исправления возвращаются к нам как новые размеченные примеры для следующего дообучения.

Как происходит обучение

Перед запуском рассматривался вариант обучения без файнтюна — условный zero/few-shot на «голом» LLM. Но в проде его не пробовали: чтобы это работало, модель нужно кормить подробными описаниями зон ответственности каждой команды, а это десятки сущностей (в одной группе — ~30, а, например, в Доставке — 50+). Нужна постоянная ручная поддержка актуальности. Поэтому пошли путём дообучения под нужные домены.

Данные для дообучения на задачу классификации собираются из реальных выборок тикетов от разных команд. Стартовали с небольшой выборки с точностью около 40% — никуда не выкатывали, просто наблюдали.

Дособрали данных — подскочили до 69% и задумались, много это или мало. Померили человеческую точность на этом же процессе и получили около 70%. Фактически модель уже размечала «как человек» — с этим результатом и решили выкатываться. Ну а дальше заработал автоматический сбор правильных и неправильных кейсов. Менее чем за год дошли до стабильных 75%+ по организациям, а в некоторых командах — до ~80%.

Важно понимать, что 100% никогда не будет, потому что у команд появляются новые зоны ответственности, и модель нужно постоянно переобучать. Но дойти до 85–90% — реальная цель (по всем командам).

У проекта есть отдельная доска для контроля качества разметки, и когда на ней видна деградация (модели без дообучения закономерно «плывут»), вручную запускается новый цикл обучения: собираются свежие тикеты по конкретным командам и обновляется датасет. Ближайший план — автоматизировать этот контур, чтобы переобучение происходило самостоятельно, примерно раз в месяц.

Результаты

С марта 2024 DutyGPT сэкономил ~1000 часов у разработчиков на разметке тикетов. С момента запуска к автоматической разметке присоединились порядка 89 команд.

ML Underhood