Prédictions par lots avec les modèles Anthropic Claude

Les prédictions par lots vous permettent d'envoyer plusieurs requêtes qui ne sont pas sensibles à la latence à un modèle Anthropic Claude. Contrairement aux prédictions en ligne, où vous envoyez une requête d'entrée pour chaque requête, vous pouvez regrouper un grand nombre de requêtes d'entrée en une seule.

Modèles Anthropic Claude compatibles

Vertex AI est compatible avec les prédictions par lots pour les modèles Anthropic Claude suivants :

Quotas

Par défaut, le nombre de requêtes par lot simultanées que vous pouvez effectuer dans un même projet est de quatre.

Préparer l'entrée

Avant de commencer, préparez votre ensemble de données d'entrée dans une table BigQuery ou sous forme de fichier JSONL dans Cloud Storage. L'entrée pour les deux sources doit respecter le format JSON du schéma de l'API Anthropic Claude, comme illustré dans l'exemple suivant :

{
  "custom_id": "request-1",
  "request":  {
    "messages": [{"role": "user", "content": "Hello!"}],
    "anthropic_version": "vertex-2023-10-16",
    "max_tokens": 50
  }
}

BigQuery

Votre table d'entrée BigQuery doit respecter le schéma suivant :

Nom de la colonne Description
custom_id Un ID pour chaque requête afin de faire correspondre l'entrée à la sortie.
request Le corps de la requête, qui correspond à votre requête d'entrée et doit respecter le schéma de l'API Anthropic Claude.
  • Votre table d'entrée peut comporter d'autres colonnes, qui sont ignorées par le job par lot.
  • Les jobs de prédiction par lots réservent deux noms de colonnes pour la sortie de prédiction par lots : response(JSON) et status. N'utilisez pas ces colonnes dans la table d'entrée.

Cloud Storage

Pour Cloud Storage, le fichier d'entrée doit être un fichier JSONL situé dans un bucket Cloud Storage.

Demander une prédiction par lots

Effectuez une prédiction par lots sur un modèle Claude à l'aide d'entrées provenant de BigQuery ou de Cloud Storage. Vous pouvez choisir d'exporter les prédictions vers une table BigQuery ou un fichier JSONL dans un bucket Cloud Storage.

BigQuery

Spécifiez votre table d'entrée, votre modèle et votre emplacement de sortie BigQuery. Le job de prédiction par lots et votre table doivent se trouver dans la même région.

Python

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

import time

from google import genai
from google.genai.types import CreateBatchJobConfig, JobState, HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))

# TODO(developer): Update and un-comment below line
# output_uri = f"bq://your-project.your_dataset.your_table"

job = client.batches.create(
    # Check Anthropic Claude region availability in https://cloud.devsite.corp.google.com/vertex-ai/generative-ai/docs/partner-models/use-claude#regions
    # More about Anthropic model: https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-3-5-haiku
    model="publishers/anthropic/models/claude-3-5-haiku",
    # The source dataset needs to be created specifically in us-east5
    src="bq://python-docs-samples-tests.anthropic_bq_sample.test_data",
    config=CreateBatchJobConfig(dest=output_uri),
)
print(f"Job name: {job.name}")
print(f"Job state: {job.state}")
# Example response:
# Job name: projects/%PROJECT_ID%/locations/us-central1/batchPredictionJobs/9876453210000000000
# Job state: JOB_STATE_PENDING

# See the documentation: https://googleapis.github.io/python-genai/genai.html#genai.types.BatchJob
completed_states = {
    JobState.JOB_STATE_SUCCEEDED,
    JobState.JOB_STATE_FAILED,
    JobState.JOB_STATE_CANCELLED,
    JobState.JOB_STATE_PAUSED,
}

while job.state not in completed_states:
    time.sleep(30)
    job = client.batches.get(name=job.name)
    print(f"Job state: {job.state}")
# Example response:
# Job state: JOB_STATE_PENDING
# Job state: JOB_STATE_RUNNING
# Job state: JOB_STATE_RUNNING
# ...
# Job state: JOB_STATE_SUCCEEDED

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION : région compatible avec le modèle Anthropic Claude sélectionné (voir Régions Claude).
  • PROJECT_ID : ID de votre projet.
  • MODEL : nom du modèle.
  • INPUT_URI : table BigQuery où se trouve votre entrée de prédiction par lots, par exemple bq://myproject.mydataset.input_table.
  • OUTPUT_FORMAT : pour générer une sortie dans une table BigQuery, spécifiez bigquery. Pour générer la sortie dans un bucket Cloud Storage, spécifiez jsonl.
  • DESTINATION : pour BigQuery, spécifiez bigqueryDestination. Pour Cloud Storage, spécifiez gcsDestination.
  • OUTPUT_URI_FIELD_NAME : pour BigQuery, spécifiez outputUri. Pour Cloud Storage, spécifiez outputUriPrefix.
  • OUTPUT_URI : pour BigQuery, spécifiez l'emplacement de la table, par exemple bq://myproject.mydataset.output_result. Pour Cloud Storage, spécifiez l'emplacement du bucket et du dossier, par exemple gs://mybucket/path/to/outputfile.

