ИИ5 мин чтения

Дешевле всего обходится то, что до модели не доехало

Два наших сборщика перемалывают 62 миллиона знаков чужого текста. Разбор счёта показал, что расходы держит не цена за токен, а фильтр перед моделью.

Обновлено:

У нас два сборщика, которые каждый день читают чужой текст и выносят по нему суждение. Один следит за новостями об ИИ и криптоинфраструктуре, второй — за обсуждениями инди-предпринимателей. На 2 сентября 2026 года в их базах лежит 62,2 миллиона знаков сырого материала: 33,2 миллиона в первом, 29,0 миллиона во втором.

Это ровно та нагрузка, на которой обычно и обнаруживают, что счёт за модель вырос втрое. У нас он не вырос, и дело не в том, что мы что-то умное сделали с промптами. Ниже — решения, которые действительно держат расходы, и одно место, где наш собственный контроль расходов врёт.

Перед моделью стоит фильтр, который ничего не стоит

В сборщике обсуждений сейчас 19 264 треда. До разбора смыслом доехало 2 558 — тринадцать процентов. Остальное сняли детерминированные правила, не обращающиеся к модели вообще:

Причина отсеваЗаписей
SEO-простыни про IPTV13 298
нелатинский слаг в адресе2 340
автор в списке спамеров675
слишком короткий текст186
протухло105
остальные правила: язык, нелатиница, ссылочный спам, без метки102

Главное здесь не проценты, а то, что часть правил работает по адресу страницы, то есть до её забора. У SEO-спама поисковый запрос обязан лежать в URL, иначе вся затея не работает, — и это делает его опознаваемым бесплатно, ещё до сети.

Второе, что стоит перенять: причина отсева пишется в базу строкой. Не флаг «отсеяно», а «iptv-spam», «spam-author». Когда через месяц спрашиваешь, не выкидываем ли мы лишнее, ответ достаётся запросом, а не пересборкой.

Отсечка по свежести стоит перед классификацией, а не после

В сборщике новостей записи старше трёх дней до модели не доходят. Отсечка стоит именно перед разбором, и это не косметика: настоящая дата публикации известна только после того, как страница забрана. У части сайтов в карте сайта проставлен свежий lastmod на старых страницах — так к нам однажды приехали статьи 2023 года. Без отсечки мы бы за них заплатили, а в выдачу они бы всё равно не попали.

Шаг, выведенный из тарифицируемого API

За полтора месяца по 2 сентября в базе накопилось 3 550 оценок. Через платный API прошли 240 из них; остальные сделаны сессией — с 30 июля шаг классификации из ежедневного прогона убран, вместо него сессия читает неоценённое и возвращает вердикты, которые импортируются в ту же базу. Во втором сборщике так с самого начала: все 1 607 заметок сделаны сессией, через API — ни одной. (Заметок меньше, чем прошедших фильтр тредов: 951 ещё ждёт разбора.)

Это не универсальный совет: у такой схемы есть цена, и она в том, что шаг перестаёт быть автономным. Прогон по расписанию собирает и чистит, а суждение выносится, когда садишься работать. Для дайджеста, который выходит раз в неделю, это подходит; для продукта, который отвечает пользователю в реальном времени, — нет.

Где наш собственный контроль расходов врёт

Ограничение длины входа — первое, что ставят ради экономии. У нас их два, и ведут они себя по-разному.

Первый стоит на пути через платный API: текст обрезается на 40 000 знаков, одной строкой кода. Здесь важно быть точным. В базе тексты лежат целиком — те самые 33,2 миллиона знаков; обрезка происходит по дороге к модели. Прогони мы сегодня через этот лимит весь корпус, до модели не доехало бы 9,45 миллиона знаков — 28,5 % объёма, и всё это хвосты 115 самых длинных материалов, то есть 2,7 % записей. Под нож попадает самое длинное, а оно же обычно и самое содержательное. И нигде — ни в логе, ни в карточке записи — об этом не было ни слова.

Второй стоит на пути через сессию: в выгрузку идут только первые четыреста знаков. Но рядом, в шапке записи, стоит настоящая длина текста, а обрыв помечен многоточием.

Эта пометка появилась не из аккуратности, а по счёту. 9 августа 2026 года верхнюю оценку пачки — 85 из 100 — получил обрубок статьи CoinDesk на 265 знаков: сайт отдал заголовок с подзаголовком, а саму статью спрятал за JS-стеной. В выгрузке начало длинной статьи и короткий обрубок целиком выглядели одинаково — у обоих видно четыреста знаков. Оценили обещание заголовка, приняв его за материал.

Разница между двумя лимитами не в размере, а в том, что один себя объявляет, а второй нет. Это тот же класс дефекта, который мы разбирали на своём сканере: экономия, которую не видно, перестаёт быть решением и становится искажением. Лимиты мы не снимаем — они на месте по делу; мы приводим первый ко второму: с сегодняшнего дня обрезка пишется в лог прогона строкой — сколько знаков срезано и из скольких.

Ретраи считать своим классом отказа, а не чужим

Повторы в SDK покрывают ошибки HTTP: 429, пятисотые. У нас наблюдался другой сбой — HTTP 200 с пустым текстом, на котором разбор ответа падает. Для клиента это успешный ответ, и штатный ретрай на него не срабатывает. Пришлось завести свой: три попытки с нарастающей паузой, и повтор того же запроса проходил нормально.

Мораль общая для любой интеграции: список того, что считается отказом, у вашего поставщика и у вас разный. Совпадение проверяется на своих логах, а не по документации.

Чего мы не измерили — и не будем утверждать

Тут положено писать «экономия составила N процентов». У нас этих цифр нет, и придумывать их мы не станем.

  • Долларов мы не считали. Счётчика стоимости прогона в наших сборщиках нет — ни лога, ни отчёта. Всё, что выше, меряется в записях и знаках.
  • Сравнить дешёвую модель с дорогой на своих данных мы не можем. Двумя разными моделями у нас оценены ровно два материала из 3 550. Пересечение в две записи — это не выборка, и вывода о том, где дешёвая справилась бы, из него не сделать.
  • Про кеширование промпта нам сказать нечего. Ни одного замера кеша у нас не снято.

Правило

Самая дешёвая обработка — та, которой не было. Прежде чем подбирать модель подешевле и резать промпт, стоит посмотреть, какая доля входа вообще заслуживает модели. У нас это оказалось тринадцать процентов, и вытащил их не ИИ, а пара десятков детерминированных правил, которые таблица выше сводит к шести причинам.

И второе, ровно такой же важности: любое сокращение расходов обязано быть видимым в выходе. Обрезанный текст, пропущенная запись, отсечённый по возрасту материал — всё это должно оставлять след, иначе экономия однажды предъявит счёт не деньгами, а неверным выводом. Мы этот счёт себе уже выписали — 28,5 % корпуса, о которых отчёт молчит.

Если вы собираете такой контур у себя и не уверены, где в нём деньги, — это ровно та работа, которую мы делаем.

Сергей Палий

Основатель, Sepia Software

Обо мне

Читать дальше

Все статьи