מעקב אחר השימוש באסימונים של מודלים של צד שלישי

אפשר לחשב את צריכת הטוקנים לפי מודל, יום ומשתמש עבור מודלים של צד שלישי בכלים למפתחי AI, כמו Anthropic Claude Opus 5.5 ו-Anthropic Claude Sonnet 5.5, באמצעות Cloud Logging ו-Observability Analytics.

מדריך למתחילים

אם _Defaultמאגר היומנים של הפרויקט כבר שודרג ל-Observability Analytics, מריצים את השאילתה הבאה ב-Logging > Observability Analytics (מחליפים את [PROJECT_ID] במזהה הפרויקט Google Cloud ) כדי לקבל נתוני שימוש באסימונים למשך 30 יום במודלים של צד שלישי של Anthropic:

SELECT
  JSON_VALUE(labels.model) AS model,
  COUNT(*) AS requests,
  SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.promptTokenCount) AS INT64)) AS input_tokens,
  SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.candidatesTokenCount) AS INT64)) AS output_tokens,
  IFNULL(SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.cachedContentTokenCount) AS INT64)), 0) AS cached_tokens,
  IFNULL(SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.thoughtsTokenCount) AS INT64)), 0) AS thoughts_tokens,
  SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.totalTokenCount) AS INT64)) AS total_tokens
FROM
  `[PROJECT_ID].global._Default._Default`
WHERE
  log_id = "businessaicode.googleapis.com/inference_response"
  AND JSON_VALUE(labels.model_provider) = "Anthropic"
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY
  model
ORDER BY
  total_tokens DESC

לפני שמתחילים

לפני שמבצעים את השלבים במדריך, צריך לוודא שהפרויקט עומד בדרישות הבאות:

  • רישום המטא-נתונים ביומן מופעל. אדמין של כלי AI למפתחים צריך להפעיל את ההגדרה Metadata logging כדי שרשומות inference_response יכללו את טוקן jsonPayload.metadata.
  • יש לכם לפחות את התפקיד Logs Viewer (roles/logging.viewer). התפקיד הרגיל roles/logging.viewer מעניק גישת SQL לתצוגת היומן _Default._Default שמשמשת לאורך המדריך הזה. כדי להריץ שאילתות בתצוגה _Default._AllLogs נדרש מינוי ל-roles/logging.privateLogViewer או ל-roles/logging.viewAccessor.
  • קטגוריית היומנים _Default שלך שודרגה ל-Observability Analytics.
    1. במסוף Google Cloud , עוברים אל Logging > Logs Storage, מוצאים את קטגוריית _Default ובודקים את העמודה Observability Analytics.
    2. אם היא לא מופעלת, לוחצים על עוד > שדרוג לשימוש ב-Observability Analytics. השדרוג משנה את _Default במקום, ואי אפשר לבטל אותו.
    3. המתנה להפצה הראשונית: אחרי שמשדרגים מאגר, ל-Cloud Logging לוקח 30 עד 60 דקות לרענן את מטמוני הניתוב של רשומות יומן חדשות, וכמה שעות למלא מחדש את יומני ההיסטוריה (המילוי מחדש מתחיל שעה אחרי שהשדרוג מסתיים).

המבנה של רשומת היומן

כל קריאה של הסקה פולטת רשומה אחת InferenceResponseLog ביומן businessaicode.googleapis.com%2Finference_response. זהות המודל מתועדת ב-labels, ומספר האסימונים מתועד ב-jsonPayload.metadata:

{
  "logName": "projects/[PROJECT_ID]/logs/businessaicode.googleapis.com%2Finference_response",
  "timestamp": "2026-10-07T17:23:03.495323480Z",
  "labels": {
    "model": "claude-sonnet-5-5",
    "model_provider": "Anthropic",
    "client_name": "antigravity_cli",
    "user_id": "user:user@example.com",
    "trajectory_id": "25cd0b58-58ea-4beb-b2d7-42e0d3fdd96d",
    "request_id": "25cd0b58-58ea-4beb-b2d7-42e0d3fdd96d-19"
  },
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.businessaicode.logging.v1.InferenceResponseLog",
    "metadata": {
      "promptTokenCount": "70825",
      "cachedContentTokenCount": "69079",
      "candidatesTokenCount": "14215",
      "totalTokenCount": "85040"
    }
  }
}

