Previsões em lote com modelos Anthropic Claude

Com as previsões em lote, é possível enviar várias solicitações que não são sensíveis à latência para um modelo Anthropic Claude. Em comparação com as previsões on-line, em que você envia uma solicitação de entrada para cada solicitação, é possível fazer um lote de um grande número de solicitações de entrada em uma única solicitação.

Modelos Anthropic Claude compatíveis

A Vertex AI oferece suporte a previsões em lote para os seguintes modelos do Anthropic Claude:

  • Claude 3.5 Sonnet v2 (claude-3-5-sonnet-v2@20241022)
  • Claude 3.5 Haiku (claude-3-5-haiku@20241022)

Preparar entrada

Antes de começar, prepare o conjunto de dados de entrada em uma tabela do BigQuery ou como um arquivo JSONL no Cloud Storage. A entrada para ambas as fontes precisa seguir o formato JSON do Esquema da API Anthropic Claude, conforme mostrado no exemplo abaixo:

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

BigQuery

Sua tabela de entrada do BigQuery precisa obedecer ao seguinte esquema:

Nome da coluna Descrição
custom_id Um ID para cada solicitação corresponder à entrada com a saída.
solicitação O corpo da solicitação, que é o comando de entrada e precisa seguir o Esquema da API Anthropic Claude
  • A tabela de entrada pode ter outras colunas, que são ignoradas pelo job em lote e transmitidas diretamente para a tabela de saída.
  • Os jobs de previsão em lote reservam dois nomes de colunas para a saída da previsão em lote: response(JSON) e status. Não use essas colunas na tabela de entrada.

Cloud Storage

Para o Cloud Storage, o arquivo de entrada precisa ser um arquivo JSONL localizado em um bucket do Cloud Storage.

Solicitar uma predição em lote

Faça uma previsão em lote com um modelo Claude usando a entrada do BigQuery ou do Cloud Storage. Você pode escolher se as previsões serão enviadas para uma tabela do BigQuery ou um arquivo JSONL em um bucket do Cloud Storage.

BigQuery

Especifique a tabela de entrada, o modelo e o local de saída do BigQuery. O job de previsão em lote e a tabela precisam estar na mesma região.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION: uma região compatível com o modelo Anthropic Claude selecionado (consulte Regiões do Claude).
  • PROJECT_ID: o ID do projeto.
  • MODEL: o nome do modelo.
  • INPUT_URI: a tabela do BigQuery em que a entrada de previsão em lote está localizada, como bq://myproject.mydataset.input_table.
  • OUTPUT_FORMAT: para gerar saída em uma tabela do BigQuery, especifique bigquery. Para gerar saída em um bucket 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 o local da tabela, como bq://myproject.mydataset.output_result. Para o Cloud Storage, especifique o bucket e o local 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 da solicitação:

'{
  "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 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 a seguir:

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.

Cloud Storage

Especifique o local do Cloud Storage, o modelo e o local de saída do arquivo JSONL.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION: uma região compatível com o modelo Anthropic Claude selecionado (consulte Regiões do Claude).
  • PROJECT_ID: o ID do projeto.
  • MODEL: o nome do modelo.
  • INPUT_URIS: uma lista separada por vírgulas dos locais do Cloud Storage da entrada de previsão em lote JSONL, como gs://bucketname/path/to/jsonl.
  • OUTPUT_FORMAT: para gerar saída em uma tabela do BigQuery, especifique bigquery. Para gerar saída em um bucket 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 o local da tabela, como bq://myproject.mydataset.output_result. Para o Cloud Storage, especifique o bucket e o local 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 da solicitação:

'{
  "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 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 a seguir:

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.

Conferir o status de um job de previsão em lote

Confira o status do job de predição em lote para verificar se ele foi concluído com sucesso.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região em que o job em lote está localizado.
  • JOB_ID: o ID do job em lote que foi retornado quando você criou o job.

Método HTTP e URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/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://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

Você receberá uma resposta JSON semelhante a seguinte.

Recuperar a saída da previsão em lote

Quando um job de previsão em lote for concluído, extraia a saída do local especificado. No BigQuery, a saída está na coluna response(JSON) da tabela de destino. No Cloud Storage, a saída é salva como um arquivo JSONL no local de saída do Cloud Storage.

Problemas conhecidos

Confira os problemas conhecidos desse recurso.

Erros internos no primeiro job em lote de uma região.

Para usuários que usam a previsão em lote pela primeira vez em uma região, às vezes o job de previsão em lote falha com a seguinte mensagem:

"state": "JOB_STATE_FAILED", "error": { "code": 13, "message": "INTERNAL" }

Esse problema ocorre porque a conta de serviço interna que executa o job de previsão em lote foi criada recentemente e não foi propagada pelo pipeline de provisionamento, fazendo com que os jobs em lote falhem com erros de permissão internamente. Os usuários que encontrarem esse erro podem tentar enviar uma solicitação em lote novamente após cerca de 10 minutos.

Os jobs cancelados não retornam resultados.

Devido a um bug conhecido, se um job for cancelado antes de terminar ou expirar, nenhum resultado vai aparecer no local de saída.