Previsões em lote com modelos Claude da Anthropic

As previsões em lote permitem-lhe enviar vários comandos que não são sensíveis à latência para um modelo Claude da Anthropic. Em comparação com as previsões online, em que envia um comando de entrada para cada pedido, pode processar em lote um grande número de comandos de entrada num único pedido.

Modelos do Anthropic Claude suportados

O Vertex AI suporta previsões em lote para os seguintes modelos do Anthropic Claude:

Quotas

Por predefinição, o número de pedidos em lote simultâneos que pode fazer num único projeto é 4.

Prepare a entrada

Antes de começar, prepare o conjunto de dados de entrada numa tabela do BigQuery ou como um ficheiro JSONL no Cloud Storage. A entrada para ambas as fontes tem de seguir o formato JSON do esquema da API Anthropic Claude, conforme mostrado no seguinte exemplo:

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

BigQuery

A tabela de entrada do BigQuery tem de seguir o seguinte esquema:

Nome da coluna Descrição
custom_id Um ID para cada pedido de correspondência entre a entrada e a saída.
pedido O corpo do pedido, que é o seu comando de entrada e tem de seguir o esquema da API Claude da Anthropic
  • A tabela de entrada pode ter outras colunas, que são ignoradas pela tarefa em lote.
  • As tarefas de previsão em lote reservam dois nomes de colunas para o resultado da previsão em lote: response(JSON) e status. Não use estas colunas na tabela de entrada.

Cloud Storage

Para o Cloud Storage, o ficheiro de entrada tem de ser um ficheiro JSONL localizado num contentor do Cloud Storage.

Peça uma previsão em lote

Faça uma previsão em lote com base num modelo Claude usando a entrada do BigQuery ou do Cloud Storage. Pode optar por gerar previsões de forma independente para uma tabela do BigQuery ou um ficheiro JSONL num contentor do Cloud Storage.

BigQuery

Especifique a tabela de entrada, o modelo e a localização de saída do BigQuery. A tarefa de previsão em lote e a sua tabela têm de estar na mesma região.

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

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

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION: uma região que suporta o modelo do Anthropic Claude selecionado (consulte as regiões do Claude).
  • PROJECT_ID: o seu ID do projeto.
  • MODEL: o nome do modelo.
  • INPUT_URI: a tabela do BigQuery onde se encontra a entrada de previsão em lote, como bq://myproject.mydataset.input_table.
  • OUTPUT_FORMAT: para gerar resultados numa tabela do BigQuery, especifique bigquery. Para gerar resultados num contentor do Cloud Storage, especifique jsonl.
  • DESTINATION: para o BigQuery, especifique bigqueryDestination. Para o Cloud Storage, especifique gcsDestination.
  • OUTPUT_URI_FIELD_NAME: Para o BigQuery, especifique outputUri. Para o Cloud Storage, especifique outputUriPrefix.
  • OUTPUT_URI: para o BigQuery, especifique a localização da tabela, como bq://myproject.mydataset.output_result. Para o Cloud Storage, especifique a localização do contentor e da pasta, como gs://mybucket/path/to/outputfile.

Método HTTP e URL:

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

Corpo JSON do pedido:

'{
  "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"
    }
  }
}'

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte.

Cloud Storage

Especifique a localização do Cloud Storage, o modelo e a localização de saída do ficheiro JSONL.

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

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

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION: uma região que suporta o modelo do Anthropic Claude selecionado (consulte as regiões do Claude).
  • PROJECT_ID: .
  • MODEL: o nome do modelo.
  • INPUT_URIS: Uma lista separada por vírgulas das localizações do Cloud Storage da entrada de previsão em lote JSONL, como gs://bucketname/path/to/jsonl.
  • OUTPUT_FORMAT: para gerar resultados numa tabela do BigQuery, especifique bigquery. Para gerar resultados num contentor do Cloud Storage, especifique jsonl.
  • DESTINATION: para o BigQuery, especifique bigqueryDestination. Para o Cloud Storage, especifique gcsDestination.
  • OUTPUT_URI_FIELD_NAME: Para o BigQuery, especifique outputUri. Para o Cloud Storage, especifique outputUriPrefix.
  • OUTPUT_URI: para o BigQuery, especifique a localização da tabela, como bq://myproject.mydataset.output_result. Para o Cloud Storage, especifique a localização do contentor e da pasta, como gs://mybucket/path/to/outputfile.

Método HTTP e URL:

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

Corpo JSON do pedido:

'{
  "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"
    }
  }
}'

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content

Deve receber uma resposta JSON semelhante à seguinte.

Obtenha o estado de uma tarefa de previsão em lote

Obtenha o estado da sua tarefa de previsão em lote para verificar se foi concluída com êxito.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região onde o seu trabalho em lote está localizado.
  • JOB_ID: o ID da tarefa em lote que foi devolvido quando criou a tarefa.

Método HTTP e URL:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

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

Execute o seguinte comando:

$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

Deve receber uma resposta JSON semelhante à seguinte.

Obtenha o resultado da previsão em lote

Quando um trabalho de previsão em lote é concluído, obtenha o resultado da localização que especificou. Para o BigQuery, o resultado encontra-se na coluna response(JSON) da tabela de destino do BigQuery. Para o armazenamento na nuvem, o resultado é guardado como um ficheiro JSONL na localização do armazenamento na nuvem de saída.

Pode aceder aos resultados da previsão em lote completos depois de todas as linhas estarem concluídas ou após 24 horas, consoante o que ocorrer primeiro.