Méthode HTTP et URL :

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

Corps JSON de la requête :

'{
  "displayName": "JOB_NAME",
  "model": "publishers/anthropic/models/MODEL",
  "inputConfig": {
    "instancesFormat":"bigquery",
    "bigquerySource":{
      "inputUri" : "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat":"OUTPUT_FORMAT",
    "DESTINATION":{
      "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
    }
  }
}'

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON semblable à la suivante.

Cloud Storage

Spécifiez l'emplacement Cloud Storage, le modèle et l'emplacement de sortie de votre fichier JSONL.

Python

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

import time

from google import genai
from google.genai.types import CreateBatchJobConfig, JobState, HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))
# TODO(developer): Update and un-comment below line
# output_uri = "gs://your-bucket/your-prefix"

# See the documentation: https://googleapis.github.io/python-genai/genai.html#genai.batches.Batches.create
job = client.batches.create(
    # More about Anthropic model: https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-3-5-haiku
    model="publishers/anthropic/models/claude-3-5-haiku",
    # Source link: https://storage.cloud.google.com/cloud-samples-data/batch/anthropic-test-data-gcs.jsonl
    src="gs://cloud-samples-data/anthropic-test-data-gcs.jsonl",
    config=CreateBatchJobConfig(dest=output_uri),
)
print(f"Job name: {job.name}")
print(f"Job state: {job.state}")
# Example response:
# Job name: projects/%PROJECT_ID%/locations/us-central1/batchPredictionJobs/9876453210000000000
# Job state: JOB_STATE_PENDING

# See the documentation: https://googleapis.github.io/python-genai/genai.html#genai.types.BatchJob
completed_states = {
    JobState.JOB_STATE_SUCCEEDED,
    JobState.JOB_STATE_FAILED,
    JobState.JOB_STATE_CANCELLED,
    JobState.JOB_STATE_PAUSED,
}

while job.state not in completed_states:
    time.sleep(30)
    job = client.batches.get(name=job.name)
    print(f"Job state: {job.state}")
# Example response:
# Job state: JOB_STATE_PENDING
# Job state: JOB_STATE_RUNNING
# Job state: JOB_STATE_RUNNING
# ...
# Job state: JOB_STATE_SUCCEEDED

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION : région compatible avec le modèle Anthropic Claude sélectionné (voir Régions Claude).
  • PROJECT_ID : .
  • MODEL : nom du modèle.
  • INPUT_URIS : liste d'emplacements Cloud Storage de votre entrée de prédiction par lots JSONL, séparés par une virgule, comme gs://bucketname/path/to/jsonl.
  • OUTPUT_FORMAT : pour générer une sortie dans une table BigQuery, spécifiez bigquery. Pour générer la sortie dans un bucket Cloud Storage, spécifiez jsonl.
  • DESTINATION : pour BigQuery, spécifiez bigqueryDestination. Pour Cloud Storage, spécifiez gcsDestination.
  • OUTPUT_URI_FIELD_NAME : pour BigQuery, spécifiez outputUri. Pour Cloud Storage, spécifiez outputUriPrefix.
  • OUTPUT_URI : pour BigQuery, spécifiez l'emplacement de la table, par exemple bq://myproject.mydataset.output_result. Pour Cloud Storage, spécifiez l'emplacement du bucket et du dossier, par exemple gs://mybucket/path/to/outputfile.

Méthode HTTP et URL :

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

Corps JSON de la requête :

'{
  "displayName": "JOB_NAME",
  "model": "publishers/anthropic/models/MODEL",
  "inputConfig": {
    "instancesFormat":"jsonl",
    "gcsSource":{
      "uris" : "INPUT_URIS"
    }
  },
  "outputConfig": {
    "predictionsFormat":"OUTPUT_FORMAT",
    "DESTINATION":{
      "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
    }
  }
}'

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON semblable à la suivante.

Obtenir l'état d'un job de prédiction par lots

Obtenez l'état de votre job de prédiction par lots pour vérifier qu'il a bien été effectué.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : .
  • LOCATION : région où se trouve votre job par lot.
  • JOB_ID : ID du job par lot renvoyé lors de la création du job.

Méthode HTTP et URL :

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID"

PowerShell

Exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante.

Récupérer la sortie de prédiction par lots

Une fois le job de prédiction par lots terminé, récupérez la sortie à partir de l'emplacement que vous avez spécifié. Pour BigQuery, la sortie se trouve dans la colonne response(JSON) de votre table BigQuery de destination. Pour Cloud Storage, elle est enregistrée en tant que fichier JSONL à l'emplacement Cloud Storage de sortie.

Vous pouvez accéder aux résultats complets de la prédiction par lots une fois que toutes les lignes ont été traitées ou au bout de 24 heures, selon la première échéance atteinte.