Nesta página, descrevemos como receber previsões em lote usando o BigQuery.
1. Preparar suas entradas
Entrada de armazenamento do BigQuery
- Sua conta de serviço precisa ter as permissões adequadas do BigQuery. Para conceder à conta de serviço o papel de Usuário do BigQuery,
use o comando 
gcloud iam service-accounts add-iam-policy-bindingda seguinte maneira: 
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/bigquery.user"
  Substitua os seguintes valores:
- PROJECT_ID: o projeto em que a conta de serviço foi criada.
 - SERVICE_ACCOUNT_ID: o ID da conta de serviço.
 - Uma coluna 
requesté obrigatória e precisa ser um JSON válido. Esses dados JSON representam sua entrada para o modelo. - O conteúdo da coluna 
requestprecisa corresponder à estrutura de umGenerateContentRequest. + A tabela de entrada pode ter tipos de dados de coluna diferentes derequest. Essas colunas podem ter tipos de dados do BigQuery, exceto os seguintes: array, struct, range, datetime e geography. Essas colunas são ignoradas para geração de conteúdo, mas incluídas na tabela de saída. 
| Exemplo de entrada (JSON) | 
|---|
        
         | 
    
2. Enviar um job em lote
É possível criar um job em lote usando o console do Google Cloud , o SDK do Google Gen AI ou a API REST.
O job e a tabela precisam estar na mesma região.
Console
- Na seção "Vertex AI" do console Google Cloud , acesse a página Inferência em lote.
 - Clique em Criar.
 
REST
Para criar um job de previsão em lote, use o método
projects.locations.batchPredictionJobs.create.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: uma região compatível com modelos do Gemini.
 - PROJECT_ID: o ID do projeto.
 - MODEL_PATH: o nome do modelo do editor, por exemplo, 
publishers/google/models/gemini-2.0-flash-001; ou o nome do endpoint ajustado, por exemplo,projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID, em que MODEL_ID é o ID do modelo ajustado. - INPUT_URI: a tabela do BigQuery em que a entrada de previsão em lote está localizada, como 
bq://myproject.mydataset.input_table. O conjunto de dados precisa estar na mesma região que o job de previsão em lote. Não há suporte para conjuntos de dados multirregionais. - OUTPUT_FORMAT: para gerar uma saída em uma tabela do BigQuery, especifique 
bigquery. Para gerar em um bucket do Cloud Storage, especifiquejsonl. - DESTINATION: para o BigQuery, especifique 
bigqueryDestination. No Cloud Storage, especifiquegcsDestination. - OUTPUT_URI_FIELD_NAME:
      Para o BigQuery, especifique 
outputUri. Para o Cloud Storage, especifiqueoutputUriPrefix. - OUTPUT_URI: para o BigQuery, especifique o local da tabela, como 
bq://myproject.mydataset.output_result. A região do conjunto de dados de saída do BigQuery precisa ser a mesma do job de previsão em lote da Vertex AI. Para o Cloud Storage, especifique o bucket e o local do diretório, comogs://mybucket/path/to/output. 
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
Corpo JSON da solicitação:
{
  "displayName": "my-bigquery-batch-prediction-job",
  "model": "MODEL_PATH",
  "inputConfig": {
    "instancesFormat": "bigquery",
    "bigquerySource":{
      "inputUri" : "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat": "OUTPUT_FORMAT",
    "DESTINATION": {
      "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
    }
  }
}
Para enviar a solicitação, escolha uma destas opções:
curl
      Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:
    
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs"
PowerShell
      Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:
    
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a seguinte.
A resposta inclui um identificador exclusivo para a job em lote. É possível pesquisar o status da job em lote usando BATCH_JOB_ID. Para mais informações, consulte Monitorar o status do job. Observação: não há suporte para os relatórios de conta de serviço personalizada, andamento em tempo real, CMEK e VPCSC.Python
Instalar
pip install --upgrade google-genai
Para saber mais, consulte a documentação de referência do SDK.
Defina variáveis de ambiente para usar o SDK de IA generativa com a Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
3. Monitorar o status e o progresso do job
Depois que o job for enviado, verifique o status dele usando a API, o SDK e o console do Cloud.
Console
- Acesse a página Inferência em lote.
 - Selecione o job em lote para monitorar o progresso.
 
REST
Para monitorar um job de previsão em lote, use o método
projects.locations.batchPredictionJobs.get e confira o campo CompletionStats na resposta.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- ENDPOINT_PREFIX: a região do
    recurso do modelo seguida por 
-. Por exemplo,us-central1-. Se estiver usando o endpoint global, deixe em branco. Observação:o endpoint global não é compatível com a inferência em lote usando modelos ajustados. - LOCATION: uma região compatível com
    modelos do Gemini. Se você estiver usando o endpoint global, insira 
global. - PROJECT_ID: o ID do projeto.
 - BATCH_JOB_ID: o ID do job em lote.
 
Método HTTP e URL:
GET https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/BATCH_JOB_ID
Para enviar a solicitação, escolha uma destas opções:
curl
Execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/BATCH_JOB_ID"
PowerShell
execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/BATCH_JOB_ID" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a seguinte.
Python
Instalar
pip install --upgrade google-genai
Para saber mais, consulte a documentação de referência do SDK.
Defina variáveis de ambiente para usar o SDK de IA generativa com a Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
O status de um determinado job em lote pode ser um dos seguintes:
JOB_STATE_PENDING: fila para capacidade. O job pode ficar no estadoqueuepor até 72 horas antes de entrar no estadorunning.JOB_STATE_RUNNING: o arquivo de entrada foi validado e o lote está sendo executado.JOB_STATE_SUCCEEDED: o lote foi concluído e os resultados estão prontos.JOB_STATE_FAILED: o arquivo de entrada falhou no processo de validação ou não pôde ser concluído dentro do período de 24 horas após entrar no estadoRUNNING.JOB_STATE_CANCELLING: o lote está sendo cancelado.JOB_STATE_CANCELLED: o lote foi cancelado
4. Recuperar saída em lote
Quando uma tarefa de previsão em lote é concluída, a saída é armazenada na tabela do BigQuery especificada na solicitação.
Para linhas concluídas, as respostas do modelo são armazenadas na coluna response.
Caso contrário, os detalhes do erro serão armazenados na coluna status para inspeção posterior.
Exemplo de saída
Exemplo bem-sucedido
{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "In a medium bowl, whisk together the flour, baking soda, baking powder."
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.14057204,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.14270912
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 8,
    "candidatesTokenCount": 396,
    "totalTokenCount": 404
  }
}
Exemplo com falha
Solicitação
{"contents":[{"parts":{"text":"Explain how AI works in a few words."},"role":"tester"}]}Resposta
Bad Request: {"error": {"code": 400, "message": "Please use a valid role: user, model.", "status": "INVALID_ARGUMENT"}}