· 1 мин

Groq молча выпилил модель, и парсер 6 дней не сохранял вакансии: уроки жизни на бесплатных LLM

Бесплатные LLM-модели у облачных провайдеров смертны: Groq снял llama-4-scout с бесплатного тарифа, и парсер вакансий 6 дней молча падал с 404 model_not_found. Спасает не общий healthcheck, а ротация моделей в конфиге и отдельный алерт именно на код model_not_found.

Groq без шума снял llama-4 с бесплатного тарифа, и парсер вакансий 6 дней молча падал с 404 model_not_found. Разбор инцидента, сломанного вотчера и почему бесплатные LLM-модели смертны.

Groq молча выпилил модель, и парсер 6 дней не сохранял вакансии: уроки жизни на бесплатных LLM

Работа с LLM в разработке на бесплатных тарифах выглядит как халява ровно до того утра, когда модель, на которой всё держится, просто перестаёт существовать. У меня так и вышло: 18 июля 2026 Groq тихо убрал модель llama-4-scout из бесплатного доступа, и мой парсер вакансий 6 дней молча падал с ошибкой 404 model_not_found. Никто не орал, графики не краснели - вакансии просто перестали сохраняться. Разбираю, как так вышло, почему сторож всё проспал и что с этим делать, если вы тоже живёте на чужих бесплатных моделях.

Что произошло: Groq молча выпилил бесплатную модель

Groq снял модель llama-4-scout с бесплатного тарифа, и с 18 июля 2026, 07:51, каждый запрос на извлечение вакансии возвращал 404 model_not_found. Парсер честно ходил в API, честно получал отлуп и шёл дальше - без вакансий. Простой длился 6 дней, до 24 июля, и всё это время сервис снаружи был совершенно жив.

Чтобы было понятно, что вообще сломалось. У меня есть парсер вакансий из телеграм-каналов: он берёт посты из десятков каналов и через LLM вытаскивает из них структуру - должность, зарплатную вилку, стек, контакты. Groq тут стоял как бесплатный движок для этого извлечения. Красивая схема, пока движок на месте.

А беда тихих падений в том, что они тихие. Извлечение не крэшило процесс - оно возвращало пустоту. Для парсера это выглядело как "в посте не было вакансии", а не как "всё сломано". Шесть дней подряд каждый пост оказывался "не вакансией", и никто по эту сторону экрана этого не заметил. Захардкодил одну модель - получил одну точку отказа, о которой даже не думал.

Почему сторож всё проспал: вотчер, который следил сам за собой

Watchdog - это отдельный процесс, который проверяет, что парсер жив, и должен был поймать шестидневную тишину. Не поймал по глупейшей причине: он искал живой процесс через pgrep -f, а pgrep находил сам себя - собственную командную строку с этим же паттерном внутри. Сторож видел "кто-то по этому шаблону есть" и спокойно шёл спать.

Это классические грабли pgrep -f: он матчит по всей командной строке, и строка самого pgrep (вместе с искомым паттерном) тоже попадает под совпадение. Получается self-match - процесс находит себя и радостно репортит, что цель жива. Лечится либо точным совпадением по имени через pgrep -x, либо якорем в регулярке вроде ^имя$, чтобы собственный аргумент не считался. У меня вотчер был написан наивно, поэтому он всю неделю честно сторожил пустое место и докладывал, что всё хорошо.

Мораль отдельным пунктом: сторож, который матчит сам себя, хуже отсутствия сторожа. Отсутствие сторожа честно молчит, а этот давал ложное чувство, что мониторинг есть. Я его снял и переписываю по-человечески.

model_not_found - это не сбой, а похороны модели

model_not_found (404) - это не временный сетевой сбой, а сигнал, что модель убрали навсегда. Ретраи, бэкоффы и "подождём, само поднимется" тут не помогут: поднимать нечего. И в этом главная ловушка - код ошибки выглядит как обычная пятисотка-подруга, а на деле это некролог.

Самое обидное - предупреждение было. Groq официально анонсировал депрекейт llama-4-scout ещё 17 июня 2026, с датой отключения 17 июля 2026, и разослал письма всем затронутым (см. список депрекейтов Groq). То есть модель не "внезапно" умерла - у меня был почти месяц. Просто на бесплатном и developer-тарифе это так и устроено: письмо на почту, пара месяцев жизни, потом 404. Enterprise-клиентов с обязательствами по спенду эти отключения не касаются вовсе. А на халяве ты сам себе SRE: не прочитал рассылку вовремя - ловишь тишину на проде.

Фикс: ротация моделей вместо одной захардкоженной

