Языковые модели умеют вести связный диалог, но это не означает, что они способны выполнять задачи. Пользователь, который просит найти USB-C зарядку до 25 долларов с доставкой за два дня, ожидает от агента конкретных действий: запроса к каталогу, фильтрации по трём условиям, выбора правильного варианта товара. Supervised fine-tuning — обучение на демонстрациях — справляется с простыми сценариями, но не масштабируется на комбинаторное пространство реальных e-commerce диалогов. Именно здесь появляется EcomRLVE-GYM.

Фреймворк расширяет RLVE-Gym — библиотеку из 400 сред для алгоритмических задач вроде сортировки и судоку — до многоходовых диалогов с инструментами. Принципиальное отличие: агент не просто генерирует текст, а совершает действия — вызывает API каталога, добавляет товары в корзину, инициирует возврат. Результат каждого действия проверяется программно: никакого LLM-судьи, никакой человеческой разметки. Это делает обучение воспроизводимым и масштабируемым.

EnvironmentWhat the agent must do
Product DiscoveryFind products that satisfy all the user's constraints
SubstitutionAn item is out of stock — find a similar, compatible alternative
Cart BuildingAdd the exact products, variants, and quantities the user asked for
Return + ReplacementIdentify the right order line, initiate a return, suggest a replacement
Order TrackingResolve which order the user means and report its current status
Policy QAAnswer a deterministic question about store policy (return window, shipping rules, etc.)
Bundle PlanningRecommend a complete shopping list for a project within a budget
Multi-Intent JourneyHandle a conversation that chains 2–5 of the above tasks in sequence

Всего в EcomRLVE-GYM восемь сред. Каждая покрывает отдельный сценарий: поиск товаров по ограничениям, подбор замены для позиции не в наличии, сборка корзины с точными вариантами и количеством, оформление возврата, отслеживание статуса заказа, ответы на вопросы о политике магазина, формирование бандла под бюджет и мультизадачные диалоги, где пользователь последовательно ставит от двух до пяти задач. Все среды используют единую трёхчастную функцию награды: задачная метрика (например, F1 по совпадению товаров), бонус за эффективность и штраф за галлюцинации — рекомендацию ID товаров, которые агент не запрашивал в текущей сессии.

Сложность задач регулируется по 12 независимым осям — от числа ограничений пользователя до доли товаров, которые заканчиваются в процессе диалога.

verifiable_signals_dark
verifiable_signals_dark · Источник: Hugging Face Blog

Сложность каждой задачи контролируется единым параметром d от 0 до 12, который одновременно меняет 12 независимых аспектов. На лёгком уровне пользователь формулирует два ограничения, почти никогда не опускает детали, а в результатах поиска нет отвлекающих позиций. На сложном уровне ограничений восемь, пользователь примерно в 80% случаев что-то не уточняет, четверть результатов поиска — нерелевантные товары, а половина позиций заканчивается в процессе диалога. Остальные восемь осей охватывают бюджет ходов, опечатки и сленг во вводе, переключения контекста и размер истории заказов.

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

Модель Qwen 3 8B обучалась методом DAPO — вариантом алгоритма PPO, адаптированным для языковых моделей, — в течение 300 шагов. Среда сборки корзины (E_CART) хорошо иллюстрирует требования к агенту: нужно найти товар, выбрать правильный вариант (цвет, размер, тип разъёма), добавить с нужным количеством, при необходимости уточнить у пользователя недостающие детали и обработать список из нескольких позиций. Агент использует шесть инструментов, включая поиск по каталогу и запрос доступных вариантов. Ошибка в варианте — например, Lightning вместо USB-C — немедленно снижает F1, а симулированный пользователь исправляет агента прямо в диалоге. Проект создан в рамках PyTorch OpenEnv Hackathon и продолжает развиваться.