AI-инжиниринг

Batch API: обрабатываем тысячи документов за полцены

Цели урока

  • Понять разницу real-time vs batch режимов и когда каждый уместен
  • Реализовать batch pipeline через OpenAI Batch API: JSONL, polling, результаты
  • Оценить Anthropic Batch API честно: возможности и известные ограничения 2026
  • Построить production-ready pipeline с retry, мониторингом, partial failures

100 000 документов нужно классифицировать. В real-time это невозможно и дорого. Batch API делает это за ночь и в 2 раза дешевле - паттерн, который знает каждый production AI-инженер.

  • OpenAI Batch API: 50% скидка, SLA 24h (большинство за 1-6h), поддерживает gpt-4o, gpt-4o-mini, embeddings
  • Anthropic Batch API: 50% скидка, до 10000 запросов/batch - documented reliability issues апрель 2026
  • Типичные batch задачи: ночная индексация документов, bulk классификация отзывов, SEO-оптимизация, bulk embeddings generation
  • 35-48% сокращение месячных LLM расходов при переводе 40-60% трафика на batch (measured в production)

Предварительные знания

  • Интеграция с LLM API: запросы, ответы, формат сообщений, обработка ошибок
  • Понимание токенов и стоимости: цена за input/output токены, из чего складывается счёт
  • Базовая работа с асинхронным кодом: polling, очереди, фоновые задачи
  • Cost management: контроль расходов на LLM
  • Интеграция с LLM API

Batch API: асинхронная обработка по половинной цене

До 2024 года массовая обработка данных через LLM была дорогой: каждый из сотен тысяч документов отправлялся синхронным запросом по полной цене, даже если результат был нужен только к утру. В 2024 году OpenAI запустила Batch API - асинхронный режим, в котором запросы собираются в один JSONL-файл, обрабатываются провайдером в течение окна 24 часа и возвращаются файлом результатов со скидкой 50% на input и output токены. Экономика проста: 24-часовой SLA позволяет провайдеру группировать задачи и использовать свободные GPU-мощности в непиковые часы - та же модель, те же веса, но лучшая утилизация железа. Это превратило целый класс задач (ночная индексация, bulk-классификация, генерация эмбеддингов, отчёты) из дорогих в почти бесплатные по сравнению с real-time. Позже аналогичный режим со скидкой 50% и лимитом до 10000 запросов на batch появился у Anthropic (Message Batches API). Ключевая инженерная деталь: каждый запрос несёт custom_id, потому что порядок результатов не гарантирован, и только по нему можно сопоставить ответ с исходным документом.

Синхронный vs асинхронный AI: два режима работы

100 000 документов нужно классифицировать. В real-time это невозможно и дорого. Batch API делает это за ночь и в 2 раза дешевле - паттерн, который знает каждый production AI-инженер.

Два режима работы с LLM API определяют разную архитектуру и разную стоимость:

КритерийСинхронныйBatch
Latency1-10 секунд1-24 часа
Цена (GPT-4o)USD 2.50/1M input tokensUSD 1.25/1M input tokens
User experienceИнтерактивныйФоновый процесс
Failure handlingRetry немедленноRetry по расписанию
МасштабДесятки/сотни в минутуМиллионы в день
Когда применятьUser-facing, <1s latency важна>1000 запросов, латентность не критична

Реальный ROI batch processing в production:

Исследования показывают: 35-48% сокращение месячных расходов на LLM API при переводе 40-60% трафика на batch режим. Типичные batch-eligible задачи: ночная индексация документов, bulk классификация, генерация отчётов, SEO-оптимизация контента.

Batch API стоит 50% от real-time цены потому что:

OpenAI Batch API: механика и практика

OpenAI Batch API: JSONL файл с запросами -> upload -> batch creation -> polling -> download results. SLA 24 часа, большинство батчей завершается за 1-6 часов.

ПараметрOpenAI Batch APIЗначение
Скидка50%GPT-4o: USD 2.50 -> USD 1.25 per 1M input
SLA24 часаБольшинство завершается за 1-6h
Макс. файл200 MB / 50K запросовОдин JSONL файл
Форматыchat completions, embeddingsНе все endpoints
ОтменаВозможнаДо начала обработки

OpenAI Batch API - наиболее зрелый и надёжный на рынке. Документация полная, статусы понятные, ошибки прозрачные. Для новых проектов batch processing стоит начинать с OpenAI.

В OpenAI Batch API для чего нужен custom_id в каждом запросе?

