Как отправлять запросы в Gemini Batch API и платить вдвое меньше

Как отправлять запросы в Gemini Batch API и платить вдвое меньше

Для оценивания моделей или предварительной обработки данных немедленный ответ часто не нужен, а расходы на API остаются. Gemini Batch API обрабатывает запросы асинхронно и, как пишет Google в документации, обходится вдвое дешевле обычного интерактивного API той же модели.

Целевой срок выполнения составляет 24 часа: задания могут завершаться раньше, но время зависит от их размера и нагрузки системы. Я бы переносила сюда задачи, результат которых не нужен пользователю в текущем сеансе. Если от ответа зависит следующий шаг в интерфейсе, пакетный режим не подходит.

Небольшой пакет задаётся списком объектов GenerateContentRequest прямо в запросе создания задания; общий размер должен быть меньше 20MB. Для файлового ввода нужен JSONL: в каждой строке поля key и request с допустимым GenerateContentRequest. Например, key можно задать как «eval», а в ответе по этому ключу найти результат исходного запроса. Файл загружается через File API, предел размера составляет 2GB.

Шлюз Kosareva Cloud совместим с API OpenAI и Anthropic и передаёт параметры запроса без изменений. Совместимость с этими API сама по себе не подтверждает поддержку пакетного режима Gemini. У Google Batch API работает только с generateContent; поддержку конкретной модели нужно сверить на странице Models.

Статус задания проверяется методом get в batches у client, с параметром name со значением job_name. После завершения нужно проверить failedRequestCount в batchStats: отдельные запросы могли завершиться ошибкой. При файловом вводе результат приходит в JSONL, где строка содержит GenerateContentResponse либо объект статуса.

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

11