С чем съесть макароны? Как ChatGPT помогает ритейлу давать рекомендации при покупках онлайн

Разрабатывая продукт по рекомендации товаров и системе поиска товара в каталоге, мы озадачились вопросом: как построить собственную рекомендательную систему, приносящую реальную прибыль бизнесу?

Обложка к посту сгенерирована ИИ

На связи Елизавета Колмакова, Data Scientist компании 1221systems. Мы сделали ленту «С этим покупают» с осмысленными рекомендациями, и я хочу рассказать, как нам в этом помог ChatGPT.

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

Почему ChatGPT лучше моделей, построенных на данных

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

  1. Холодный старт продукта. Моделям, построенным на данных, сложно давать хорошие рекомендации тем товарам, продаж которых совершено мало, которые пользуются сезонным спросом и выпущены как тест.
  • Сбор данных. Для подхода генерации рекомендаций через ChatGPT не требуется собирать датасет, что экономит время.
  • Препроцессинг данных. В каждом втором чеке есть общие товары («хлеб», «молоко», «масло сливочное»), наличие которых размывает истинные зависимости совместимых продуктов. Организовать фильтрацию чеков от подобных общих товаров — объемная и сложная задача.

Настройка промтов

Начав этот увлекательный путь в мир больших разговорных моделей, мы определили две задачи:

  1. Необходимый нейминг. Есть товары, которые достаточно сложно агрегировать под общее имя, а есть — те, которые легче: для ChatGPT нет разницы, предлагать рекомендацию к «Молоко Особая коллекция 450мл» или «Молоко Особая коллекция 950мл». Работали над неймингом наших товаров, пока не убедились, что все имена товаров отражают суть и обобщены до максимально возможного уровня.
  2. Входная формулировка.

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

Вот далеко не полный список формулировок, которые мы пробовали на примере макарон:

  • что купить к макаронам

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

и так далее.

К каждой из этих фраз мы тщательно подбирали формулировку, дополняя ее уточнениями (например, о запрете рекомендовать алкоголь и о том, что к готовой еде предпочтительнее предлагать напитки).

В итоге, фраза длиной в 74 слова была прописана и готова к прогонке по всем товарам.

Входная фраза

Подготовив входную фразу и соорудив обобщенные имена товаров, приступили к сбору ответов от ChatGPT. Взяв все имена товаров, разбили их на тройки, чтобы бережнее подойти к вопросу использования токенов (токен —атомарная единица, которой оперирует чат для генерации ответов и, образно говоря, подобен валюте, которая определяет затраты на создание ответа). В итоге этой подготовительной работы — полностью уложились в пробные токены, которые даются при регистрации на OpenAI.

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

Напиши топ 10 товаров (но не перечисляя их имена марок и брендов), которые можно съесть или выпить вместе с каждым (по отдельности) из следующих продуктов из списка: 1. {ИМЯ ТОВАРА 1}; 2. {ИМЯ ТОВАРА 2}; 3. {ИМЯ ТОВАРА 3}. Строго не рекомендуй составляющие этого продукта, каждая рекомендация должна дополнять продукт, чтобы их можно было употребить вместе. Если продукт - это готовое блюдо, то отдай предпочтение рекомендации напитков к нему. Не рекомендуй алкоголь. Ответь строго в следующем формате: '1. для товара <имя товара 1>: 1) ... \n 2) ... \n 3) ... \n 4) ... \n 5) ... \n 6) ... \n 7) ... \n 8) ... \n 9) ... \n 10) ... \n', - где вместо ... вставлены топ 10 товаров

Сбор ответов: сложности и баги

Собрав и проанализировав ответы ChatGPT, выделили особенности работы с чатом для решения задачи рекомендации товаров:

1. Формулировка

Формулировка критически важна. Мы проверяли, что даже «порекомендуй, что купить с» и «порекомендуй, что купить к» имели разное качество рекомендаций:

Пример важности формулировки

2. Форма обратного ответа.

