Batchvorhersagen mit Anthropic Claude-Modellen

Mit Batchvorhersagen können Sie mehrere Prompts an ein Anthropic Claude-Modell senden, die nicht latensempfindlich sind. Im Vergleich zu Onlinevorhersagen, bei denen Sie für jede Anfrage einen Eingabeprompt senden, können Sie eine große Anzahl von Eingabeprompts in einer einzigen Anfrage zusammenfassen.

Unterstützte Anthropic Claude-Modelle

Vertex AI unterstützt Batchvorhersagen für die folgenden Claude-Modelle von Anthropic:

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

Eingabe vorbereiten

Bevor Sie beginnen, müssen Sie den Eingabedatensatz in einer BigQuery-Tabelle oder als JSONL-Datei in Cloud Storage vorbereiten. Die Eingabe für beide Quellen muss dem JSON-Format des Anthropic Claude API-Schemas entsprechen, wie im folgenden Beispiel gezeigt:

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

BigQuery

Ihre BigQuery-Eingabetabelle muss dem folgenden Schema entsprechen:

Spaltenname Beschreibung
custom_id Eine ID für jede Anfrage, um die Eingabe mit der Ausgabe abzugleichen.
Anfrage Der Anfragetext, der als Eingabeprompt dient und dem Anthropic Claude API-Schema entsprechen muss
  • Die Eingabetabelle kann weitere Spalten enthalten, die vom Batchjob ignoriert und direkt an die Ausgabetabelle übergeben werden.
  • Für Batchvorhersagejobs werden zwei Spaltennamen für die Batchvorhersageausgabe reserviert: response(JSON) und status. Verwenden Sie diese Spalten nicht in der Eingabetabelle.

Cloud Storage

Bei Cloud Storage muss die Eingabedatei eine JSONL-Datei sein, die sich in einem Cloud Storage-Bucket befindet.

Eine Batchvorhersage anfordern

Sie können eine Batchvorhersage mit einem Claude-Modell durchführen, indem Sie Eingaben aus BigQuery oder Cloud Storage verwenden. Sie können unabhängig voneinander festlegen, ob die Vorhersagen in einer BigQuery-Tabelle oder einer JSONL-Datei in einem Cloud Storage-Bucket ausgegeben werden sollen.

BigQuery

Geben Sie die BigQuery-Eingabetabelle, das Modell und den Ausgabeort an. Der Batch-Vorhersagejob und Ihre Tabelle müssen sich in derselben Region befinden.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Eine Region, die das ausgewählte Anthropic Claude-Modell unterstützt (siehe Claude-Regionen).
  • PROJECT_ID: Ihre Projekt-ID.
  • MODEL: Der Name des Modells.
  • INPUT_URI: Die BigQuery-Tabelle, in der sich die Eingabe für die Batch-Vorhersage befindet, z. B. bq://myproject.mydataset.input_table.
  • OUTPUT_FORMAT: Geben Sie bigquery an, um die Ausgabe in eine BigQuery-Tabelle zu leiten. Geben Sie jsonl an, um die Ausgabe in einen Cloud Storage-Bucket zu senden.
  • DESTINATION: Geben Sie für BigQuery bigqueryDestination an. Geben Sie für Cloud Storage gcsDestination an.
  • OUTPUT_URI_FIELD_NAME: Geben Sie für BigQuery outputUri an. Geben Sie für Cloud Storage outputUriPrefix an.
  • OUTPUT_URI: Geben Sie für BigQuery den Speicherort der Tabelle an, z. B. bq://myproject.mydataset.output_result. Geben Sie für Cloud Storage den Bucket- und Ordnerspeicherort an, z. B. gs://mybucket/path/to/outputfile.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

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

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Cloud Storage

Geben Sie den Cloud Storage-Speicherort, das Modell und den Ausgabeort Ihrer JSONL-Datei an.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Eine Region, die das ausgewählte Anthropic Claude-Modell unterstützt (siehe Claude-Regionen).
  • PROJECT_ID: Ihre Projekt-ID.
  • MODEL: Der Name des Modells.
  • INPUT_URIS: Eine durch Kommas getrennte Liste der Cloud Storage-Standorte Ihrer JSONL-Batch-Vorhersageeingabe, z. B. gs://bucketname/path/to/jsonl.
  • OUTPUT_FORMAT: Geben Sie bigquery an, um die Ausgabe in eine BigQuery-Tabelle zu leiten. Geben Sie jsonl an, um die Ausgabe in einen Cloud Storage-Bucket zu senden.
  • DESTINATION: Geben Sie für BigQuery bigqueryDestination an. Geben Sie für Cloud Storage gcsDestination an.
  • OUTPUT_URI_FIELD_NAME: Geben Sie für BigQuery outputUri an. Geben Sie für Cloud Storage outputUriPrefix an.
  • OUTPUT_URI: Geben Sie für BigQuery den Speicherort der Tabelle an, z. B. bq://myproject.mydataset.output_result. Geben Sie für Cloud Storage den Bucket- und Ordnerspeicherort an, z. B. gs://mybucket/path/to/outputfile.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

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

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Status eines Batchvorhersagejobs abrufen

Rufen Sie den Status Ihres Batchvorhersagejobs ab, um zu prüfen, ob er erfolgreich abgeschlossen wurde.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: Die Region, in der sich Ihr Batchjob befindet.
  • JOB_ID: Die ID des Batchjobs, die beim Erstellen des Jobs zurückgegeben wurde.

HTTP-Methode und URL:

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

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie diesen Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Ausgabe der Batchvorhersage abrufen

Wenn ein Batch-Vorhersagejob abgeschlossen ist, rufen Sie die Ausgabe an dem von Ihnen angegebenen Speicherort ab. Bei BigQuery befindet sich die Ausgabe in der Spalte response(JSON) der BigQuery-Zieltabelle. Bei Cloud Storage wird die Ausgabe als JSONL-Datei am Cloud Storage-Ausgabespeicherort gespeichert.

Bekannte Probleme

Hier sind die bekannten Probleme mit dieser Funktion.

Interne Fehler beim ersten Batchjob in einer Region.

Wenn Sie die Batch-Vorhersage in einer Region zum ersten Mal verwenden, schlägt der Batch-Vorhersagejob manchmal mit der folgenden Meldung fehl:

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

Dieses Problem tritt auf, weil das interne Dienstkonto, über das der Batch-Vorhersagejob ausgeführt wird, neu erstellt wurde und nicht über die Bereitstellungspipeline propagiert wurde. Dies führt dazu, dass Batchjobs intern mit Berechtigungsfehlern fehlschlagen. Nutzer, die diesen Fehler erhalten, können nach etwa 10 Minuten noch einmal versuchen, eine Batchanfrage zu senden.

Für abgebrochene Jobs werden keine Ergebnisse zurückgegeben.

Wenn ein Job aufgrund eines bekannten Bugs vor dem Abschluss abgebrochen wird oder eine Zeitüberschreitung auftritt, werden am Ausgabeort keine Ergebnisse angezeigt.