הפניה לשדות וכללי ספירה

השדה LogEntry‏ (Logs Explorer ומדדים מבוססי-יומן) ביטוי SQL ‏ (Observability Analytics) תיאור
labels.model JSON_VALUE(labels.model) מזהה המודל (לדוגמה, claude-sonnet-5-5 עבור Anthropic Claude Sonnet 5.5 או claude-opus-5-5 עבור Anthropic Claude Opus 5.5).
labels.model_provider JSON_VALUE(labels.model_provider) שם הספק (לדוגמה, Anthropic או Google).
labels.user_id JSON_VALUE(labels.user_id) הגורם המאומת (לדוגמה, user:user@example.com).
labels.trajectory_id JSON_VALUE(labels.trajectory_id) מזהה מסלול השיחה או הסוכן. תור משתמש אחד כולל בדרך כלל כמה שיחות request_id במסגרת trajectory_id אחת.
jsonPayload.metadata.promptTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.promptTokenCount) AS INT64) המספר הכולל של טוקנים של קלט לשיחה (כולל טוקנים במטמון).
jsonPayload.metadata.cachedContentTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.cachedContentTokenCount) AS INT64) ‫Subset of promptTokenCount served from prompt cache. הערך לא מופיע אם הוא אפס. לא להוסיף ל-promptTokenCount או ל-totalTokenCount.
jsonPayload.metadata.candidatesTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.candidatesTokenCount) AS INT64) טוקנים של פלט שנוצרו על ידי המודל.
jsonPayload.metadata.thoughtsTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.thoughtsTokenCount) AS INT64) אסימוני נימוקים, כשזה רלוונטי. לא רלוונטי למודלים של Anthropic.
jsonPayload.metadata.totalTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.totalTokenCount) AS INT64) הסכום הכולל הסופי של השיחה. שווה ל-promptTokenCount + candidatesTokenCount (+ thoughtsTokenCount אם קיים).

שלב 1: אימות של יומני רישום נכנסים בכלי Logs Explorer

לפני שמריצים שאילתות SQL, צריך לוודא ש-inference_response רשומות עם מטא-נתונים של טוקנים מגיעות לפרויקט:

  1. במסוף Google Cloud , פותחים את Logging > Logs Explorer.
  2. מדביקים את השאילתה הבאה בעורך השאילתות ומחליפים את [PROJECT_ID] במזהה הפרויקט:

    logName="projects/[PROJECT_ID]/logs/businessaicode.googleapis.com%2Finference_response"
    labels.model_provider="Anthropic"
    
  3. לוחצים על Run query.

  4. בחלונית Log fields (שדות יומן), לוחצים על model (מודל) כדי לראות את התפלגות הבקשות בין המודלים של Anthropic. בתצוגה הזו נספרות בקשות, ולא אסימונים.

שלב 2: סיכום הטוקנים לפי מודל ב-Observability Analytics

  1. במסוף Google Cloud , פותחים את Logging > Observability Analytics.
  2. מגדירים את בורר טווח התאריכים לאפשרות 30 הימים האחרונים (בורר טווח התאריכים מגביל את תוצאות השאילתה בנוסף לסעיף WHERE של ה-SQL).
  3. מדביקים את השאילתה הבאה ומריצים אותה, ומחליפים את [PROJECT_ID] במזהה הפרויקט:

    SELECT
      JSON_VALUE(labels.model) AS model,
      COUNT(*) AS requests,
      SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.promptTokenCount) AS INT64)) AS input_tokens,
      SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.candidatesTokenCount) AS INT64)) AS output_tokens,
      IFNULL(SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.cachedContentTokenCount) AS INT64)), 0) AS cached_tokens,
      IFNULL(SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.thoughtsTokenCount) AS INT64)), 0) AS thoughts_tokens,
      SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.totalTokenCount) AS INT64)) AS total_tokens
    FROM
      `[PROJECT_ID].global._Default._Default`
    WHERE
      log_id = "businessaicode.googleapis.com/inference_response"
      AND JSON_VALUE(labels.model_provider) = "Anthropic"
      AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
    GROUP BY
      model
    ORDER BY
      total_tokens DESC
    

