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

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

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

פלטפורמת הסוכנים של Gemini Enterprise תומכת בחיזויים באצווה במודלים הבאים של Anthropic Claude:

מכסות

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

הכנת הקלט

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

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

BigQuery

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

שם העמודה תיאור
custom_id מזהה לכל בקשה כדי להתאים בין הקלט לפלט.
בקשה גוף הבקשה, שהוא הנחיית הקלט שלכם וצריך לעמוד בסכימת ה-API של Anthropic Claude
  • טבלת הקלט יכולה לכלול עמודות אחרות, אבל משימת האצווה מתעלמת מהן.
  • במשימות חיזוי באצווה, שני שמות של עמודות שמורים לפלט של החיזוי באצווה: 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. מידע נוסף מופיע ב מאמרי העזרה של ה-API מבוסס-Python.

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. מידע נוסף מופיע ב מאמרי העזרה של ה-API מבוסס-Python.

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: רשימה מופרדת בפסיקים של מיקומי הקלט של חיזוי באצווה ב-JSONL ב-Cloud Storage, כמו 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 שעות, המוקדם מביניהם.