Если нечетко указывать форму обратного ответа, чат будет стремиться ответить по-разному, а формат критично важен для последующего выделения товаров и их поиск в каталоге. Например, при наличии рекомендации от чата «Черный кофе» нам необходимо найти категорию «Молотый кофе», что само по себе является большой задачей. Строгий вид ответа необходим для автоматизации просчета и последующего поиска в каталоге.

3. Дополнительные прогоны.

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

4. Важность контекста.

Чату важен входной контекст. Для оптимизации затрат мы подавали сразу несколько товаров и порой, от такого соседства страдали рекомендации. Например, в тройке: Колбаса, Рулеты, Сало, — второй товар чат понимал как мясные рулеты, в то время как имелись в виду рулеты сладкие.

5. Специфические категории товаров.

Часто ChatGPT генерировал сомнительные рекомендации или рекомендовал несуществующие товары в категориях непродовольственных, детских товаров, а также товаров для животных. Он просто добавлял к известным товарам слова «детский» или «для кошек», например, мог посоветовать «детский крем для бритья».

6. Сложности с готовыми блюдами.

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

7. Грамматические ошибки.

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

Учительница русского языка была бы недовольна

От абстракции к реальности

Далее мы прописали ту часть, которая ответственна за соотнесение абстрактных рекомендаций чата с реальным товаром: например, преобразует «масло сливочное» в «масло сливочное Особая коллекция 180гр», а «торт» — в «Торт шоколадный Bocconto».

Для этого мы воспользовались трудами своих коллег из Search Service и вместо того, чтобы соотносить каждое абстрактное имя со всем каталогом, что долго по времени и вычислениям, отправляли запросы на SearchService, в котором уже реализован функционал поиска товаров по запросу с сайта myspar.ru.

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

Пример реализации рекомендательной системы в онлайн-магазине

Так с чем же все-таки съесть макароны?

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

Этап первый. Товар: МАКАРОНЫ ЦАРЬ ДУРУМ ГРЕБЕШКИ 1/450

Этап второй. Нейминг: Макароны

Этап третий. Ответ чата: Оливковое масло Пармезан Томатный соус Орегано Сливочный соус Базилик Грибы Песто Куриное филе Тунец.

Этап четвертый. Финально, список предложенных товаров из каталога:

МАСЛО ОЛИВКОВОЕ ALIANZA PURE 1л

СЫР ПАРМЕЗАН ГРАНД 45%

СОУС ТОМАТНЫЙ РАТИБОР ШАШЛЫЧНЫЙ 385г

ОРЕГАНО ИЗМЕЛЬЧЕН.KOTANYI 1/8 ПАК.

СОУС SPAR СЛИВОЧНО-ЧЕСНОЧНЫЙ 200г

БАЗИЛИК КРАСНЫЙ 25г

ГРИБЫ ЭРИНГИ 200г

СОУС ПЕСТО 250г

КУРИНОЕ ФИЛЕ В ХРУСТЯЩЕЙ ПАНИРОВКЕ

ТУНЕЦ ФИЛЕ В С/С 1/185 ФОРТУНА

Bon appetit!

0
5 комментариев
Светлана

кто потребитель этого контента? Никому не нужно.Как вы надоели.

Ответить
Развернуть ветку
Жак Фреско

Ну что же вы! Я использую ChatGPT всегда, даже по мелочам. Сегодня он научил меня какать:

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

Ответить
Развернуть ветку
Kot Paslyon

"Так с чем же все-таки съесть макароны?" Глупый вопрос. С хлебом естественно ;)

Ответить
Развернуть ветку
Иван Бирюк

Вот ради чего я захожу на VC (ресурс с статьями про инвестиции, бизнес и финансы)

Ответить
Развернуть ветку
Егор Багрин

Иногда чат GPT даёт полезные и практичные советы. Особенно, если в холодильнике только кетчуп и сыр

Ответить
Развернуть ветку
2 комментария
Раскрывать всегда