שלב 3: מתכוני SQL נפוצים

כדי לנתח את המגמות היומיות של הטוקנים ואת השיוך של הטוקנים לכל משתמש, משתמשים בשאילתות ה-SQL הבאות ברישום ביומן > Observability Analytics.

מגמת השימוש באסימונים לפי מודל

SELECT
  TIMESTAMP_TRUNC(timestamp, DAY) AS day,
  JSON_VALUE(labels.model) AS model,
  COUNT(*) AS requests,
  SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.totalTokenCount) AS INT64)) AS total_tokens
FROM
  `[PROJECT_ID].global._Default._Default`
WHERE
  log_id = "businessaicode.googleapis.com/inference_response"
  AND JSON_VALUE(labels.model_provider) = "Anthropic"
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY
  day, model
ORDER BY
  day DESC, total_tokens DESC

שיוך לכל משתמש ולכל מודל

SELECT
  JSON_VALUE(labels.user_id) AS user_id,
  JSON_VALUE(labels.model) AS model,
  COUNT(*) AS requests,
  SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.totalTokenCount) AS INT64)) AS total_tokens
FROM
  `[PROJECT_ID].global._Default._Default`
WHERE
  log_id = "businessaicode.googleapis.com/inference_response"
  AND JSON_VALUE(labels.model_provider) = "Anthropic"
  AND JSON_VALUE(labels.user_id) IS NOT NULL
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY
  user_id, model
ORDER BY
  total_tokens DESC

שלב 4: הצמדה ללוח בקרה של Cloud Monitoring

יש שתי אפשרויות ליצירת לוחות בקרה, בהתאם לשאלה אם אתם צריכים פירוט היסטורי או פירוט SQL אד-הוק, או מדד רציף קל משקל:

גישה מתאים במיוחד בשביל האם ההיסטוריה נשמרת מעבר ל-30 יום? יש תמיכה בקיבוץ user_id?
אפשרות א': שמירת תרשים SQL מ-Observability Analytics טבלאות ותרשימים יומיים לכל מודל ולכל משתמש, ללא הגדרת מדדים מוגבל על ידי שמירת נתונים בדלי יומנים (ברירת מחדל היא 30 ימים) כן (ללא מגבלת עוצמה)
אפשרות ב': מדד הפצה מבוסס-יומן מעקב רציף אחרי סדרות זמן והתראות על תוויות עם קרדינליות נמוכה כן (מאוחסן במעקב) לא (עוצמה גבוהה ממצה את מכסת המדדים)

אפשרות א': שמירה ישירות מ-Observability Analytics

  1. מריצים את השאילתה משלב 2 או את השאילתה Daily token trend by model ב-Observability Analytics.
  2. כדי לראות סדרת זמנים או תרשים עמודות, אפשר לעבור מחלונית התוצאות טבלה אל תרשים.
  3. בסרגל הכלים של חלונית התוצאות, לוחצים על Save to dashboard (שמירה במרכז הבקרה) ובוחרים מרכז בקרה קיים של Monitoring או יוצרים מרכז בקרה חדש.

אפשרות ב': יצירת מדד התפלגות מבוסס-יומן

  1. במסוף Google Cloud , עוברים אל רישום ביומן > מדדים מבוססי-יומנים ולוחצים על יצירת מדד.
  2. בוחרים באפשרות הפצה בתור סוג המדד.
  3. מדביקים את השאילתה משלב 1 בשדה Filter ומגדירים את Field name ל-jsonPayload.metadata.totalTokenCount.
  4. הוספת שתי תוויות:
    • ‫model ממופה ל-labels.model
    • ‫model_provider ממופה ל-labels.model_provider

המאמרים הבאים