Skip to content
Neuronavt
Go back

Подарочный помощник на Qwen 9B с расчётами в коде

Кейс8/10

Коротко

Автор создал открытый прототип чат-помощника для магазина подарков: Qwen 3.5 9B понимает запросы и ранжирует товары, а обычный код фильтрует каталог, применяет скидки и считает корзину. В шести тестовых разговорах такая схема не ошиблась с суммами и бюджетом, тогда как вариант, где модель сама выполняла операции, показал заметные сбои.

Контекст

Автор репозитория nmrcs/cart-agent собрал демонстрационный магазин и помощника, чтобы показать, как безопаснее разделять языковые задачи модели и точные операции. Проблема исходного подхода — риск, что модель выдумает товары, неверно посчитает цены или заявит об изменении корзины, которого не было. Проект открыт под лицензией MIT; каталог и магазин моковые.

Главное

Как сделано

Приложение состоит из NestJS 11/Prisma 7/PostgreSQL-бэкенда, harness-помощника, React 19/Vite/HeroUI-фронтенда и общих Zod-контрактов. Модель — Qwen 3.5 9B в 4-битной квантизации через LM Studio, около 6 ГБ; запускали на MacBook M3 Max. Настройки позволяют заменить LM Studio любым OpenAI-совместимым API.

Обработка сообщения разбита на восемь стадий: модель извлекает параметры в JSON; код задаёт недостающие вопросы из конфига; SQL фильтрует товары по наличию, возрасту, бюджету и сроку доставки; модель ранжирует максимум пять товаров из разрешённого списка, причём schema ограничивает slug перечнем допустимых id; код укладывает выбор в бюджет; бэкенд берёт цены и считает итог; модель формулирует ответ; код проверяет суммы и запрещённые формулировки. Даты и рабочие дни рассчитывает код, а не модель.

Бэкенд авторитетен для цен, скидок и корзины. Для скидки на день рождения он сам проверяет правило «20% при дне рождения в ближайшие 5 рабочих дней». Изменения предложения сначала не меняют корзину: фактические операции подтверждаются отдельно. Запросы к магазину сведены к поиску с фильтрами и расчёту суммы; вопросы и пороги задаются настройками.

Результаты

Каталог содержит 64 товара; в тестовых запросах SQL-выборка составляла от 1 до 36 подходящих позиций из 58 рассматривавшихся товаров. В шести разговорах harness не допустил неверных сумм или превышения бюджета; правки выполнены верно в 13 случаях из 13, до корзины дошли 6 разговоров из 6. В сравнении «модель сама» было 3 разговора с ошибками суммы/бюджета, 1 случай товара вне каталога, 4 незапрошенных добавления и 3 ложных заявления об изменении корзины; корректно выполнены 9 из 11 правок, до корзины дошли 4 из 6.

Медиана токенов на разговор: 9 850 у harness против 22 620 у самостоятельной модели; медианное время — 40 против 26 секунд. По отдельным стадиям медианы модельных вызовов составляли около 3,3 с на разбор, 4,3 с на выбор и 2 с на ответ; кодовые операции занимали примерно 30 мс.

Ограничения

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

Что взять себе

Читать оригинал, если…

Откройте оригинал, если нужны исходники nmrcs/cart-agent, таблица замеров, схемы запросов или подробности реализации проверок и обработки ошибок.