iTop AI Assistant: ИИ-помощник для приёма заявок в iTop

iTop AI Assistant: ИИ-помощник для приёма заявок в iTop

Всем привет!

Давно не писал сюда ничего большого, а повод накопился. Последнее время я делаю проект, о котором хочу наконец рассказать: iTop AI Assistant. Это ИИ-слой поверх iTop, который помогает с первым этапом работы с новой заявкой: понять, что вообще хочет пользователь, и собрать недостающие детали до того, как заявку откроет инженер.

Зачем это нужно?

Типичная заявка: «Не печатает принтер». Без модели, без текста ошибки, без понимания, что уже пробовали. Инженер пишет в ответ: какой принтер, что на экране, с какого компьютера печатаете, и ждёт ответа. Пользователь не знает, какие сведения нужны инженеру, а инженер без них не может начать работу. На эту переписку уходит время, в том числе время по SLA.

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

Что он умеет сейчас

Пока реализован один модуль: приём новых заявок. Когда в iTop появляется заявка, ассистент:

  1. если у неё не выбраны услуга и подкатегория, подбирает их по каталогу услуг организации заявителя и записывает в заявку;
  2. если информации не хватает, задаёт в общем журнале один уточняющий вопрос и ждёт ответа;
  3. когда картина ясна, оставляет во внутреннем журнале короткую сводку для инженера и дальше в заявку не вмешивается.

Самое интересное, на мой взгляд, это откуда он знает, чего именно не хватает. Критерии полноты берутся из описания подкатегории услуги в iTop. Написано в описании подкатегории «Hardware incident», что нужны производитель и модель устройства, ОС и точный текст ошибки, значит ассистент будет спрашивать именно это, а не дежурное «опишите проблему подробнее». Получается, что настройка поведения в основном сводится к нормально заполненному каталогу услуг, а это полезно и само по себе.

Вот как это выглядит для пользователя в портале. Заявка «Не печатает принтер» без подробностей, ассистент спрашивает ровно то, что требует подкатегория, пользователь отвечает:

А вот что после ответа видит инженер во внутреннем журнале:

Если заявка с самого начала написана хорошо, вопросов не будет вовсе: ассистент сам подберёт услугу и подкатегорию и сразу оставит сводку. На тестовом стенде такая заявка обрабатывается секунд за десять.

Пара ограничений, которые я считаю принципиальными. Ассистент отступает, как только заявку взял инженер (статус ушёл из «Новый»). Задаёт не больше трёх вопросов на заявку, и это настраивается. А закрывать или переназначать заявки сам не умеет вовсе. Автоматически он делает только то, что безопасно и легко откатить.

Как это устроено

Ассистент работает рядом с iTop, отдельным сервисом. В сам iTop ничего не устанавливается: никаких расширений, только сервисная учётная запись, пара триггеров и вебхуков, которые мастер настройки ассистента может создать сам. iTop шлёт вебхук о новой заявке или новом комментарии, ассистент читает заявку через REST API, думает и пишет обратно от имени своей учётки. Поэтому все его действия видны в истории заявки и подписаны, как у обычного сотрудника.

iTop остаётся единственным источником правды. Ассистент не хранит у себя копий заявок и переписки, а каждый раз читает всё заново. У себя он держит только служебное состояние: сколько вопросов уже задано и закончил ли он с заявкой.

Внутри работает один ИИ-агент с небольшим набором инструментов: посмотреть каталог, записать классификацию, задать вопрос, передать инженеру. Важный момент: все правила (один вопрос за раз, лимит вопросов, остановка после назначения инженера, категория только из каталога) зашиты в код, а не в промпт. Если модель вдруг решит сделать что-то лишнее, её вызов просто отклонят, и заявка не пострадает. Модели бывают очень изобретательны, так что полагаться только на промпт я не стал.

Админка

Для настройки есть веб-интерфейс, в том числе на русском. Первая установка идёт через мастер из четырёх шагов: токены, подключение к iTop, вебхуки и подключение к модели. Каждый шаг проверяет соединение, прежде чем пустить дальше.

Отдельно хочу сказать про журнал запусков. Каждая обработка заявки записывается по шагам: какие инструменты вызвал агент, что получил в ответ, что решил, сколько ушло токенов и времени. Если ассистент сделал что-то странное, можно открыть запуск и посмотреть, почему так вышло.

Ещё есть холостой режим, с которого я советую начинать. Ассистент обрабатывает настоящие заявки как в бою, но ничего не пишет в iTop: вопросы и сводки, которые он отправил бы, видны только в журнале запусков. Можно спокойно посмотреть, как он работает на вашей очереди, поправить описания подкатегорий и промпты и только потом включать по-настоящему.

Промпты, кстати, тоже правятся прямо из админки, и исходный вариант всегда можно вернуть.

Какая нужна модель и сколько это стоит?

Подойдёт любая модель, которая нормально умеет вызывать инструменты (tool calling): OpenAI, Gemini, Ollama или любой OpenAI-совместимый endpoint, включая модель на своём железе. На облако в архитектуре ничего не завязано. При подключении мастер проверяет не только то, что модель отвечает, но и то, что она умеет вызывать инструменты.

Теперь про деньги за токены. Я посмотрел расход на тестовом стенде. Заявка с уже выбранной подкатегорией обходится примерно в 4 тыс. входящих и 1,5 тыс. исходящих токенов за весь диалог: вопрос, ответ, сводка. Заявка без классификации дороже, потому что агенту приходится листать каталог: до 10–12 тыс. входящих и 3–4 тыс. исходящих. Для оценки возьмём с запасом 20 тыс. входящих и 5 тыс. исходящих на заявку, ведь реальный каталог услуг обычно больше демонстрационного.

Цены на конец октября 2026 года через RouterAI (агрегатор с оплатой в рублях):

Модель Вход / выход за 1 млн токенов Одна заявка 1000 заявок
DeepSeek V4 Flash 11 ₽ / 17 ₽ ~0,3 ₽ ~300 ₽
Qwen3.8 27B от 2 ₽ / 52 ₽ до 103 ₽ / 335 ₽, зависит от провайдера 0,3–3,7 ₽ 300–3700 ₽

Мой тестовый стенд работает как раз на Qwen3.8 27B, все скриншоты выше сделаны на нём. А 27B-модель при желании можно поднять и на своей видеокарте, тогда заявки вообще никуда наружу не уходят.

Что дальше?

В планах консоль для инженера прямо в интерфейсе iTop, поиск закономерностей по заявкам и помощь с базой знаний. Но сейчас мне важнее не добавлять новое, а обкатать то, что уже есть, на живых заявках.

Ссылки:

Буду рад вопросам и критике в комментариях.