תחזיות באצווה באמצעות מודלים של Anthropic Claude

חיזויים באצווה מאפשרים לשלוח כמה הנחיות שלא רגישות לזמן אחזור למודל Anthropic Claude. בהשוואה לתחזיות אונליין, שבהן שולחים הנחיית קלט אחת לכל בקשה, אפשר לשלוח מספר גדול של הנחיות קלט בבקשה אחת.

מודלים נתמכים של Anthropic Claude

‫Vertex AI תומך בחיזויים של קבוצות (batch) עבור המודלים הבאים של Anthropic Claude:

מכסות

כברירת מחדל, מספר בקשות האצווה המקבילות שאפשר לשלוח בפרויקט יחיד הוא 4.

הכנת קלט

לפני שמתחילים, צריך להכין את מערך הנתונים של הקלט בטבלה ב-BigQuery או כקובץ JSONL ב-Cloud Storage. הקלט בשני המקורות צריך להיות בפורמט JSON של Anthropic Claude API Schema, כמו בדוגמה הבאה:

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

BigQuery

טבלת הקלט ב-BigQuery צריכה להיות תואמת לסכימה הבאה:

שם העמודה תיאור
custom_id מזהה לכל בקשה כדי להתאים את הקלט לפלט.
בקשה גוף הבקשה, שהוא ההנחיה לקלט וחייב להיות בהתאם לסכימת Anthropic Claude API
  • טבלת הקלט יכולה לכלול עמודות נוספות, אבל הן לא ישפיעו על העבודה של העיבוד באצווה.
  • משימות של חיזוי באצווה שומרות שני שמות של עמודות בשביל הפלט של החיזוי באצווה: response(JSON) ו-status. אל תשתמשו בעמודות האלה בטבלת הקלט.

Cloud Storage

ב-Cloud Storage, קובץ הקלט צריך להיות קובץ JSONL שנמצא בקטגוריה של Cloud Storage.

שליחת בקשה לתחזית באצווה

יצירת חיזוי באצווה באמצעות מודל Claude על סמך קלט מ-BigQuery או מ-Cloud Storage. אתם יכולים לבחור באופן עצמאי אם להוציא את התחזיות לטבלה ב-BigQuery או לקובץ JSONL בקטגוריה של Cloud Storage.

BigQuery

מציינים את טבלת הקלט, המודל ומיקום הפלט ב-BigQuery. משימת התחזית באצווה והטבלה צריכות להיות באותו אזור.

Python

במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python 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.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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • LOCATION: אזור שתומך במודל Anthropic Claude שנבחר (ראו אזורי Claude).
  • PROJECT_ID: מזהה הפרויקט.
  • MODEL: השם של המודל.
  • INPUT_URI: הטבלה ב-BigQuery שבה נמצא קובץ הקלט של התחזית באצווה, למשל bq://myproject.mydataset.input_table.
  • OUTPUT_FORMAT: כדי להגדיר פלט לטבלה ב-BigQuery, מציינים bigquery. כדי להגדיר פלט לקטגוריה של Cloud Storage, מציינים jsonl.
  • DESTINATION: ב-BigQuery, מציינים bigqueryDestination. ב-Cloud Storage, מציינים gcsDestination.
  • OUTPUT_URI_FIELD_NAME: ב-BigQuery, מציינים outputUri. ב-Cloud Storage, מציינים outputUriPrefix.
  • OUTPUT_URI: ב-BigQuery, מציינים את מיקום הטבלה, למשל bq://myproject.mydataset.output_result. ב-Cloud Storage, מציינים את המיקום של הקטגוריה והתיקייה, כמו gs://mybucket/path/to/outputfile.

ה-method של ה-HTTP וכתובת ה-URL:

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

גוף בקשת JSON:

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

כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

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

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$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

אתם אמורים לקבל תגובת JSON שדומה לזו:

Cloud Storage

מציינים את המיקום של קובץ ה-JSONL ב-Cloud Storage, את המודל ואת מיקום הפלט.

Python

במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python 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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • LOCATION: אזור שתומך במודל Anthropic Claude שנבחר (ראו אזורי Claude).
  • PROJECT_ID: .
  • MODEL: השם של המודל.
  • INPUT_URIS: רשימה מופרדת בפסיקים של מיקומי Cloud Storage של קובץ הקלט של התחזית באצווה בפורמט JSONL, כמו gs://bucketname/path/to/jsonl.
  • OUTPUT_FORMAT: כדי להגדיר פלט לטבלה ב-BigQuery, מציינים bigquery. כדי להגדיר פלט לקטגוריה של Cloud Storage, מציינים jsonl.
  • DESTINATION: ב-BigQuery, מציינים bigqueryDestination. ב-Cloud Storage, מציינים gcsDestination.
  • OUTPUT_URI_FIELD_NAME: ב-BigQuery, מציינים outputUri. ב-Cloud Storage, מציינים outputUriPrefix.
  • OUTPUT_URI: ב-BigQuery, מציינים את מיקום הטבלה, למשל bq://myproject.mydataset.output_result. ב-Cloud Storage, מציינים את המיקום של הקטגוריה והתיקייה, כמו gs://mybucket/path/to/outputfile.

ה-method של ה-HTTP וכתובת ה-URL:

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

גוף בקשת JSON:

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

כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

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

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$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

אתם אמורים לקבל תגובת JSON שדומה לזו:

קבלת הסטטוס של משימת חיזוי באצווה

אפשר לקבל את הסטטוס של משימת חיזוי בקבוצה כדי לבדוק אם היא הושלמה בהצלחה.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: .
  • LOCATION: האזור שבו נמצאת משימת האצווה שלך.
  • JOB_ID: מזהה העבודה בקבוצה שהוחזר כשיוצרים את העבודה.

ה-method של ה-HTTP וכתובת ה-URL:

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

כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:

curl

מריצים את הפקודה הבאה:

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

מריצים את הפקודה הבאה:

$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

אתם אמורים לקבל תגובת JSON שדומה לזו:

אחזור פלט של תחזיות רבות בבת אחת

כשמשימת חיזוי אצווה מסתיימת, מאחזרים את הפלט מהמיקום שצוין. ב-BigQuery, הפלט נמצא בעמודה response(JSON) בטבלת היעד ב-BigQuery. ב-Cloud Storage, הפלט נשמר כקובץ JSONL במיקום הפלט ב-Cloud Storage.

אפשר לגשת לתוצאות המלאות של התחזיות הקבוצתיות אחרי שכל השורות הושלמו או אחרי 24 שעות, לפי המוקדם מביניהם.