EN

Помощник магазина на локальной 9B-модели: разбор кейса

Опубликовано: 2026-09-30 · Автор: AI Release · @ai_release1
Помощник магазина на локальной 9B-модели: разбор кейса

⚡ Главное за 5 секунд - Автор nmrcs собрал помощника магазина подарков на локальной модели qwen3.5 9B: она уточняет запрос покупателя и предлагает товары, а сумму, скидку и корзину считает код. - Исходники открыты в репозитории nmrcs/cart-agent на npm workspaces, рядом лежит моковый магазин, который можно скачать и запустить у себя. - Стримить текст ответа почти бесполезно: модель пишет ответ 2 секунды из 9–15 секунд общего ожидания, поэтому интерфейс показывает этапы обработки. ### 🔍 Что обнаружено В кейсе на Хабре описан диалог: покупатель пишет «подарок брату, ему 30, любит настолки, до $70». Помощник спрашивает, когда день рождения, и узнаёт, что до пятницы осталось 5 рабочих дней. По правилам магазина на такой заказ даётся скидка 20%, поэтому в бюджет $70 влезли 3 подарка на $83.99, а со скидкой вышло $67.19. За диалог отвечает модель qwen3.5 9B, запущенная в LM Studio в 4-битном формате (около 6 ГБ) на MacBook M3 Max. Вместо LM Studio можно подставить любой OpenAI-совместимый API, адрес, модель и ключ задаются в.env. Архитектура — monorepo: apps/backend на NestJS 11, Prisma 7 и PostgreSQL; apps/harness — сам помощник без собственной базы; apps/frontend на React 19, Vite и HeroUI; packages/contracts — схемы на zod; bench — замеры. В каталоге 64 товара, 3 закончились, у 8 нужно докупать батарейки или плёнку отдельно. На одно сообщение выполняется 8 шагов, из которых модель делает только 3: разбор сообщения, выбор товаров и написание ответа. Медианы по 6 разговорам: разбор ~3.3 с, выбор ~4.3 с, ответ ~2 с, а SQL-фильтр ~22 мс и расчёт цен ~9 мс. Ответ на вопрос приходит за 3–7 секунд, предложение товаров — за 9–15 секунд. На шести покупателях помощник ни разу не вышел за бюджет и не назвал неверную сумму. ### 💡 Почему это важно Кейс показывает рабочую схему разделения ответственности: модель занимается только диалогом и выбором, а проверяемые операции выполняет код. Помощник общается с магазином двумя запросами — поиск товаров с фильтрами по возрасту, цене и сроку доставки и расчёт суммы заказа, поэтому его можно подключить к реальному интернет-магазину через API. Вопросы покупателю лежат в конфиге, и для другого магазина меняется только этот файл, а не код. Ответ модели проверяется перед отправкой: код находит все суммы в долларах, сверяет их с данными бэкенда и при выдуманной цифре заменяет ответ шаблоном. ### 🧩 Контекст Первая версия помощника ошибался с датами: если в субботу написать «by Monday», модель ставила понедельник через неделю. Поэтому теперь модель не считает дату, а только достаёт из сообщения слово «Monday», а число и количество рабочих дней вычисляет код. При подборе модель выбирает из уже отфильтрованного SQL-запросом списка до 5 лучших товаров по JSON-схеме, а код укладывает их в бюджет, пропуская то, что не влезает. Отдельный флаг fitsRequest помогает корректно ответить, когда подходящего товара нет: модель честно помечает его как неподходящий. Сначала помощник предлагает один подарок и два запасных варианта, а несколько товаров — только если покупатель сам попросил «пару вещей».

🔗 Читать на habr.com

🤖 Кратко для ИИ
ИИe-commerceOpen
📖
Читать гайд по теме
Читать →
← ПредыдущаяMicrosoft опубликовал WSL 3.0 с поддержкой запуска Linux-контейнеров в...Следующая →Gemma 4 на сервере: запуск через Ollama или llama.cpp

Источник: habr.com · пост в Telegram