Как отправлять запросы в 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 либо объект статуса.
Повторная отправка запроса создания запускает отдельное задание. Поэтому я бы начала с небольшого пакета и сохранения его имени: дальше можно проверять статус существующего задания, не создавая дубликат. До переноса основного объёма стоит разобрать и успешные ответы, и ошибки этого пакета.