"Акинатор" для готовой еды: как в AllSee научились предсказывать ваши вкусы

Искусственный интеллект благодаря своему развитию стал прекрасным инструментом не только для автоматизации рутинных процессов внутри компании, но и для создания нового клиентского опыта. С его помощью можно повышать вовлеченность клиентов – например, за счет персонализированного взаимодействия или наличия грамотных рекомендаций. В рамках AllSee мы с моей командой реализуем такие проекты в разных сферах – HR, медицина, маркетинг, маркетплейсы, e-commerce – и у нас накопилось множество интересных кейсов. Сегодня расскажу вам об одном из них – боте для подбора готовой еды от ВкусВилл.

"Акинатор" для готовой еды: как в AllSee научились предсказывать ваши вкусы

Я – Егор Красильников, product-менеджер и CEO компании AllSee. Более 6 лет я развивал ML (Machine Learning, машинное обучение) в стартапах и корпорациях – Газпронефть, МегаФон, AutoCoach, MVP Lab. В рамках AllSee реализовал несколько успешных проектов: бот для подбора готовой еды для ВкусВилл, проект для распознавания и синтеза речи пользователей в сфере знакомств и другие.

Основная идея

В марте 2024 года в команду AllSee обратился отдел маркетинговых коммуникаций компании ВкусВилл с идеей для проекта. Задачей стала разработка интерактивного помощника, который помогал бы пользователям подбирать готовые блюда из каталога, с помощью наводящих вопросов докапываясь до истинных желаний человека. Суть схожа с популярной ранее игрой «Акинатор», где интернет-джинн благодаря вашим ответам на наводящие вопросы догадывается, какого персонажа из кино, сериала или книги вы загадали.

Целью проекта было создать удобный и интерактивный формат подбора готовых блюд для привлечения «новичков» - пользователей, ранее не интересовавшихся покупкой готовой еды во ВкусВилл. Кроме того, важными требованиями были возможность учета многочисленных аллергенов, содержащихся в тех или иных продуктах, а также строгий учет диеты конкретного покупателя. Для удобства коммуникации необходимо было научить бота воспринимать введенный в свободной форме текст, а также выстроить удобную навигацию в формате кнопок.

Подготовка к проектированию

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

  • Через какие этапы бот должен проводить пользователя для наиболее удобного и быстрого подбора блюда?
  • Какова система представления блюд в каталоге товаров: каков вид у дерева категорий, какие теги есть у продуктов – например, обозначающие принадлежность к диете или особой группе?
  • Как будет проводится первое знакомство пользователя с ботом, а также как будут выглядеть напоминающие уведомления?
  • Какие аналитические данные помогут сделать выводы о полезности бота и о возникновении ошибок в процессе его использования?
  • В каком формате будет происходить обновление данных для поддержания бота в актуальном состоянии после его запуска?

Получив ответы на эти вопросы, мы перешли к основному этапу разработки.

Проектирование

Проектирование является неотъемлемой частью разработки, когда речь заходит о продукте, который будет обрабатывать большое количество пользователей, транзакций или сценариев использования.

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

Структура данных

Первично полученные данные, выгруженные из внутреннего каталога 1С компании, были неприменимы для работы - они были имели сложную структуру: большое число системных параметров не позволяло даже примерно понять, каким образом обучать ИИ ориентироваться во всех представленных критериях. Благодаря анализу данных мы выделили значимые категории, но этого все еще не было достаточно: чтобы выявить отношение к некоторым характеристикам продуктов, пришлось бы задавать пользователю большое количество сухих и недружелюбных вопросов, например: «Вы хотите приобрести замороженный полуфабрикат или готовое изделие?» или «Вы хотите блюдо с содержанием сои или без?».

С высокой вероятностью ответа на них не знает горящий желанием перекусить офисный работник или мама, которая ищет вариант обеда для себя и своего ребенка. Кроме того, для охвата всего каталога пришлось бы задавать большое число подобных вопросов. Тогда мы поняли, что необходимо группировать данные в более понятные для человека категории – и получили вот что:

1) У вас есть время на готовку?

a) Нет, хочу поесть сразу

b) Могу подогреть еду

c) Найдется 10 минут

2) Вы выбираете блюдо только для себя или планируете кого-то угостить?

a) Для себя

b) Для детей

c) Для семьи

3) А как приготовить ваше идеальное блюдо?

a) Запечь

b) Сварить

c) Пожарить

d) Сделать на пару

От сложной структуры выгрузки мы пришли к 10 понятным для большинства людей вопросам - отдельной фишкой стали вопросы про уровень голода, а также настроение пользователя.

Пользовательский сценарий

Параллельно со структуризацией данных велась проработка сценария взаимодействия с ботом. Это необходимо для формирования четкого представления каждого шага, который делает клиент, и подбора наиболее подходящего формата экранов в боте. Такое детальное проектирование позволяет детально рассмотреть сценарий работы с ботом и обозначить основные переходы от одного действия к другому, чтобы правильно их в дальнейшем запрограммировать.

