ИИ-агент в каталоге товаров — какую работу он реально взял на себя и где налажал
Мы делаем PIM-систему — программу, в которой магазины и продавцы на маркетплейсах ведут свои товары. Недавно мы дали встроенному ИИ-ассистенту доступ почти ко всем её функциям. Разбираю, что с ним делают клиенты, с цифрами и ошибками.
В 2023 году я писал на vc, как мы встроили GPT для генерации описаний товаров. Функцию активно использовали 20% клиентов. Прошло три года, и теперь картина поменялась. Разница в том, что тогда от нейросети ждали текст, а теперь ей поручают работу. Тогда это была просто приятная функция, а теперь (когда попробовал и привык) — уже основной инструмент для всего.
Например, один из наших клиентов продаёт на Ozon, у него в каталоге 130 тысяч товаров. Его контент-менеджер сначала день работал с ассистентом, а потом попросил его записать всё, что они сделали, в виде инструкций — десять штук, по одной на каждый участок: таможенные коды ТН ВЭД, обязательные поля карточек, фото, дубли и так далее. В воскресенье вечером он запустил все десять одновременно, в отдельных чатах, и они работали параллельно. Сделали кучу работы, и небесполезной.
TL; DR. Ассистента в основном просят сделать рутинную работу, у которой есть понятные правила: заполнить поля, завести товары из прайса, найти дубли. С объёмами он справляется хорошо — например, коды ТН ВЭД для 10 368 товаров проставил за 41 минуту. Ошибки тоже бывают, например, агент неправильно понял задачу пользователя и отправил в маркетплейс 14000 карточек вместо 140 (ничего страшного не произошло, просто по времени долго, агент же потом и отменил отправку по просьбе пользователя).
Что просят
Сначала в двух словах о том, что делает наша система. Она собирает прайсы поставщиков, ведёт карточки товаров (характеристики, фото, описания), находит один и тот же товар в разных прайсах, считает цены и отправляет всё это на сайт и маркетплейсы. Подробнее я писал об этом в отдельной статье. Ассистент работает в чате внутри системы, видит товары, которые пользователь выделил в таблице, и умеет почти всё, что можно сделать кнопками.
Я взял случайный срез работы ассистента и разобрал его подробно. Длину среза назову «день-два», а не «сутки», потому что чаты не укладываются в календарь: один закрывается за две минуты, а в другом агент работает часами, и человек возвращается к нему на следующий день с «продолжи». Разговоры я брал целиком.
Типичный запрос выглядит так: «заполни правльным брендом вместо заглушки на основе названия товара». То есть у товаров стоит бренд «Нет бренда», а настоящий написан в названии. Самое милое не по теме — «спасибо Заюш», а следом «нарисуй зайчика».
По таблице видно, что с ассистентом почти не разговаривают, ему дают задания. Отдельно интересны 68 запросов «выполни инструкцию из файла»: это регламенты на страницу и больше, с разделами «жёсткие запреты» и «формат отчёта». К ним я ещё вернусь.
Рутина
Маркетплейс не примет товар, пока в карточке не заполнены обязательные поля: таможенный код (ТН ВЭД), вес и размеры упаковки и так далее. Раньше на эту работу нанимали людей, и при большом каталоге — не одного.
ТН ВЭД — это товарная номенклатура внешнеэкономической деятельности, классификатор, по которому каждому товару присваивается десятизначный код. От кода зависят пошлины и маркировка, поэтому маркетплейсы требуют его в карточке. Проставить его автоматически можно, но не по одному названию и категории, потому что код зависит от характеристик. Возьмём, например, силовой кабель. Если он на напряжение до 1000 В и без разъёмов — это один код, с разъёмами — другой, выше 1000 В — третий. Поэтому агенту нужны данные о самом товаре, и у нас их можно взять из нескольких мест: из библиотеки карточек (это наша общая база карточек товаров, собранных с сайтов производителей, поставщиков и магазинов), из API маркетплейсов и госорганов. Уже по этим характеристикам встроенный ИИ подбирает код. Если же данных нет нигде, правильный код не выберет ни человек, ни ИИ, можно только угадать.
Вернёмся к продавцу на Ozon. За одно воскресенье он открыл 32 чата. Большие задачи агент делит на части и раздаёт их «помощникам» — своим копиям, которые работают одновременно, таких за день набралось 202. Вот что было сделано:
- Коды ТН ВЭД. Агент нашёл больше 30 тысяч товаров без кода, которых не показывал обычный фильтр «не заполнено»: поле у них формально было заполнено пустым значением. 10 368 кодов он проставил за 41 минуту, а 610 товаров оставил без кода, потому что не был уверен. По ходу нашёл и исправил пять собственных ошибок.
- Новые товары из прайса поставщика. В прайсе была 3 291 позиция, которой не нашлось в каталоге. 2 653 из них агент завёл как новые товары, 513 оказались уже существующими товарами, только записанными иначе, а 125 он оставил на решение человеку.
- «Количество в упаковке = 1» во всех 128 035 карточках. Это заняло десять минут.
- Описания. У 89% карточек вместо описания стояла заглушка, а у одних наушников почему-то было описание освежителя воздуха. Сгенерировать описания для 116 тысяч товаров агент без подтверждения не стал, потому что это дорогая массовая операция.
Не всё прошло гладко. Система, которая автоматически переносит характеристики из источников, приняла бухту кабеля на 400 метров за один метр и записала вес 110 граммов вместо 43 килограммов. Около 600 карточек Ozon отклонил с ошибкой «вес равен нулю». Для 379 из них реального веса не нашлось нигде, и агент не стал его придумывать, пока пользователь не разрешил проставить оценку «с запасом 10%». На мой взгляд, это правильно: такое решение должен принимать бизнес, а не агент. Ещё одно наблюдение — быстрее всего упёрлись не в ИИ, а в ограничения маркетплейса. Его API принимает обновления карточек порциями, и отправка часами стояла в очереди.
Другой клиент попросил подобрать фото для картриджей, причём «только точное совпадение», никаких «похожих». Из 1 392 товаров фото нашлось для 423. Если посмотреть внимательнее, разница между брендами большая: у картриджей известных производителей с настоящими артикулами фото нашлось примерно для 70%, а у картриджей-аналогов, которые дистрибьютор продаёт под своей маркой, — для 2–8%. Это объяснимо: если код товара существует только в прайсе одного поставщика, искать по нему фото просто негде.
Задачи, которые раньше ждали программиста
Подключить новый прайс, сделать выгрузку на новую площадку, поменять формулу цены — такие задачи раньше неделями ждали программиста или внешнего интегратора.
Например, дистрибьютор кабеля каждый день выгружает из 1С файл с ценами и остатками, и этот файл нужно было заново подключить к каталогу. Файл непростой: закупочные цены в четырёх валютах, два склада, три канала продаж со своими ценами. А кабель в файле считается километрами, хотя продаётся метрами, значит, цену нужно делить на тысячу, а остаток умножать.
Клиент работал с ассистентом так же, как работал бы с подрядчиком. Написал техническое задание, сначала попросил только изучить текущие настройки, ничего не меняя, потом — сделать всё на тестовом каталоге, и только после этого — перенести на рабочий. Каждый этап принимал отдельно: «Correction pass принимаю как промежуточный PASS».
В итоге все 255 позиций из файла загружаются с правильными ценами и остатками, это проверено автоматически, построчно. Попутно агент убрал 13 устаревших поставщиков и 95 заданий в расписании, которые давно ничего не делали. Цены теперь обновляются каждый час в рабочее время, а не раз в сутки. На всё ушло около 11 часов работы агента, растянутых на несколько дней.
Без ошибок не обошлось. На одной из проверок агент заметил, что в новые цены подмешиваются цены старого поставщика, и остановился, но пересчёт цен к тому моменту уже запустил, так что какое-то время в рабочем каталоге были неверные цены. Больше всего мне понравился другой момент. В задании в одном месте было написано «работай в рабочем каталоге, не спрашивай», а в другом — «рабочий каталог без отдельного разрешения не трогать». Агент не стал выбирать удобный для себя вариант и спросил.
Задачи помельче из той же серии:
- выгрузка товаров на Авито;
- отдельная формула цены для Яндекс Маркета — для заказов, которые продавец доставляет сам, с ограничением комиссии в 2 000 ₽. Заняло около десяти минут;
- продавец ведёт общий каталог и отдельные каталоги под каждую площадку. Яндекс Маркет поменял артикулы, и у 1 503 товаров незаметно оборвалась связь с общим каталогом. Агент восстановил её по старым артикулам.
Новинки
Обычно новинка проходит через несколько человек: один заводит карточку, другой считает цену, третий выгружает на сайт. На каждой передаче теряется время.
Продавец детских компьютерных кресел прошёл весь путь одним разговором. Новинка уже продавалась на Wildberries, ассистент нашёл её там и связал с пустыми карточками в каталоге сайта, после чего оттуда пришли характеристики и по 21–24 фото на карточку. Потом нашёл эти товары в прайсе склада и посчитал цену для сайта: 5 385 ₽ по правилам наценки и 4 882 ₽ с учётом цены конкурента на WB. Всё это — 45 минут работы агента.
Одно он сделать отказался: переписать цену конкурента со страницы WB вручную. У нас цены конкурентов приходят только из настроенного отслеживания, а не из интернета «на глаз». Пользователь настроил отслеживание сам: «Это исправлю, спасибо».
Где обжёгся
Первое — правила, которые есть только в головах. Агент завёл 80 товаров из прайса поставщика за 8 минут, а потом четыре раунда их переименовывал: «проверь себя», «учитывай логику нейминга», «группа+бренд+модель+артикул», «запятые в названии не нужны». Правило, как называть товары, нигде не было записано, и агент узнавал его по одному исправлению за раз.
Второе — факты из интернета. В карточки часов Huawei агент поставил фото размером 30×50 пикселей, а флэш-память 64 ГБ подтвердил по обзорам на сторонних сайтах. Пользователь попросил: «удали эти значения», потому что на официальном сайте производителя их нет. Требования к источникам у человека оказались строже, чем у агента.
Третье — масштаб. Пользователь попросил: «перезапусти упавшие сегодня задачи экспорта». Упали задачи, которые обновляли выбранные карточки на Wildberries, но в интерфейсе они назывались «Экспорт — …». А у нас есть отдельная операция, которая так и называется — «экспорт», и она отправляет каталог целиком. Агент запустил её. Каталог ещё ни разу не отправлялся, поэтому в очередь на Wildberries встали все 14 299 товаров. Отменили в тот же день. Теперь, прежде чем что-то отправить на площадку или сайт, агент обязан сказать, сколько товаров это затронет. Если честно, виноваты тут прежде всего два одинаковых названия у нас в интерфейсе, новый сотрудник мог бы ошибиться точно так же.
Из всего этого мы вывели для себя принцип: пустое поле лучше правдоподобного, но неверного значения. Пустое поле видно в фильтре, а неверное значение, скорее всего, обнаружит уже покупатель. Поэтому всё, что агент находит в интернете, сначала сохраняется как источник со ссылкой и только потом переносится в карточку.
Что с людьми
Типичный чат — это около 9 минут работы агента. Человек из процесса пока никуда не делся: он ставит задачу, принимает этапы, замечает бухту в 400 метров. Ушла только та часть работы, где нужно было копировать значения из одной вкладки в другую.
Что из этого следует
Контент-менеджер продавца на Ozon за день продиктовал агенту правила своего каталога: «НДС 0,22, а не 22», «цена = закупка × 2,3», «кабели — постоянная путаница метры и бухта». Потом попросил превратить их в инструкцию, а инструкцию — разбить на десять сессий. Мы посмотрели на это и сделали в системе сохранённые сценарии: инструкцию пишут один раз и потом запускают из чата одной строкой. Так правила записываются один раз, а не диктуются заново в каждом чате.
Если вы внедряете ИИ в работу с каталогом, вот что я бы посоветовал по итогам:
- Давать задачи с правилом, которое можно проверить, а не «сделай хорошо».
- Записать правила каталога до того, как их начнёт угадывать ИИ.
- Требовать источник у каждого значения. Оценки допустимы, но они должны быть видны в данных.
- Прежде чем ИИ что-то отправит на сайт или маркетплейс, просить его сказать, сколько товаров это затронет.
- Большую работу делать этапами с приёмкой, как с подрядчиком.
К чему стремимся
Всё описанное выше — это то, как есть сейчас. Цель же в том, чтобы процесс один раз настроили, и дальше он работал сам: новые позиции из прайсов заводятся, карточки заполняются, цены пересчитываются, товары уходят на площадки. Человек нужен, когда меняется бизнес — появился новый поставщик или новая площадка, поменялись правила наценки. А контролировать каждый шаг и каждый день ставить одни и те же задачи он не должен. Инструменты для этого у нас уже есть. Вопрос в тестировании и в поиске узких мест, и срез, который я разбираю в этой статье, как раз для этого и нужен.
Юрий, разработчик catalog.app.