אפשר להוסיף מטא-נתונים בהתאמה אישית לקריאות API כמו generateContent ו-rawPredict באמצעות תוויות. בדף הזה מוסבר מהן תוויות ואיך משתמשים בהן כדי לפרק את החיובים.
מהן תוויות?
תווית היא צמד מפתח/ערך שאפשר להקצות לקריאות ל-API כמו generateContent ו-rawPredict. הם עוזרים לכם לארגן את השיחות האלה ולנהל את העלויות בהיקף רחב, ברמת הפירוט שאתם צריכים. אפשר לצרף תוויות לכל שיחה כדי לסנן את השיחות לפי התוויות. המידע על התוויות מועבר למערכת החיוב, כך שאתם יכולים לפרק את החיובים לפי תווית. בעזרת דוחות חיוב מובנים, אפשר לסנן ולקבץ עלויות לפי תוויות. אפשר גם להשתמש בתוויות כדי לשלוח שאילתות לייצוא של נתוני חיוב.
מידע על השימוש בתוויות אחרי שיוצרים אותן זמין בדוגמה מתוך הסקירה הכללית על תוויות.
הדרישות לגבי תוויות
התוויות שמוסיפים לקריאה ל-API צריכות לעמוד בדרישות הבאות:
- כל קריאה ל-API יכולה לכלול עד 64 תוויות למודלים של Google ועד 32 תוויות למודלים של שותפים.
- כל תווית חייבת להיות צמד מפתח/ערך.
- האורך המינימלי של המפתחות הוא תו אחד, והאורך המקסימלי הוא 63 תווים. המפתחות לא יכולים להיות ריקים. הערכים יכולים להיות ריקים, והאורך המקסימלי שלהם הוא 63 תווים.
- המפתחות והערכים יכולים להכיל רק אותיות קטנות, ספרות, קווים תחתונים ומקפים. כל התווים צריכים להיות בקידוד UTF-8, ומותר להשתמש בתווים בינלאומיים. המפתחות צריכים להתחיל באות קטנה או בתו בינלאומי.
- החלק של המפתח בתווית חייב להיות ייחודי בתוך קריאה אחת ל-API. עם זאת, אפשר להשתמש באותו מפתח בכמה שיחות.
המגבלות האלה חלות על המפתח והערך של כל תווית, וגם על קריאות ה-API האישיות שכוללות תוויות. אין הגבלה על מספר מפתחות התוויות שאפשר ליצור בכל קריאות ה-API בפרויקט. לכל מפתח תווית יכולים להיות עד 1,000 ערכים ייחודיים בכל הבקשות במהלך חייו של החשבון לחיוב המשויך. אם יש יותר מ-1,000 ערכים ייחודיים שמשויכים למפתח התווית, יכול להיות שהוא יוסר בלי הודעה מוקדמת.
שימושים נפוצים בתוויות
ריכזנו כאן כמה תרחישי שימוש נפוצים בתוויות:
Team or cost center labels: תוויות של צוות או מרכז עלויות. אפשר להוסיף תוויות על סמך צוות או מרכז עלויות כדי להבחין בין קריאות API שנמצאות בבעלות של צוותים שונים (לדוגמה,
team:researchו-team:analytics). אפשר להשתמש בסוג הזה של תוויות לצורך הנהלת חשבונות או תקצוב.תוויות של רכיבים: לדוגמה,
component:redis,component:frontend,component:ingestו-component:dashboard.תוויות של סביבה או שלב: לדוגמה,
environment:productionו-environment:test.תוויות בעלות: משמשות לזיהוי הצוותים שאחראים על הפעולות, לדוגמה:
team:shopping-cart.
אנחנו לא ממליצים ליצור מספר גדול של תוויות ייחודיות, למשל תוויות של חותמות זמן או ערכים נפרדים לכל קריאה ל-API. הבעיה בגישה הזו היא שהמפתחות יוצרים עומס בקטלוג, מגדילים באופן משמעותי את זמני הטעינה במהלך השאילתות ומקשים על סינון יעיל של קריאות ה-API ועל יצירת דוחות לגביהן.
מודלים נתמכים
האפשרות להוסיף תוויות לבקשה נתמכת במודלים של Google ובקבוצת משנה של מודלים של שותפים. אם מוסיפים תוויות לבקשה למודל שלא נתמך, הבקשה מחזירה שגיאה.
המודלים של Google
המודלים של Google תומכים בתוויות בשיטות ה-API הבאות.
generateContentstreamGenerateContent
מודלים של השותפים
מודלים של שותפים תומכים בתוויות ב-API methods הבאים.
rawPredictstreamRawPredict
התוויות נתמכות במודלים הבאים של שותפים.
התוויות מועברות לחיוב ב-Cloud רק אם הבקשה משתמשת באפשרות הצריכה PayGo. בקשות שמשתמשות באפשרות הצריכה הקצאת משאבים לפי התפוקה שנקבעה יתעלמו בשקט מתוויות שנשלחות בבקשה.
הוספת תווית לקריאה ל-API של מודל Google
כדי להוסיף תווית לקריאה ל-API של generateContent או streamGenerateContent, צריך לבצע את הפעולות הבאות:
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
GENERATE_RESPONSE_METHOD: סוג התשובה שרוצים שהמודל ייצור. בוחרים שיטה ליצירת התשובה של המודל:-
streamGenerateContent: התשובה מוזרמת בזמן שהיא נוצרת כדי לצמצם את תפיסת זמן האחזור בקרב קהל אנושי. -
generateContent: התשובה מוחזרת אחרי שהיא נוצרת במלואה.
-
-
LOCATION: האזור שבו הבקשה תעובד. -
PROJECT_ID: מזהה הפרויקט. . -
MODEL_ID: מזהה המודל שרוצים להשתמש בו. -
ROLE: התפקיד בשיחה שמשויך לתוכן. חובה לציין תפקיד גם בתרחישי שימוש של אינטראקציה אחת. הערכים הקבילים כוללים את האפשרויות הבאות:-
USER: מציין תוכן שנשלח על ידכם. -
MODEL: מציין את התשובה של המודל.
-
הוראות הטקסט שייכללו בהנחיה. JSONPROMPT_TEXT
-
LABEL_KEY: המטא-נתונים של התווית שרוצים לשייך לקריאה הזו ל-API. -
LABEL_VALUE: הערך של התווית.
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
cat > request.json << 'EOF'
{
"contents": {
"role": "ROLE",
"parts": { "text": "PROMPT_TEXT" }
},
"labels": {
"LABEL_KEY": "LABEL_VALUE"
},
}
EOFלאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
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/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
@'
{
"contents": {
"role": "ROLE",
"parts": { "text": "PROMPT_TEXT" }
},
"labels": {
"LABEL_KEY": "LABEL_VALUE"
},
}
'@ | Out-File -FilePath request.json -Encoding utf8לאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
$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/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
מוצריCloud de Confiance by S3NS מדווחים לתהליכי החיוב ב-Cloud על נתוני השימוש והעלויות במרווחי זמן שונים. לכן יכול להיות שלא תראו בחיוב ב-Cloud את נתוני השימוש והעלויות מייד אחרי השימוש בשירותיCloud de Confiance by S3NS . בדרך כלל נתוני העלויות זמינים תוך יום, אבל לפעמים הם מדוּוחים אחרי יותר מ-24 שעות.
הוספת תווית לקריאה ל-API של מודל שותף
כדי להוסיף תווית לקריאה ל-API של rawPredict או streamRawPredict, צריך לבצע את הפעולות הבאות:
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
MODEL_ID: מזהה המודל שרוצים להשתמש בו. לדוגמה,claude-opus-4-6.
שומרים את גוף הבקשה בקובץ בשם request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
cat > request.json << 'EOF'
{
"anthropic_version": "vertex-2023-10-16",
"messages": [
{
"role": "user",
"content": "What is Generative AI?"
}
],
"max_tokens": 1024,
"stream": false
}
EOF
לאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
REQUEST_LABELS=$(echo -n '{"team": "research", "component": "frontend"}' | base64 --wrap 0)
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Vertex-AI-Labels: ${REQUEST_LABELS}" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/anthropic/models/MODEL_ID:rawPredict"
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
MODEL_ID: מזהה המודל שרוצים להשתמש בו. לדוגמה,claude-opus-4-6.
import base64 import json from google.cloud.aiplatform import aiplatform_v1 from google.api import httpbody_pb2 project_id = "PROJECT_ID" model_id = "MODEL_ID" request_body = { "anthropic_version": "vertex-2023-10-16", "messages": [{ "role": "user", "content": [{"type": "text", "text": "What is Generative AI?"}] }], "max_tokens": 256, "stream": True, } # Encode labels to base64 for the X-Vertex-AI-Labels header labels = { "team": "research", "component": "frontend", "environment": "production", } labels_json = json.dumps(labels).encode("utf-8") vertex_header_value = base64.b64encode(labels_json) endpoint_id=f"projects/{project_id}/locations/global/publishers/anthropic/models/{model_id}" client = aiplatform_v1.PredictionServiceClient() responses = client.stream_raw_predict( request=aiplatform_v1.StreamRawPredictRequest( endpoint=endpoint_id, http_body=httpbody_pb2.HttpBody( data=json.dumps(request_body).encode("utf-8"), content_type="application/json", ), ), metadata=[("x-vertex-ai-labels", vertex_header_value)], ) for response in responses: print(response.data.decode("utf-8"))