Как Jev сэкономил нам 90% бюджета

Всем привет, мы команда разработчиков из Narisuemvse.by, и в данной статье мы хотим поделиться небольшим опытом по внедрению ИИ, и в частности рассказать об оптимизации автоматизации с помощью новой модели Jev.
Прежде чем описать наш случай, хотелось бы внести некоторые пояснения по проекту. Внедряли мы это в магазин компьютерной техники, насчитывающий около 200 тыс. активных товаров.
При этом список товаров постоянно обновляется и пополняется, мы регулярно парсим новые позиции из внешних источников. Но перед тем, как попасть в каталог, товары проходят проверку контент-менеджерами. Вся схема выглядит следующим образом:

Главная проблема данной схемы - это скорость, несколько менеджеров в контексте общей загрузки обрабатывали около 5000 товаров в месяц, но данной скорости не хватало для закрытия входящих заявок, из-за чего и начал накапливаться операционный долг.
На момент принятия решения по автоматизации накопилось около 100 тыс. заявок.
Решение проблемы
Поскольку алгоритм действий менеджера относительно линейный, автоматизировать данный процесс не составляло труда. Главной фичей автоматизации стала верификация. Для этого мы решили использовать LLM. Нейронка анализирует название товара, его характеристики и категорию, а затем выдает вердикт и коэффициент уверенности. На основе уверенности, алгоритм уже принимает дальнейшие решения по товару. Мы написали сервис для нашей CRM. Агент внутри сервиса использовал следующий промпт:
Пример промпта для LLM
Ты — модератор каталога магазина.
Тебе передают товары: id, title, category, brand, fields.
Твоя задача — определить, соответствует ли товар его категории.
Пример проблемы:
- title: "Коврик для мыши"
- category: "Комод"
Это явное несоответствие.
Правила:
1. Если название и характеристики соответствуют категории, ставь valid=true и высокий confidence.
2. Если есть явное противоречие между названием, характеристиками и категорией, ставь valid=false.
3. Если данных мало или ты не уверен, снижай confidence.
4. Не выдумывай характеристики, которых нет.
5. Ответ должен быть только валидным JSON без markdown и без пояснений.
Формат ответа:
{
"results": [
{
"product_id": 123,
"valid": true,
"confidence": 95,
"reason": "Краткая причина на русском"
}
]
}
Требования:
- product_id должен быть тем же, что во входных данных.
- confidence от 0 до 100.
- reason до 200 символов.
- Если товар соответствует категории, причина может быть короткой, например: "Соответствует категории".Основная проблема работы с LLM это преобразование ответа для дальнейшей работы с данными. Для этого мы прописываем ожидаемую структуру в промте, так как не все модели поддерживают структурированный ответ. В случае же тех моделей, которые его поддерживают, мы можем передать ожидаемую JSON схему.
Пример схемы JSON
{
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "product_moderation",
"strict": true,
"schema": {
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product_id": { "type": "integer" },
"valid": { "type": "boolean" },
"confidence": { "type": "integer", "minimum": 0, "maximum": 100 },
"reason": { "type": "string", "maxLength": 200 }
},
"required": ["product_id", "valid", "confidence", "reason"],
"additionalProperties": false
}
}
},
"required": ["results"],
"additionalProperties": false
}
}
}
}Мы завершили тестирование данной фичи, и уже были готовы запускать ее на проде, как выходит новый класс моделей - System One, и все заговорили о новой модели Jev. Как заявляли разработчики, данный класс моделей в разы быстрее и дешевле классической LLM, вместо генерации текста и рассуждений он сразу выдаёт вероятности. По сути, это ровно то, что мы уже реализовали и получали от LLM. Взглянув на явные преимущества новой модели, в лице строгой типизации, которая сведет шанс возникновения ошибки при чтения ответа к нулю (часто бюджетные модели выдают ответ не в том формате, в котором ожидаешь), низкой стоимости и высокой скорости. И на основе уже написанного сервиса, реализовали новый. Много доработок не потребовалось, так как у нас изначально был заложен подход с оценкой уверенности. И изменения были минимальны. А вот результаты значительны.
Запрос к Jev для проверки категории и характеристик
{
"model": "typesafe/jev-1.13",
"state": {
"product": {
"id": 482915,
"title": "Кабель ВВГнг-LS 3х2,5",
"category": "Кабель силовой",
"brand": "Электрокабель",
"fields": [
{ "name": "Сечение", "value": "3х2,5" },
{ "name": "Тип", "value": "силовой" }
]
}
},
"questions": {
"category_match": {
"type": "noul",
"instructions": "Does the product belong to its assigned store category?",
"criteria": {
"true": "The product is a natural, correct member of this category.",
"false": "The product clearly belongs to a different category."
}
},
"fields_consistent": {
"type": "noul",
"instructions": "Are the product title and the listed characteristics mutually consistent for one and the same product?",
"criteria": {
"true": "The characteristics agree with the title and brand (same type, purpose, model).",
"false": "The characteristics contradict the title, type, purpose or brand."
}
}
}
}Ответ
{
"model": "jev-1.13.0",
"answers": {
"category_match": {
"type": "noul",
"noul": 0.94
},
"fields_consistent": {
"type": "noul",
"noul": 0.88
}
},
"usage": {
"input_tokens": 412,
"output_tokens": 0
}
}Плюс ко всему, система стала гибче, теперь у нас не один коэффициент, а отдельный для каждого вопроса (категория и характеристики).
Модель способна выполнять и другие сценарии. У нас есть необходимость определять категорию, так как товар может иметь корректные характеристики, но ошибочную категорию. И тут тоже нашлось применение для Jev.
Запрос к Jev на поиск подходящей категории
{
"model": "typesafe/jev-1.13",
"state": {
"product": {
"id": 482915,
"title": "Кабель ВВГнг-LS 3х2,5",
"category": "Кабель силовой",
"brand": "Электрокабель",
"fields": [
{ "name": "Сечение", "value": "3х2,5" },
{ "name": "Тип", "value": "силовой" },
{ "name": "Жилы", "value": "медные" }
]
}
},
"questions": {
"category": {
"type": "choice",
"instructions": "В какую категорию магазина правильно отнести этот товар?",
"criteria": {
"cable": "Провода и кабели (силовые, контрольные, монтажные).",
"breaker": "Автоматические выключатели, УЗО, дифавтоматы, защита.",
"socket": "Розетки, выключатели, подрозетники, рамки.",
"lighting": "Светильники, лампы, LED, драйверы.",
"panel": "Электрощиты, боксы, корпуса, DIN-рейки.",
"meter": "Счётчики и измерительные приборы.",
"tool": "Электроинструмент и оснастка.",
"mounting": "Крепёж, стяжки, гофра, аксессуары монтажа.",
"other": "Не подходит ни под одну категорию выше."
}
}
}
}
Ответ
{
"answers": {
"category": {
"type": "choice",
"choice": "cable",
"confidence": 0.98,
"probabilities": {
"cable": 0.98,
"mounting": 0.01,
"other": 0.01,
"breaker": 0.0,
"socket": 0.0,
"lighting": 0.0,
"panel": 0.0,
"meter": 0.0,
"tool": 0.0
}
}
}
}
Вывод
Важно помнить, что Jev - это достаточно ограниченный инструмент со своими преимуществами и недостатками.
Из преимуществ я бы выделил:
Типизированный ответ. В 100% случаях jev выдаст ожидаемый ответ. LLM же в свою очередь время от времени дает сбои, из-за чего появляются ошибки разбора JSON, особенно у бюджетных моделей.
Стоимость. Главная фишка модели в том, что на выходе она не имеет стоимости, в отличие от LLM. Помимо стоимости за за ответ, который получит пользователь, современные модели тратят токены и на рассуждение, что сильно увеличивает их общее расходуемое количество.
Скорость. Приятным бонусом к низкой стоимости в контексте данного проекта она выросла в 4 раза.
Недостатки, если их таковыми можно назвать:
Узкая роль. Важно помнить, что это ни в коем случае не замена LLM. Jev имеет строго ограниченный функционал. В нашем проекте все так же используется LLM, например, для разбора названия товара для дальнейшего поиска.
Новизна. Продукт анонсировали не так давно. Находится он на стадии активной разработки. Возможна не самая стабильная работа.
Если вы задались вопросом: "Добились ли вы 100% автоматизации?", то ответ: "Нет". В контексте нашего проекта нам удалось обработать 65% всех заявок, что все равно является крайне хорошим результатом. И подтверждает, что ИИ-автоматизация имеет место быть, но без фанатизма, в формате "фича ради фичи".
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.