LLM költségek в продакшене: как JobPath сократил счёт с $2000 до $29 в месяц
Пост-обработка вакансий в продакшене обходится командам дорого, и реальный кейс JobPath показывает, как перейти с дорогой модели на дешёвую без потери работающего пайплайна, сократив расходы в десятки раз.

Один вызов LLM за 5 центов превращается в 2 000 долларов в месяц, когда каталог растёт, и эта математика одинакова для любого сервиса, который обрабатывает неструктурированный русскоязычный контент пачками.
Команда JobPath каждую ночь автоматически собирает вакансии из открытых источников и Telegram-каналов, превращая сырой текст в структурированную карточку. Сначала задачу решала Claude Sonnet, но при стоимости 0,0485 доллара за вакансию месячный счёт дорос до 2 000 долларов и продолжал расти вместе с каталогом. Публикация в блоге JobPath описывает, как команда перешла на модель, которая стоит в 70 раз дешевле, и какие грабли попались по дороге.
Что понадобится
- Рабочий пайплайн обработки текста через LLM с жёсткой JSON-схемой (tool call, то есть вызов функции с заранее описанной структурой ответа)
- Доступ к нескольким моделям через агрегатор (OpenRouter или аналог), чтобы переключаться одной переменной окружения
- Набор для оценки качества (эвал): 50 реальных примеров из вашего продакшена, максимально разных по длине, формату и наличию данных
- Модель-судья для слепого сравнения результатов (в кейсе JobPath использовали Opus)
- Время: вечер на эвал, неделя на обвязку и тестирование в бою
Как перейти на дешёвую модель и не сломать продукт?
-
Докажите ценность на лучшей модели, потом оптимизируйте. JobPath начинал с Claude Sonnet. Когда фича только запускается, вопрос «работает ли вообще» важнее вопроса «сколько стоит». Дорогая модель даёт чистый сигнал: если результат плохой, проблема в задаче, а не в модели.
-
Соберите эвал из реальных данных. 50 вакансий из продакшена: длинные и короткие, с зарплатой и без, IT и не IT, посты из Telegram с эмодзи и голый HTML. Каждую прогоните через всех кандидатов по одной и той же схеме.
-
Оцените результаты вслепую. Модель-судья получает исходный текст и две карточки без указания авторства. Оценки ставятся по конкретным критериям: полнота, точность, качество русского языка, адекватность зарплатной оценки. JobPath использовали для этого Opus. Выборочно проверьте треть результатов вручную.
-
Разделяйте «качество текста» и «пригодность для продакшена». В эвале JobPath модель Qwen3-235B писала лучший русский текст, но в половине случаев не могла извлечь зарплату, а в остальных иногда путала 3 миллиона в год с 3 миллионами в месяц. В продакшен поехала не она. Аналогично DeepSeek: прекрасно понимал вакансии, но упорно возвращал поле
requirementsстрокой с буллетами вместо массива строк. Формально ответ, фактически сломанный пайплайн. -
Выберите модель и выстройте защитный слой. JobPath выбрали модель в 70 раз дешевле Sonnet. Качество по их шкале просело с 4,48 до 4,06 (шкалу создавали с помощью сервиса Fable). Но вокруг дешёвой модели пришлось построить обвязку, которая с Sonnet была не нужна. Конкретные проверки описаны ниже.
-
Добавьте валидацию каждого поля.
# Пример: поле difficulty приходит то объектом, то строкой
if isinstance(data["difficulty"], str):
data["difficulty"] = {"score": None, "comment": data["difficulty"]}
score = data["difficulty"].get("score")
Без такой проверки одна кривая вакансия роняла весь батч (пакет обработки). Теперь каждая вакансия обёрнута в свой блок обработки ошибок: одна сломалась, остальные доехали.
-
Ретрайте на уровне бизнес-логики, а не HTTP. Агрегатор может вернуть код 200 (то есть «всё хорошо»), tool call на месте, имя функции правильное, а внутри пустой объект. Обычные HTTP-ретраи (повторные запросы при ошибке сервера) не сработают, потому что ошибки формально нет. Обёртка вокруг вызова должна проверять, что обязательные поля на месте, и повторять запрос с паузой.
-
Обрабатывайте списки-строки. Дешёвые модели иногда возвращают одну строку с буллетами вместо массива. Напишите функцию, которая разбивает такую строку обратно в массив (коэрсия типов).
-
Нормализуйте зарплаты явно. Если в тексте вакансии указана зарплата в долларах или годовая сумма, модель должна пересчитать в рубли в месяц. Дешёвые модели путают периоды (годовая вместо месячной) чаще дорогих. Добавьте проверку диапазона: месячная зарплата в 3 миллиона рублей для рядовой позиции, это сигнал ошибки.
-
Проверяйте ключи и биллинг, а не только статус провайдера. Протухший ключ шлюза может отвечать кодами 502 и 529 Overloaded вместо честного «ключ невалиден». Правило JobPath: если «инцидент» длится дольше 15 минут и не подтверждается статус-страницей провайдера, проверяйте ключ и биллинг. Один недосмотр в обработке ошибок биллинга сжёг у команды 16 000 вызовов за ночь.
Что с этого вам прямо сейчас?
Автору Дзена. Если вы используете LLM для пакетной обработки текстов (рерайт, структурирование, классификация), логика та же: начните с дорогой модели, зафиксируйте качество как эталон, потом переключитесь на дешёвую и замерьте разницу. Не на глаз, а на выборке из 30 от 50 реальных примеров.
Маркетологу. Расходы на LLM в пайплайне растут линейно с объёмом данных. Когда вы обрабатываете отзывы, лиды или каталог товаров, переход на дешёвую модель с валидацией может снизить статью расходов в десятки раз. Но бюджет на обвязку (код проверок и ретраев) закладывайте сразу.
Предпринимателю в РФ. Кейс JobPath построен на русскоязычных вакансиях, и грабли характерны именно для русского языка: путаница в зарплатных периодах (годовая и месячная), нормализация навыков (Postgres и PostgreSQL как один навык), обработка постов из Telegram. Из доступных в РФ моделей для аналогичных задач подойдут YandexGPT и GigaChat, но эвал придётся собирать свой.
JobPath перешли с Claude Sonnet (0,0485 доллара за вакансию, около 2 000 долларов в месяц) на модель в 70 раз дешевле. Качество карточек по слепой оценке модели-судьи снизилось с 4,48 до 4,06 из 5. При этом карточки остались пригодными для фильтров, поиска и почтовых подборок. Экономия составила десятки раз по стоимости инференса (обработки запросов моделью). Цена: неделя на обвязку из валидаций, ретраев и приведения типов.
Не проверять ответ с кодом 200. Агрегатор возвращает «успех», а внутри пустой объект. Без проверки на уровне бизнес-логики вы получите пустые карточки в базе и узнаете об этом, когда пользователи пожалуются.
Одна ошибка роняет весь батч. Если цикл обработки не оборачивает каждый элемент отдельно, одно кривое поле убивает сотни нормальных записей.
Путать «инцидент провайдера» с мёртвым ключом. Код 502 не всегда означает перегрузку. Проверяйте ключи и баланс, прежде чем ждать восстановления.
Выбирать модель по качеству текста, а не по дисциплине. Красивый русский язык бесполезен, если модель не соблюдает JSON-схему или путает годовую зарплату с месячной.
Игнорировать ошибки биллинга. Недосмотр может привести к тысячам лишних вызовов за ночь, как случилось у JobPath с 16 000 запросов.
Кейс JobPath честный и полезный именно потому, что команда не скрывает цену перехода. Экономия в 70 раз звучит как мечта, но за ней стоит неделя инженерной работы и защитный слой кода, который с дорогой моделью просто не нужен. По моим наблюдениям, это типичный размен для любого русскоязычного пайплайна: дешёвые модели хуже держат структуру именно на русском, и валидация обязательна. Если у вас нет разработчика, который напишет обвязку, дешёвая модель может обойтись дороже дорогой за счёт ручного разбора ошибок. Начинайте с эвала: 50 примеров и слепая оценка покажут реальную картину за вечер.
Попробуйте генератор промптов dzen.guru
Соберите структурированный промпт для пакетной обработки текстов и проверьте, как ваша модель справляется с JSON-схемой на реальных данных.
ПопробоватьГлавный урок из кейса JobPath: дешёвая модель ломается не в интеллекте, а в дисциплине, и чинится не промптом, а кодом вокруг неё.

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

Корпоративные LLM без защитного шлюза: четыре уязвимости, которые ведут к утечкам и штрафам
Корпоративные LLM (большие языковые модели, развёрнутые внутри компании для рабочих задач) за последний год прошли путь от экспериментов энтузиастов до…
Умные очки Halliday Gen 2 за $599: без камеры, но с ИИ-суфлёром на 45 языках
Почему это важно Умные очки без камеры, заточенные под рабочие встречи с живой расшифровкой на 45 языках, впервые целятся не в развлечения, а в корпоративный…

Бот QuotaRadar отслеживает сброс API лимитов Codex и Claude Code через Telegram
Почему это важно Русскоязычные разработчики, работающие с Codex и Claude Code, теперь могут узнавать о сбросе API лимитов через Telegram, а не вручную…
Комментарии