Разработали AI-ассистента на базе GPT-4o mini, который помогает выбирать вино с товарной полки покупателям в магазине «Лента». Протестировали на пользователях и сделали множество интересных выводов.
Вы стоите перед огромной винной полкой магазина: десятки производителей, множество красивых бутылок, виноградных сортов, регионов и вариаций — но какую выбрать на ужин к мясу, встречу с друзьями или в подарок? Даже если вы разбираетесь в винах лучше среднестатистического покупателя, выбор неизбежно становится сложной задачей. Почему так происходит?
Как бы это ни было печально, основное правило выбора рядового пользователя — подороже и не из России, значит, хорошее. Может, это и не так уж плохо с точки зрения продаж, однако отсутствие нормального решения проблемы выбора вина для пользователей — это точка роста.
Вместо чтения этого раздела рекомендуем зайти и протестировать самостоятельно. Сразу предупреждаем — это прототип, разработанный для тестирования применимости генеративных LLM в задачах продаж товаров. Тесты на пользователях прошли, мы собрали необходимые данные и остались довольны результатом, после чего перешли к следующей итерации разработки. Если после публикации в бот набежит слишком много пользователей, мы отключим бота. Ссылка: https://t.me/LentaSommelierBot
Если протестировать не удалось или не захотелось, то вот описание процесса:
Пользователь видит следующее:
Главным вызовом на старте работ стал не процесс разработки технологии, а сбор и подготовка данных о каталоге вин. Почему одно вино подходит к баранине, другое — на девичник, а третье — в подарок — это тайна, недоступная обывателю. И здесь нам повезло: некоторое время назад «Лента» реализовала проект, целью которого было подробное описание каталога вин с привлечением сомелье. В результате на сайте у большинства вин появились качественные и информативные описания, которые облегчают пользователям выбор. Сомелье вручную разметили более 1000 позиций по десяткам различных параметров, среди которых были как бытовые:
Так и узконаправленные:
Работа заняла несколько месяцев и стала серьезной основой для AI-соммелье. Экспертную разметку мы долго приводили в машиночитаемый вид, но стоит отдать должное: без их труда вся история с AI-соммелье была бы принципиально невозможной.
Целевая модель работы ассистента — InApp чат, который удерживает пользователя в мобильном приложении. Однако реализация InApp технологий, даже на уровне WebView, добавляет минимум пару месяцев на разработку и тестирование, а также отвлекает команду разработки основного приложения от приоритетных задач. Поэтому на первом этапе мы решили ограничиться быстро собираемым прототипом в Telegram. Если технология заработает в Telegram, можно будет приступить к разработке полноценного решения InApp.
На начальном этапе мы протестировали три варианта:
Таким образом, на момент выбора базовой модели (осень 2024 года) у нас не было особого выбора, и мы решили использовать OpenAI. В планах — повторный тест отечественных LLM, так как что-то серьезное делать через прокси было бы неправильно.
Пару лет назад мы реализовали видеоплеер для товарных карточек мобильного приложения «Ленты». Благодаря этому видеоплееру у нас появился API-доступ к данным об актуальных остатках и ценах в разных магазинах.
Определение магазина для пользователя — еще более простая задача. Получая данные о геолокации через Telegram, мы можем вычислить ближайший к пользователю магазин. Отсутствие необходимости интеграции с Лентой по товарным данным сократило реализацию пилота на несколько месяцев.
Любая LLM (Large Language Model) в той или иной степени «галлюцинирует», выдавая недостоверную информацию или «придумывая» лишние сведения. С точки зрения разработки такие галлюцинации мешают предоставлять пользователю стабильный результат выполнения его запроса. Например, LLM может в 98 случаях из 100 выдать запрашиваемую информацию, но в 2 из 100 прислать совершенно не то, что указано в инструкции.
Это происходит по нескольким причинам:
С точки зрения пользователя, галлюцинации могут приводить к неправильным рекомендациям. Поэтому использование LLM в задачах с высокой стоимостью ошибки не всегда оправдано. Например, если порекомендовать пользователю неверный плиточный клей, вся приклеенная плитка может отпасть. В то же время, если ошибка случится в рекомендациях по вину, большинство пользователей, вероятно, не заметят этого.
Бороться с галлюцинациями можно разными способами. Один из вариантов — использовать более мощные модели, менее подверженные этому явлению. Изначально мы рассматривали полную модель GPT-4o, но быстро отказались от этой идеи из-за высокой стоимости: затраты на один диалог с пользователем измерялись бы в рублях, что для юнит-экономики продаж слишком дорого. Поэтому выбор пал на GPT-4o mini с дальнейшей оптимизацией для минимизации галлюцинаций.
Загрузка всех известных параметров бутылок увеличила бы объем промпта до неприемлемого уровня, а вероятность ошибок возросла бы бы выше 50%. Чтобы сократить промпт, мы перенесли часть функционала поиска бутылок на наш сервер и обеспечили доступ к нему через API. Мы обучили модель вызывать нужную функцию поиска через механизм Function Calling и затем итеративно сократили промпт и описание функции, добиваясь стабильной работы.
В итоге в функции остались популярные сорта винограда, сочетаемость с блюдами, соответствие случаям (праздники, подарки), кислотность, танины, страна происхождения, ароматика (фрукты, специи), плотность тела, емкость бочки выдержки и несколько технических параметров.
На тестирование на живых пользователях ушло пару месяцев, в течение которых мы узнали, что на самом деле ищут пользователи, и адаптировали промпт и структуру хранимых данных под реальные запросы.
LLM прекрасно работают с текстом, но вопросы оформления все равно остаются на нашей стороне. Поэтому на финальном этапе мы берем ответ от LLM, добавляем фото, название бутылки, цену, рейтинг и ссылки на карточку товара в каталоге магазина Лента. В результате пользователь видит три красиво оформленные карточки, которые не просто формально соответствуют его запросу, но и имеют уникальные описания для каждой бутылки, раскрывающие, почему именно эта бутылка подходит пользователю. То есть мы активно продаем..
Если стоимость подбора бутылки вина, требующего экспертности, измеряется в копейках, то этот опыт можно легко масштабировать на другие категории товаров с низкой стоимостью ошибки. Этой задачей мы сейчас и занимаемся.
Также опыт с сомелье позволил нам запустить собственную платформу для создания AI-ассистентов. На ней мы разрабатываем ассистентов для различных категорий товаров и услуг и внедряем бизнесу решения. Буду делиться кейсами внедрения ассистентов. Если вы хотите внедрить ассистентов в свои продажи, обращайтесь. Телеграм: https://t.me/shayahmetov.
Начался процесс замены еще одного костыля пользовательских интерфейсов — фильтров в каталогах товаров. Фильтры — полезный инструмент, когда вы хорошо разбираетесь в специфике товара и хотите быстро просмотреть доступные варианты. Однако, как и все специализированные инструменты, они требуют освоения и понимания предметной области. Мы научили LLM использовать фильтры для решения задач покупки вина. Остальные категории товаров уже не кажутся такими сложными.
Попробуйте объяснить 80-летней бабушке, как пользоваться фильтрами при покупке новой газовой плиты для квартиры. Скорее всего, она не поймет. А вот воспользоваться AI-ассистентом, куда можно записать голосовое сообщение, она точно сможет.