Ricevi previsioni batch per Gemini

Le previsioni batch sono un modo per inviare in modo efficiente più prompt multimodali che non sono sensibili alla latenza. A differenza della previsione online, in cui il limite è limitato a un prompt di input alla volta, puoi inviare un numero elevato di prompt multimodali in una singola richiesta batch. Quindi, le risposte vengono compilate in modo asincrono nella posizione di output dello spazio di archiviazione BigQuery.

Modelli multimodali che supportano le previsioni batch

I seguenti modelli multimodali supportano le previsioni batch.

  • gemini-1.5-flash-001
  • gemini-1.5-pro-001
  • gemini-1.0-pro-002
  • gemini-1.0-pro-001

Prepara gli input

Le richieste batch per i modelli multimodali accettano solo origini di archiviazione BigQuery. Per saperne di più, consulta Panoramica dello spazio di archiviazione di BigQuery. Archivia l'input in una tabella BigQuery con una colonna JSON denominata request.

  • I contenuti nella colonna request devono essere in formato JSON valido.
  • I contenuti delle istruzioni JSON devono corrispondere alla struttura di un GenerateContentRequest.
  • La tabella di input può avere colonne diverse da Request. Vengono ignorate per la generazione di contenuti, ma incluse nella tabella di output. Il sistema prenota due nomi di colonna per l'output: Response e Status. Vengono utilizzati per fornire informazioni sui risultati del job di previsione batch.
  • La previsione batch non supporta il campo fileData per Gemini.

Esempio di input BigQuery

request
{
  "contents": [
    {
      "role": "user",
      "parts": {
        "text": "Give me a recipe for banana bread."
      }
    }
  ],
  "system_instruction": {
    "parts": [
      {
        "text": "You are a chef."
      }
    ]
  }
}

Richiedi una risposta batch

A seconda del numero di elementi di input che hai inviato, il completamento di un'attività di generazione in batch può richiedere del tempo.

REST

Per testare un prompt multimodale utilizzando l'API Vertex AI, invia una richiesta POST all'endpoint del modello del publisher.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: il nome del tuo progetto Google Cloud.
  • BP_JOB_NAME: un nome che scegli per il tuo lavoro.
  • INPUT_URI: l'URI di origine di input. Questo è un URI della tabella BigQuery nel formato bq://PROJECT_ID.DATASET.TABLE.
  • OUTPUT_URI: l'URI BigQuery della tabella di output di destinazione, nel formato bq://PROJECT_ID.DATASET.TABLE. Se la tabella non esiste già, viene creata automaticamente.

Metodo HTTP e URL:

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs

Corpo JSON della richiesta:

{
    "displayName": "BP_JOB_NAME",
    "model": "publishers/google/models/gemini-1.0-pro-002",
    "inputConfig": {
      "instancesFormat":"bigquery",
      "bigquerySource":{
        "inputUri" : "INPUT_URI"
      }
    },
    "outputConfig": {
      "predictionsFormat":"bigquery",
      "bigqueryDestination":{
        "outputUri": "OUTPUT_URI"
        }
    }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs"

PowerShell

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/{PROJECT_ID}/locations/us-central1/batchPredictionJobs/{BATCH_JOB_ID}",
  "displayName": "My first batch prediction",
  "model": "projects/{PROJECT_ID}/locations/us-central1/models/gemini-1.0-pro-002",
  "inputConfig": {
    "instancesFormat": "bigquery",
    "bigquerySource": {
      "inputUri": "bq://{PROJECT_ID}.mydataset.batch_predictions_input"
    }
  },
  "modelParameters": {},
  "outputConfig": {
    "predictionsFormat": "bigquery",
    "bigqueryDestination": {
      "outputUri": "bq://{PROJECT_ID}.mydataset.batch_predictions_output"
    }
  },
  "state": "JOB_STATE_PENDING",
  "createTime": "2023-07-12T20:46:52.148717Z",
  "updateTime": "2023-07-12T20:46:52.148717Z",
  "modelVersionId": "1"
}

La risposta include un identificatore univoco per il job batch. Puoi eseguire il polling dello stato del job batch utilizzando BATCH_JOB_ID fino a quando il job state non è JOB_STATE_SUCCEEDED. Ad esempio:

curl \
  -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs/BATCH_JOB_ID

Recuperare l'output batch

Quando viene completata un'attività di previsione batch, l'output viene archiviato nella tabella BigQuery specificata nella richiesta.

Esempio di output BigQuery

request risposta stato
'{"content":[{...}]}'
{
  "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
  }
}

Passaggi successivi