Las predicciones por lotes te permiten enviar varias instrucciones que no son sensibles a la latencia a un modelo de Claude Anthropic. En comparación con las predicciones en línea, en las que envías una instrucción de entrada para cada solicitud, puedes procesar por lotes una gran cantidad de instrucciones de entrada en una sola solicitud.
Modelos de Anthropic Claude admitidos
Vertex AI admite predicciones por lotes para los siguientes modelos de Claude de Anthropic:
- Claude 3.5 Sonnet v2 (
claude-3-5-sonnet-v2@20241022
) - Claude 3.5 Haiku (
claude-3-5-haiku@20241022
)
Prepara la entrada
Antes de comenzar, prepara tu conjunto de datos de entrada en una tabla de BigQuery o como un archivo JSONL en Cloud Storage. La entrada de ambas fuentes debe seguir el formato JSON del esquema de la API de Anthropoietic Claude, como se muestra en el siguiente ejemplo:
{
"custom_id": "request-1",
"request": {
"messages": [{"role": "user", "content": "Hello!"}],
"anthropic_version": "vertex-2023-10-16",
"max_tokens": 50
}
}
BigQuery
Tu tabla de entrada de BigQuery debe cumplir con el siguiente esquema:
Nombre de la columna | Descripción |
---|---|
custom_id | Un ID para cada solicitud para que coincida la entrada con la salida. |
solicitud | El cuerpo de la solicitud, que es tu instrucción de entrada y debe seguir el esquema de la API de Anthropic Claude |
- Tu tabla de entrada puede tener otras columnas, que el trabajo por lotes ignora y pasa directamente a la tabla de resultados.
- Los trabajos de predicción por lotes reservan dos nombres de columnas para el resultado de la predicción por lotes:
response(JSON)
ystatus
. No uses estas columnas en la tabla de entrada.
Cloud Storage
En el caso de Cloud Storage, el archivo de entrada debe ser un archivo JSONL que se encuentre en un bucket de Cloud Storage.
Solicitar una predicción por lotes
Realiza una predicción por lotes en un modelo de Claude con entradas de BigQuery o Cloud Storage. Puedes elegir de forma independiente enviar las predicciones a una tabla de BigQuery o a un archivo JSONL en un bucket de Cloud Storage.
BigQuery
Especifica la tabla de entrada, el modelo y la ubicación de salida de BigQuery. El trabajo de predicción por lotes y tu tabla deben estar en la misma región.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: Es una región que admite el modelo Anthropic Claude seleccionado (consulta Regiones de Claude).
- PROJECT_ID: El ID del proyecto.
- MODEL: Es el nombre del modelo.
- INPUT_URI: Es la tabla de BigQuery en la que se encuentra la entrada de tu predicción por lotes, como
bq://myproject.mydataset.input_table
. - OUTPUT_FORMAT: Para generar una salida en una tabla de BigQuery, especifica
bigquery
. Para generar un resultado en un bucket de Cloud Storage, especificajsonl
. - DESTINATION: Para BigQuery, especifica
bigqueryDestination
. En Cloud Storage, especificagcsDestination
. - OUTPUT_URI_FIELD_NAME: Para BigQuery, especifica
outputUri
. En Cloud Storage, especificaoutputUriPrefix
. - OUTPUT_URI: Para BigQuery, especifica la ubicación de la tabla, como
bq://myproject.mydataset.output_result
. En Cloud Storage, especifica la ubicación del bucket y la carpeta, comogs://mybucket/path/to/outputfile
.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
Cuerpo JSON de la solicitud:
'{ "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 tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Cloud Storage
Especifica la ubicación de Cloud Storage, el modelo y la ubicación de salida del archivo JSONL.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: Es una región que admite el modelo Anthropic Claude seleccionado (consulta Regiones de Claude).
- PROJECT_ID: El ID del proyecto.
- MODEL: Es el nombre del modelo.
- INPUT_URIS: Es una lista separada por comas de las ubicaciones de Cloud Storage de tu entrada de predicción por lotes JSONL, como
gs://bucketname/path/to/jsonl
. - OUTPUT_FORMAT: Para generar una salida en una tabla de BigQuery, especifica
bigquery
. Para generar un resultado en un bucket de Cloud Storage, especificajsonl
. - DESTINATION: Para BigQuery, especifica
bigqueryDestination
. En Cloud Storage, especificagcsDestination
. - OUTPUT_URI_FIELD_NAME: Para BigQuery, especifica
outputUri
. En Cloud Storage, especificaoutputUriPrefix
. - OUTPUT_URI: Para BigQuery, especifica la ubicación de la tabla, como
bq://myproject.mydataset.output_result
. En Cloud Storage, especifica la ubicación del bucket y la carpeta, comogs://mybucket/path/to/outputfile
.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
Cuerpo JSON de la solicitud:
'{ "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 tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Obtén el estado de un trabajo de predicción por lotes
Obtén el estado de tu trabajo de predicción por lotes para comprobar si se completó correctamente.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- LOCATION: Es la región en la que se encuentra tu trabajo por lotes.
- JOB_ID: Es el ID del trabajo por lotes que se mostró cuando creaste el trabajo.
Método HTTP y URL:
GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente 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
Ejecuta el siguiente 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
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Cómo recuperar el resultado de la predicción por lotes
Cuando se complete un trabajo de predicción por lotes, recupera el resultado de la ubicación que especificaste. En BigQuery, el resultado se encuentra en la columna response(JSON)
de tu tabla de BigQuery de destino. En el caso de Cloud Storage, el resultado se guarda como un archivo JSONL en la ubicación de salida de Cloud Storage.
Problemas conocidos
Estos son los problemas conocidos de esta función.
Errores internos del primer trabajo por lotes en una región.
En el caso de los usuarios que usan la predicción por lotes por primera vez en una región, a veces, el trabajo de predicción por lotes falla con el siguiente mensaje:
"state": "JOB_STATE_FAILED", "error": { "code": 13, "message": "INTERNAL" }
Este problema se produce porque la cuenta de servicio interna que ejecuta el trabajo de predicción por lotes se creó recientemente y no se propagó a través de la canalización de aprovisionamiento, lo que hace que los trabajos por lotes fallen con errores de permisos de forma interna. Los usuarios que encuentren este error pueden reintentar enviar una solicitud por lotes después de unos 10 minutos.
Los trabajos cancelados no mostrarán ningún resultado.
Debido a un error conocido, si se cancela un trabajo antes de que finalice o se agote el tiempo de espera, no aparecerán resultados en la ubicación de salida.