API Gemini Batch предназначен для асинхронной обработки больших объемов запросов со скоростью, составляющей 50% от стандартной . Целевое время выполнения составляет 24 часа, но в большинстве случаев оно значительно быстрее.
Используйте Batch API для крупномасштабных, несрочных задач, таких как предварительная обработка данных или проведение оценок, где не требуется немедленный ответ.
Создание пакетного задания
В Batch API у вас есть два способа отправлять запросы:
- Встроенные запросы : список объектов
GenerateContentRequestнепосредственно включенных в ваш пакетный запрос на создание контента. Это подходит для небольших пакетов, общий размер запроса которых не превышает 20 МБ. Результатом работы модели является список объектовinlineResponse. - Входной файл : файл JSON Lines (JSONL) , где каждая строка содержит полный объект
GenerateContentRequest. Этот метод рекомендуется для больших запросов. Выходные данные , возвращаемые моделью, представляют собой файл JSONL, где каждая строка является либо объектомGenerateContentResponse, либо объектом статуса.
Встроенные запросы
Для небольшого количества запросов вы можете напрямую встраивать объекты GenerateContentRequest в ваш BatchGenerateContentRequest . В следующем примере метод BatchGenerateContent вызывается с помощью встроенных запросов:
Python
from google import genai
from google.genai import types
client = genai.Client()
# A list of dictionaries, where each is a GenerateContentRequest
inline_requests = [
{
'contents': [{
'parts': [{'text': 'Tell me a one-sentence joke.'}],
'role': 'user'
}]
},
{
'contents': [{
'parts': [{'text': 'Why is the sky blue?'}],
'role': 'user'
}]
}
]
inline_batch_job = client.batches.create(
model="gemini-3.7-flash",
src=inline_requests,
config={
'display_name': "inlined-requests-job-1",
},
)
print(f"Created batch job: {inline_batch_job.name}")
JavaScript
import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({});
const inlinedRequests = [
{
contents: [{
parts: [{text: 'Tell me a one-sentence joke.'}],
role: 'user'
}]
},
{
contents: [{
parts: [{'text': 'Why is the sky blue?'}],
role: 'user'
}]
}
]
const response = await ai.batches.create({
model: 'gemini-3.7-flash',
src: inlinedRequests,
config: {
displayName: 'inlined-requests-job-1',
}
});
console.log(response);
ОТДЫХ
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-3.7-flash:batchGenerateContent \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-X POST \
-H "Content-Type:application/json" \
-d '{
"batch": {
"display_name": "my-batch-requests",
"input_config": {
"requests": {
"requests": [
{
"request": {"contents": [{"parts": [{"text": "Describe the process of photosynthesis."}]}]},
"metadata": {
"key": "request-1"
}
},
{
"request": {"contents": [{"parts": [{"text": "Describe the process of photosynthesis."}]}]},
"metadata": {
"key": "request-2"
}
}
]
}
}
}
}'
Входной файл
Для обработки больших наборов запросов подготовьте файл JSON Lines (JSONL). Каждая строка в этом файле должна представлять собой объект JSON, содержащий заданный пользователем ключ и объект запроса, где запрос является допустимым объектом GenerateContentRequest . Заданный пользователем ключ используется в ответе для указания того, какой результат является следствием какого запроса. Например, ответ на запрос с ключом request-1 будет аннотирован тем же именем ключа.
Этот файл загружается с помощью File API . Максимально допустимый размер входного файла составляет 2 ГБ.
Ниже приведён пример JSONL-файла. Вы можете сохранить его в файле с именем my-batch-requests.json :
{"key": "request-1", "request": {"contents": [{"parts": [{"text": "Describe the process of photosynthesis."}]}], "generation_config": {"temperature": 0.7}}}
{"key": "request-2", "request": {"contents": [{"parts": [{"text": "What are the main ingredients in a Margherita pizza?"}]}]}}
Аналогично встроенным запросам, вы можете указывать другие параметры, такие как системные инструкции, инструменты или другие конфигурации, в каждом JSON-запросе.
Вы можете загрузить этот файл, используя File API , как показано в следующем примере. Если вы работаете с мультимодальным вводом, вы можете ссылаться на другие загруженные файлы в своем JSONL-файле.
Python
import json
from google import genai
from google.genai import types
client = genai.Client()
# Create a sample JSONL file
with open("my-batch-requests.jsonl", "w") as f:
requests = [
{"key": "request-1", "request": {"contents": [{"parts": [{"text": "Describe the process of photosynthesis."}]}]}},
{"key": "request-2", "request": {"contents": [{"parts": [{"text": "What are the main ingredients in a Margherita pizza?"}]}]}}
]
for req in requests:
f.write(json.dumps(req) + "\n")
# Upload the file to the File API
uploaded_file = client.files.upload(
file='my-batch-requests.jsonl',
config=types.UploadFileConfig(display_name='my-batch-requests', mime_type='jsonl')
)
print(f"Uploaded file: {uploaded_file.name}")
JavaScript
import {GoogleGenAI} from '@google/genai';
import * as fs from "fs";
import * as path from "path";
import { fileURLToPath } from 'url';
const ai = new GoogleGenAI({});
const fileName = "my-batch-requests.jsonl";
// Define the requests
const requests = [
{ "key": "request-1", "request": { "contents": [{ "parts": [{ "text": "Describe the process of photosynthesis." }] }] } },
{ "key": "request-2",