Anthropic Batch API: возможности и честные ограничения

Anthropic Message Batches API: те же 50% скидки, до 10000 запросов в одном batch. API работает, но имеет задокументированные проблемы надёжности (апрель 2026).

Задокументированные проблемы Anthropic Batch API (апрель 2026): непрозрачные ошибки без деталей (errored_request_count растёт без объяснений), отсутствие per-item прогресса в процессе обработки, невозможность отменить уже запущенный batch, редкие случаи когда весь batch молча завершается с 0 результатами. Для критических задач: мониторинг + fallback на real-time.

ПараметрOpenAI BatchAnthropic Batch
Скидка50%50%
Макс. запросов50K / файл (200MB)10K / batch
Формат вводаJSONL файлJSON массив в теле
ПрогрессСчётчики completed/failedТолько processing_status
ОтменаДаНет
Надёжность (2026)ВысокаяСредняя (known issues)
Когда выбиратьБольшие объёмы, надёжность важнаClaude-специфичные задачи, <10K запросов

Несмотря на ограничения, Anthropic Batch API экономически оправдан для задач, где нужен именно Claude: long-context анализ (200K контекст), следование сложным инструкциям, code review. Скидка 50% делает claude-sonnet-4-5 batch сопоставимым по цене с gpt-4o-mini real-time.

При каком условии стоит предпочесть OpenAI Batch API вместо Anthropic Batch API?

Pipeline для batch processing: retry, monitoring, partial failures

Production batch pipeline должен обрабатывать частичные сбои, отслеживать прогресс и корректно восстанавливаться. Наивный подход - потерять 5% результатов без уведомления.

ПроблемаСимптомРешение
Partial failure5-10% запросов возвращают errorОтфильтровать failed, retry через отдельный batch
Batch expiredBatch не завершился за 24hРазбить на меньшие части, проверить валидность JSONL
Нет прогресса (Anthropic)processing_status не меняется часамиТаймаут 26h + fallback на real-time
Потеря job stateСервер перезапустился - где batch?Сохранять batchId в DB до submission
Cost spikeBatch больше чем ожидалосьЛимит max tokens + мониторинг через cost alerts

Почему нужно сохранять batchId в базе данных сразу после submission?

Batch API - это просто очередь запросов, качество ответов хуже

Используется та же модель с теми же весами. Разница только в scheduling: провайдер обрабатывает в удобное время

GPT-4o в batch - это тот же GPT-4o. Anthropic batch - тот же claude-sonnet. Никакой деградации качества нет. Скидка - за гибкость по времени доставки.

Один большой batch лучше нескольких маленьких

Большие batches рискованнее: один bitfield failure может заблокировать всё. Оптимально - 1K-5K запросов, параллельные batches

Partial failures в batch не дают возможность retry проблемных частей без повторной обработки всего. Малые batches позволяют быстрый retry и лучший мониторинг прогресса.

Итоги

  • Batch API: 50% скидка за 24-часовой SLA - один из самых простых способов сократить AI расходы
  • OpenAI Batch: JSONL файл, polling статуса, прозрачные счётчики - зрелый и надёжный
  • Anthropic Batch: те же скидки, но max 10K/batch и known reliability issues (2026)
  • Обязательно: сохранять batchId в DB, обрабатывать partial failures, retry стратегия
  • Цена: GPT-4o USD 2.50 -> USD 1.25 per 1M input tokens в batch режиме

Вопросы для размышления

  • Какие задачи в текущей системе выполняются real-time, но могли бы быть отложены на несколько часов без ущерба для пользователей?
  • Как отлаживать Anthropic Batch API при непрозрачных ошибках - какую информацию логировать и как строить fallback?
  • При каком объёме запросов экономия от batch окупает сложность pipeline (retry, monitoring, DB для job state)?

Что дальше

Тысячи текстовых документов обработаны. Следующий frontier - голосовые агенты в production: latency, VAD, платформы.

  • Voice Agents в Production — Следующий урок: Vapi, LiveKit, Retell - голос который не обрывается
  • Cost Management — Batch API как часть общей стратегии оптимизации расходов
  • Caching — Кеширование дополняет batch: одинаковые запросы не платим дважды

Связанные уроки

  • aie-29-cost-management
  • aie-05-api-integration
  • aie-08-streaming
  • aie-28-caching-optimization
  • aie-22-model-routing
Batch API: обрабатываем тысячи документов за полцены

0

1

Войти