У вас есть задача, которая каждую ночь выполняет 5,000 запросов, занимает два часа, и никто не смотрит на результат до утра. И вы платите за неё по тарифам реального времени — потому что где-то по пути «API» превратилось в «синхронный API», а пакетный endpoint со скидкой 50% так и не попал в архитектуру.
Это самая распространённая утечка в LLM-бюджетах 2026 года: работа, терпимая к задержкам, оплачивается по тарифам реального времени. Все крупные провайдеры уже снижают цену на асинхронные нагрузки примерно на 50% — рынок пакетных LLM API стандартизировался на половине цены: пакетный API от OpenAI с окном завершения ~24 часа, Message Batches от Anthropic с окном ~1 час, пакетный тариф Gemini и DeepSeek, встроивший ту же идею в пиковые и внепиковые расценки. Деньги лежат на столе, и этот гайд — о том, как их забрать: что такое пакетный API, матрица провайдеров, рабочий процесс, который можно скопировать, правило выбора между пакетным режимом и реальным временем, а также комбинированная математика, складывающая экономию от пакетной обработки с кэшированием и маршрутизацией.
Что такое пакетный API
Ключевой вывод: пакет = отправил сейчас, забрал позже, заплатил вдвое меньше — все крупные провайдеры пришли к единой модели.
Механизм везде одинаков: вы отправляете файл с запросами (JSONL), провайдер ставит его в очередь, обрабатывает по мере появления свободных мощностей, а вы забираете результаты, когда пакет завершится. Никакого стриминга и интерактивной задержки — скидка и есть компенсация за гибкость.
Матрица провайдеров на 2026 год:
| Провайдер | Скидка | Окно завершения | Примечания |
|---|---|---|---|
| OpenAI | ~50% | ~24 часа | эталонная реализация |
| Anthropic | ~50% | ~1 час | самое короткое окно из четырёх |
| Gemini | ~50% | гибкий тариф | пакет соответствует тарифу Flex inference |
| DeepSeek | внепиковые расценки | пиковые/внепиковые окна | та же идея, только по часам; действует с августа 2026 года |
Сравнение провайдеров отслеживает детали; паттерн везде одинаков — если можете подождать, платите вдвое меньше.
Почему пакетная обработка реально экономит деньги
Ключевой вывод: скидка 50% на самую крупную строку счёта — это ценовое решение, а не оптимизация.
Математика здесь намеренно скучная. Допустим, ваш ежемесячный счёт — $1,000, и 60% из них приходится на работу, терпимую к задержкам (evals, индексация, обогащение данных, ночная генерация). Переводим эти $600 на пакетную обработку: экономия $300 в месяц, $3,600 в год — при нулевом изменении качества. Выходные токены идентичны; разница только в том, когда они приходят.
Две оговорки, чтобы математика оставалась честной:
- Скидка действует на уровне провайдера, а не платформы. Унифицированный endpoint выставляет счёт по тарифам нижележащего провайдера — пакетные ставки проходят как пакетные ставки. Наш гайд по оптимизации расходов разбирает весь набор рычагов; пакетная обработка — рычаг с наименьшими инженерными затратами.
- Пакет — это не бесплатно. Это полцены. Вторая половина всё равно выигрывает от кэширования и маршрутизации — об этой комбинированной математике ниже, в пятом разделе.
Как построить пакетный рабочий процесс
Ключевой вывод: рабочий процесс состоит из четырёх частей — отправка, идемпотентность, сбор результатов, восстановление — и именно восстановление пропускают все.
Скелет, универсальный по форме: формат запроса описан в документации chat completions endpoint:
import json
from openai import OpenAI
client = OpenAI() # point at your provider or unified endpoint
# 1. Build the JSONL request file
with open("batch.jsonl", "w") as f:
for i, task in enumerate(tasks):
f.write(json.dumps({
"custom_id": f"task-{i}", # idempotency key — never omit
"method": "POST",
"url": "/v1/chat/completions",
"body": {"model": "gpt-4o-mini", "messages": task["messages"]},
}) + "\n")
# 2. Submit once — the custom_id makes retries safe
batch = client.batches.create(input_file=upload(batch_path), endpoint="/v1/chat/completions")
# 3. Poll or webhook until complete, then map results back by custom_id
# 4. Recover: failed rows get re-queued into the NEXT batch, not re-run inline
Четыре правила, которые делают этот рабочий процесс production-grade:
custom_id— это ваш контракт. Идемпотентность делает повторные попытки безопасными; без неё сетевой сбой при отправке дублирует работу и удваивает счёт.- Собирайте результаты по ID, а не по порядку. Результаты пакета приходят в произвольном порядке; сопоставляйте
custom_idсо своими записями, иначе дважды напишете неправильный join. - На масштабе webhook-уведомления побеждают polling. Callback о завершении заменяет цикл «проверять каждые 5 минут»; справочник кодов ошибок подскажет, какие сбои можно повторять.
- Восстановление — это очередь, а не костыль. Упавшие строки возвращаются в следующий цикл пакета. Команды, которые повторно запускают сбои inline, узнают о rate limits пакетного режима самым жёстким способом.
Как выбрать: пакетный режим или реальное время
Ключевой вывод: решение сводится к одному вопросу — может ли эта работа подождать? — с двумя явными исключениями, где ответ всегда «нет».
Правило принятия решения, без экивоков:
- Работа может подождать час? Пакетируйте.
- Может подождать день? Пакетируйте у провайдера с самым подходящим окном.
- Пользователь ждёт? Никогда не пакетируйте.
- Это агентный цикл? Никогда не пакетируйте.
Второе исключение заслуживает отдельного внимания: агентные циклы по объёму токенов выглядят как кандидаты на пакетную обработку, но их запросы причинно связаны — каждый вызов зависит от предыдущего — а значит, они интерактивны по своей природе. Архитектуры голосовых агентов и чат-ботов поддержки из этой серии интерактивны по той же причине. Пакетная обработка предназначена для параллелизуемой работы с дедлайном, а таких задач меньше, чем кажется большинству команд, — и тем ценнее эти 50% там, где они применимы.
Как складывать экономию: пакет × кэширование × маршрутизация
Ключевой вывод: пакет, кэширование и маршрутизация перемножаются — пакетная задача, переиспользующая кэшированные префиксы на бюджетной модели, стоит ничтожную долю наивной версии.
Три рычага не пересекаются — именно поэтому они складываются:
- Пакетная обработка — 50% от базовой ставки для работы, терпимой к задержкам.
- Кэширование промптов — кэшированные входные префиксы по цене ~0.1×, а пакетные задачи — идеальный кейс для кэширования: одни и те же шаблоны выполняются тысячи раз, поэтому байт-стабильные префиксы попадают в кэш почти всегда. Механика — в гайде по кэшированию; синергия с пакетной обработкой и есть множитель.
- Маршрутизация — выбор модели для пакета — это решение о маршрутизации: evals на фронтирной модели, потому что вы измеряете фронтир; обогащение на бюджетной модели, потому что результат никто не читает. Механика маршрутизации описана в документации по производственной оптимизации.
Разбор на примере: ночная задача по обогащению на 10M токенов. Базовая ставка на модели среднего уровня: $30. С пакетной обработкой: $15. Та же задача со стабильными префиксами, попадающими в кэш по 0.1× на входе (допустим, 80% токенов кэшируются): примерно $4-6. Та же задача, то же качество вывода — одна конфигурация маршрутизации и один стабильный шаблон промпта. Быстрый старт соберёт пайплайн за минуты; множитель — вот что даёт сложный процент.
Частые ошибки, раздувающие счёт
Ключевой вывод: четыре способа обнулить скидку — каждый из них незаметно превращает 50% обратно в 100%.
- Прогон evals по упавшим строкам. Запускайте evals только по завершённым строкам пакета; упавшие строки — это проблема качества данных, и их включение даёт фальшивую оценку, под которую вы начнёте оптимизироваться. Дисциплина evals в стиле CI из гайда по тестированию этой серии показывает нужный паттерн.
- Просрочка результатов. У результатов пакета есть окна хранения; задача, завершившаяся, пока вы в отпуске, и истёкшая до сбора, — это работа по полной цене без результата. Привязывайте сбор к событию завершения, а не к своему календарю.
- Игнорирование пакетных rate limits. Квоты пакетного режима отдельны от квот реального времени — команды, считающие лимиты одинаковыми, обнаруживают свой собственный потолок посреди пакета.
- Пропуск идемпотентности. Нет
custom_id— нет безопасного ретрая и пути восстановления: четыре самых дорогих символа, которые можно опустить.
FAQ
Сколько реально экономят пакетные API?
Около 50% на пакетных тарифах OpenAI, Anthropic и Gemini, а схема пиковых/внепиковых часов у DeepSeek — часовой аналог. Экономия считается за токен, поэтому она масштабируется вместе с вашим объёмом работы, терпимой к задержкам, — самой крупной строкой счёта в большинстве бюджетов.
Сколько времени занимает выполнение пакета?
Окно OpenAI — ~24 часа, Anthropic — ~1 час, Gemini привязан к своему тарифу Flex, а внепиковые окна DeepSeek определяются часами. Выбирайте провайдера, чьё окно вписывается в ваш дедлайн; скидка одинакова.
Можно ли запускать evals в пакетном режиме?
Да — evals это каноническая пакетная нагрузка. Запускайте их только по завершённым строкам, держите шаблон промпта байт-стабильным для попаданий в кэш и ставьте CI в зависимость от результата завершённого пакета.
Совместим ли пакетный режим с кэшированием промптов?
Исключительно хорошо — пакетные задачи повторяют одни и те же шаблоны тысячи раз, а это идеальный профиль для кэширования. Стабильные префиксы + пакет = складывающиеся скидки из этого гайда.
Какие нагрузки никогда нельзя отправлять в пакет?
Всё, чего ждёт пользователь, и всё причинно связанное — агентные циклы и интерактивный голос/чат интерактивны по своей природе. Решение о пакетной обработке сводится к вопросу «может ли это подождать», а не «достаточно ли это большое».
Передают ли унифицированные endpoints пакетные скидки?
Да — пакетные ставки это ставки провайдера, и endpoint выставляет счёт по тарифам провайдера со скидкой без изменений. Задача endpoint — один ключ и одна панель управления; эти 50% принадлежат провайдеру и проходят насквозь.
Итоги
Ландшафт пакетных LLM API в 2026 году поразительно стандартизирован: примерно 50% скидки у каждого крупного провайдера, а единственное реальное различие — окна завершения. Стратегия механическая: найдите долю нагрузки, терпимую к задержкам, переведите её в пакетный режим, держите префиксы стабильными, подбирайте модель под задачу — и комбинация пакетной обработки, кэширования и маршрутизации стабильно даёт 60-80% экономии относительно наивного счёта. Скидка лежит на столе; вопрос только в том, поднимет ли её ваша архитектура.
Возьмите терпимые к задержкам 60% вашего счёта и сократите их вдвое. Получите API-ключ TokSpan — $5 в подарок на ваш первый пакет — и пусть стоимость за задачу покажет вам экономию.