Меня зовут Евгений, и я работаю над инструментами автоматизации для поддержки Yandex Cloud. Моя главная цель проста — избавить людей от рутины. Если задачу можно легко решить с помощью LLM, то инженеры освобождаются для более творческих и нетривиальных задач, а пользователи получают результат со стабильным качеством.
В этой статье хочу поделиться несколькими инструментами, которые опираются на большую языковую модель Яндекса и помогают нашим коллегам упрощать шаблонные операции и сохранять высокий SLA.
Суммаризация чатов
Итак, представьте: специалист часами ведёт вдумчивую переписку с пользователем в чате поддержки, пытаясь выяснить детали проблемы и решить её. А после становится ясно, что нужно копать глубже или подключать другую команду, — инженер эскалирует задачу. Вот тут возникает проблема: следующему специалисту нужно прочитать всю переписку из чата, чтобы понять, что тут вообще происходит и что делать.
Ещё в самом начале этого пути мы создали скрипт‑раннер, который раз в несколько минут пробегает всю очередь тикетов, заведённых из чатов, берёт тело каждого тикета и обращается к YandexGPT. После обработки краткое изложение всего разговора (summary) вставляется первым комментарием в тикет.
По отзывам инженеров, инструмент сильно помог сократить время, необходимое на анализ ситуации. А нам после первого успешного опыта захотелось и дальше развивать это направление автоматизации (к тому же количество токенов в новых моделях увеличивалось, и мы могли обрабатывать всё более длинные тексты).
Умный поиск в базе знаний с использованием RAG API
Retrieval‑Augmented Generation (RAG) — это технология, которая дословно переводится как «генерация, улучшенная поиском». Она сочетает поиск релевантной информации в хранилищах данных и генерацию текста с помощью языковых моделей для создания более точных и информативных ответов.
Мы создали браузерное расширение, которое взаимодействует с RAG API. Этот инструмент работает как умный ассистент: помогает быстро понять проблему, сформулировать несколько вопросов и мгновенно найти в базе знаний всё, что может быть связано с этой проблемой.
Решение работает так:
-
Когда инженер техподдержки открывает новый тикет, расширение отправляет его текст в RAG API.
-
API использует YandexGPT для генерации нескольких синонимичных вопросов на основе текста тикета. Так можно расширить область поиска и найти более релевантную информацию.
-
API проводит векторный поиск (similarity search) по этим вопросам в индексе с векторизованной базой знаний.
-
В результате саппорт получает ссылки на самые релевантные записи из базы знаний.
-
Найденные записи базы знаний обогащают контекст запроса к модели. Это позволяет предложить инженеру готовый сгенерированный ответ: если он понравился, можно забрать его к себе в буфер обмена, или сгенерировать ещё раз, если не понравился.
Суммаризация и определение топ-контрибьютора в решённых запросах (Small RCA)
В нашей техподдержке есть группа качества, которая оценивает соблюдение SLA по выборке запросов и анализирует удовлетворённость пользователей по итогам. Но бывают тикеты, в которых накопилось столько комментариев, что даже опытному инженеру, аналитику или менеджеру нужно потратить немало времени, чтобы понять, что там вообще происходило, как решалась проблема, к чему в итоге пришли. В этом случае бывает нужен сокращённый RCA — Root Cause Analysis, или анализ первопричин.
Мы разработали скрипт‑раннер, который обходит тикеты в статусе «Закрыт», и забирает из них всю ключевую информацию и комментарии. Весь текст фильтруется, удаляется лишняя метаинформация, остаётся только переписка с пользователем и внутренняя переписка. Всё это форматируется и отправляется в YandexGPT. LLM составляет краткое изложение событий в тикете с указанием топ‑контрибьютора — автора комментария, который предложил лучшее решение проблемы. Это помогает быстро понять, к кому можно обратиться за дополнительной информацией или кого отметить за отличную работу.
В результате мы экономим время работы аналитиков группы качества и менеджеров, которым больше не нужно часами погружаться в историю тикета, а чаще всего достаточно прочитать краткое саммари.
Скоринг эмоциональной нагрузки комментария (NeuroCSAT)
Специалисту техподдержки также бывает важно уловить настроение пользователя и решить проблему проактивно, до того как дело закончится негативной обратной связью.
Инструмент NeuroCSAT помогает выстроить систему скоринга эмоциональной нагрузки и оценить каждый входящий комментарий по трёхбалльной шкале: negative, neutral, positive. В LLM подаются все входящие комментарии пользователя. После этого модель вставляет в тикет комментарий с обоснованием своей оценки, и эту информацию можно использовать для улучшения работы.
Инструмент настроен так, что если «уровень счастья» пользователя падает ниже определенного предела, срабатывает алерт, а группа качества получает уведомление в Telegram. Так мы можем оперативно реагировать на проблему и при необходимости подключать к работе «проактивный десант» из аналитиков группы качества, лидов, опытных инженеров.
Суммаризация тикетов для отчётов об инцидентах (Crit RCA)
Полный анализ первопричин также бывает нужен для устранения неявных системных проблем, которые не видны в толще информации — в этом случае для расследований пригодятся RCA‑отчёты.
Ещё один созданный нами инструмент способен прочитать всю переписку в тикете, понять суть проблемы, выявить её причину и помочь составить подробный отчёт о решении задачи. Для этого робот приходит в тикет с тегом ml_rca_needed
, собирает всю информацию, фильтруя её от «шума», и формирует отчёт в формате RCA.
Как это устроено под капотом: мы применяем технику под названием constrained generation. Как если бы вы попросили писателя написать роман, но только с использованием определённого набора слов и структуры предложений. В нашем случае мы «просим» модель генерировать ответ в строго определённой JSON‑схеме. Для этого используем BNF‑словарь, проверяя каждый выходной токен на соответствие схеме.
Мы отправляем модели промт, который включает первое сообщение пользователя в тикете и всю последующую переписку. Модель анализирует входные данные, после чего выдаёт структурированный JSON, который содержит все ключевые аспекты инцидента: что произошло, root cause, влияние на сервис, как проблема была решена. Пользуясь таким саммари, мы быстрее можем сформулировать root cause analysis для клиента и предложить шаги по предотвращению повторения проблемы.
После получения JSON система преобразует его в красивый и читабельный Markdown‑отчёт. Этот отчёт также можно предоставить менеджерам, чтобы показать, как отработал тот или иной сервис в конкретном случае.
В этой статье я намеренно оставил за кадром такие моменты, как сравнение YandexGPT c другими опенсорс‑моделями и подробности про технологический стек этих проектов, а сконцентрировался на типовых сценариях техподдержки. Хотелось наглядно показать, где коллеги уже могут применять LLM, и тем самым делать счастливее и инженеров, и их пользователей!
Автор: EvgenyDA