Сам фикс занял меньше вечера. Выкинул мёртвые llama-4 из ротации, поднял приоритет llama-3.3-70b-versatile, прогнал тестовое извлечение - 0.66 секунды, вилка и требования распарсились корректно. Всё, парсер снова видит вакансии.

Но вот где меня отрезвило. У llama-3.3-70b-versatile, которой я только что заткнул дыру, своя дата отключения - 16 августа 2026. То есть модель, ставшая спасением, сама уже на смертном одре, и через месяц спектакль повторится. Groq рекомендует переезжать на openai/gpt-oss-120b или qwen/qwen3.6-27b, но суть не в том, какую именно модель вписать. Суть в том, что любой пункт этого списка смертен.

Поэтому вывод не "перееду на модель поновее", а "ротация моделей - это не разовый фикс, а постоянная гигиена". В конфиге лежит список приоритетов, воркер идёт по нему сверху вниз, а мёртвую модель я просто вычёркиваю, не трогая код. Один захардкоженный идентификатор модели - мина замедленного действия с таймером от провайдера.

Бэкфилл недели: 631 сообщение, 257 вакансий и один забытый сервис

За шесть дней тишины накопился завал - 631 сообщение из 37 каналов. Я прогнал бэкфилл на живой уже модели: 257 вакансий сохранено, 138 дублей обновлено, и ровно одна ошибка на всю пачку - AI перепутала местами зарплатную вилку, поставила нижнюю границу вверх, а верхнюю вниз. На фоне 257 корректных разборов - терпимо, но в проде такое ловится только глазами.

И бытовой грабль на сдачу. На время бэкфилла парсер останавливали, чтобы он не дрался с массовым прогоном за одни и те же посты. А дальше классика: остановленный сервис легко забыть включить обратно. Пришлось заводить отдельную задачу-напоминалку "не забудь поднять парсер", иначе я бы сам себе устроил второй тихий простой, уже руками. Звучит смешно, а по граблям - ровно тот же сценарий забытого сервиса, что и с моделью.

Что забрать, если вы живёте на бесплатных LLM

Первое - у бесплатных провайдеров модели смертны, и планировать надо ротацию в конфиге, а не хардкод одной модели. Список приоритетов + вычёркивание мёртвых стоит один вечер, а спасает от шестидневных простоев.

Второе, и это ключевое - алерт вешайте именно на model_not_found и 404 от воркера, а не на общий healthcheck в духе "сервис отвечает". Мой сервис всю неделю прекрасно отвечал, просто отвечал пустотой. Общая проверка живости такое не ловит по определению - нужен сигнал на конкретный код ошибки от того куска, который реально ходит в LLM.

Третье - следите за changelog и рассылками провайдера, но не полагайтесь на то, что письмо про депрекейт вы прочитаете вовремя. У меня письмо было, а простой всё равно случился. Алерт на 404 надёжнее вашей почтовой дисциплины.

И четвёртое, вечное - проверяйте сам мониторинг. Вотчер, который матчит себя через pgrep -f, опаснее, чем его отсутствие: он рисует зелёную галочку над мёртвым сервисом. Если у вас где-то стоит похожая самодельная сторожилка - сходите и убедитесь, что она сторожит не саму себя.

Кстати, это уже не первый раз, когда LLM подводит меня посреди пайплайна - до этого модель отказывала прямо в процессе, и приходилось падать на резервную. Разные симптомы, вывод один: у чужой модели в основе пайплайна всегда должен быть план Б.

Такие дела. Пойду проверю, что там ещё по-тихому не отвалилось :)

Частые вопросы

Почему Groq возвращает ошибку model_not_found (404)?

Потому что модель сняли с обслуживания навсегда, а не временный сбой. На бесплатном и developer-тарифе Groq депрекейтит модели с рассылкой на почту и отключает примерно через два месяца; enterprise с обязательствами по спенду это не затрагивает. Не следишь за changelog - модель просто начинает отдавать 404.

Как отличить удаление модели от временного падения провайдера?

По коду и телу ошибки. model_not_found и 404 - это удаление модели, ретраи бесполезны; таймауты и 5xx - это временный сбой, тут помогает бэкофф. Общий healthcheck 'сервис отвечает' удаление модели не ловит, нужен алерт именно на этот код от воркера.

На какую модель Groq мигрировать после llama-4?

Groq рекомендует openai/gpt-oss-120b или qwen/qwen3.6-27b. Я временно перешёл на llama-3.3-70b-versatile, но и у неё дата отключения - 16 августа 2026. Так что это не финал, а очередная ротация: конкретная модель менее важна, чем сам механизм замены.

Влад Новиков
Влад Новиков aka sunm8
Пишу про AI-разработку без глянца. Новые разборы — сначала в канале.
Подписаться