Здесь снова была потребность во взаимодействии с заказчиком - после нескольких встреч мы получили две схемы: карту экранов и детализированные вайрфреймы. Так мы визуализировали схему тех экранов (=этапов), через которые будет проходить пользователь в процессе подбора блюда, а также различные состояния и элементы этих экранов.

Инструменты анализа и мониторинга

Для нас как для команды разработчиков конечная цель – не просто разработать решение, а решить поставленную заказчиком бизнес-задачу. Именно поэтому этап поиска инструментов, позволяющих отследить эффективность решения после его запуска, особенно важен.

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

Разработка ИИ

На момент разработки самой сильной моделью была GPT-4 – именно ее мы выбрали в качестве основы для алгоритма подбора блюд на основе предпочтений пользователя.

Разработка началась с разработки прототипа, который обращался к подготовленной базе продуктов с помощью GPT-4 для извлечения подходящих блюд. Однако такой подход тратил большое количество токенов (валюта OpenAI) на каждый запрос, поэтому мы приступили к поиску нового.

В итоге работа велась следующим образом:

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

· При отправке запроса от пользователя происходила стандартная фильтрация таблицы, подготовленной и размеченной с помощью GPT-4 и метода Code Interpreter.

Такой алгоритм позволял быстро обновлять базу продуктов при поступлении новых SKU, гибко исправлять возможные ошибки в разметке, а также не использовать OpenAI в конечной версии. Мы научили искусственный интеллект предлагать пользователю наиболее релевантные продукты из каталога и при этом иметь нулевое потребление токенов.

Создание телеграм-бота

Вместе с заказчиком было решено пилотировать решение в формате телеграм-бота. Команда AllSee решила выбрать для этого наиболее продвинутый фреймворк Aiogram - он позволяет обрабатывать запросы пользователей в асинхронном формате и предоставлять наиболее плавный отклик. Для надежного хранения данных была использована база данных PostgreSQL, которая хранила в себе каталог продуктов, размеченные категории, а также данные о пользователях.

Для функций искусственного интеллекта мы подключили Yandex GPT - он позволил вести коммуникацию с пользователем на естественном языке в таких важных сценариях как распознавание аллергенов из свободного ввода пользователя, отработка возражений после подбора неподходящих блюд, а также при генерации уникального текста, сопровождающего подборку предпочтительных блюд.

Для дообучения большой языковой модели от Яндекса были применены различные техники: промпт-инжиниринг для задания общих инструкций работы, fine-tuning для следования Tone-of-Voice компании, а также методы ансамблирования нескольких решений для повышения точности работы ИИ.

Ансамблирование - метод машинного обучения, при котором решать задачу обучаются несколько моделей, после чего их предсказания агрегируются – например, усредняются.

Таким образом, мы достигли следующих результатов:

· Бот позволял работать с откликом менее 0.1 секунды на ввод пользователя;

· Время генерации подборки блюд искусственным интеллектом составляло не более 10 секунд в пике нагрузки;

· Точность распознавания аллергенов из свободного текста пользователя составила рекордные 97%.

Запуск проекта

"Акинатор" для готовой еды: как в AllSee научились предсказывать ваши вкусы

Для запуска проекта креативной командой ВкусВилл был придуман персонаж пИИрожок, а сам бот назывался “Найду Еду”. Пресс-релиз запуска был орубликован сразу в двух новостных изданиях CNews и AdIndex.

Вот несколько фактов о запуске в цифрах:

· В результате пилотного запуска бот обработал более 20 000 пользователей - в пиковый период их было целых 3 500!

· Более 90% пользователей уже после первого знакомства с ботом дошли до итоговых рекомендаций «пИИрожка».

· По измерениям на базе внедренной аналитики конверсия в понравившийся подбор блюд составила 25%, а конверсия в переход на сайт для оформления заказа – 10%.

· У команды AllSee разработка заняла около 300 часов - над проектом работали разработчики телеграм и Data Science специалисты по направлению анализа данных и промпт-инжиниринга.

· Общий срок выполнения проекта составил чуть более 1 месяца.

Также по итогам запуска я как лидер команды разработки и CEO выступил с докладом на конференции ML2Business, организованной Yandex Cloud, - запись доступна по ссылке.

"Акинатор" для готовой еды: как в AllSee научились предсказывать ваши вкусы

Итоги

На примере этого проекта наша команда еще раз убедилась, что не имеет значения разрабатывается ли веб-сервис, мобильное приложение или чат-бот - принцип проектирования остается неизменным. Грамотное структурирование данных позволило нам сделать бота «человечным», а его вопросы – легко понятными для любого пользователя. Проработав пользовательский сценарий, мы создали доступную для понимания схему работы с ботом, которая делает поиск подходящего блюда приятным и простым процессом.

В конечном итоге мы в короткий срок создали бота, работающего с превосходными результатами – об этом говорит статистика по обработке запросов и показатели конверсии.

«пИИрожок» - лишь один из успешных кейсов команды AllSee. Совсем скоро выйдет новая статья в серии про наиболее интересные из них – подписывайтесь, чтобы узнать больше про гибкую разработку!

"Акинатор" для готовой еды: как в AllSee научились предсказывать ваши вкусы

Сделайте ИИ с AllSee!

Начать дискуссию