監控資料洞察權杖用量

本文說明如何使用 Cloud Logging 和 Cloud Monitoring,監控 Knowledge Catalog (舊稱 Dataplex Universal Catalog) 資料洞察掃描作業的權杖用量。追蹤每次掃描和每個工作使用的權杖數量,有助於瞭解模型使用趨勢,並估算專案的已計費用。

詞元用量記錄的運作方式

資料洞察掃描工作 (jsonPayload.type="DATA_DOCUMENTATION") 完成並處於 SUCCEEDED 狀態時,Knowledge Catalog 會將記錄項目寫入 dataplex.googleapis.com/data_scan 記錄。這項記錄項目包含 jsonPayload.dataDocumentation 下方的 billableTokenUsage 區塊,記錄工作的權杖細目。作業的其他記錄項目 (例如 CREATED、STARTED、FAILED 或 CANCELLED 事件) 不會包含 billableTokenUsage 區塊。

在 billableTokenUsage 區塊中,您可以追蹤三個主要詞元類別,估算帳單費用:

指標 說明 公式 (使用 billableTokenUsage 欄位)
未快取的輸入詞元 並非由脈絡快取提供的輸入詞元,包括工具使用提示詞元。 max(promptTokenCount - cachedContentTokenCount, 0) + toolUsePromptTokenCount
快取輸入內容詞元 從脈絡快取提供的輸入詞元。由於快取權杖的價格並非標準的非快取輸入費率,因此會分開追蹤。 cachedContentTokenCount
輸出內容詞元 生成的內容詞元加上推論 (思考) 詞元。思考詞元會以輸出詞元計費。 candidatesTokenCount + thoughtsTokenCount

如需權杖定價詳細資料,請參閱「Data Cloud Agent 定價」。

記錄項目中的權杖欄位

每個 dataplex.googleapis.com/data_scan 記錄項目都包含標準資源和工作 ID,例如 resource.labels.datascan_id、resource.labels.location、jsonPayload.jobId 和 jsonPayload.state。如果資料洞察掃描成功,jsonPayload.dataDocumentation.billableTokenUsage 物件會包含下列欄位:

欄位 說明
promptTokenCount 傳送至模型的提示詞元總數,包括快取詞元。
cachedContentTokenCount 從脈絡快取提供的提示詞元比例。
toolUsePromptTokenCount 工具呼叫新增的提示權杖 (例如結構定義、設定檔或查詢記錄背景資訊)。
candidatesTokenCount 生成的回覆詞元,不含思考詞元。
thoughtsTokenCount 模型生成的推理 (思考) 權杖。

以下範例顯示資料洞察掃描工作成功時的 dataplex.googleapis.com/data_scan 記錄項目:

{
  "resource": {
    "type": "dataplex.googleapis.com/DataScan",
    "labels": {
      "datascan_id": "my-insights-scan",
      "location": "us-central1",
      "resource_container": "projects/1234567890"
    }
  },
  "jsonPayload": {
    "type": "DATA_DOCUMENTATION",
    "jobId": "8f2b3c4d-1234-5678-9abc-def012345678",
    "state": "SUCCEEDED",
    "dataDocumentation": {
      "billableTokenUsage": {
        "promptTokenCount": "20412",
        "candidatesTokenCount": "7053"
      }
    }
  }
}

在這個範例中,工作未使用脈絡快取、思考詞元或工具呼叫。因此,非快取輸入權杖等於 20,412,快取輸入權杖等於 0,輸出權杖等於 7,053。

事前準備

查詢資料洞察權杖記錄或建立監控資訊主頁前,請先完成下列必要條件。

必要的角色

如要取得監控資料洞察權杖用量所需的權限,請要求管理員在專案中授予您下列 IAM 角色:

  • 查看資料掃描記錄及執行 Observability Analytics 查詢:記錄檢視器 (roles/logging.viewer)
  • 在 Monitoring 中建立自訂資訊主頁:Monitoring 編輯者 (roles/monitoring.editor)
  • 在 Monitoring 中查看自訂資訊主頁:Monitoring 檢視者 (roles/monitoring.viewer)

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

啟用 API

啟用 Dataplex、Logging 和 Monitoring API (如果尚未啟用)。

啟用 API 時所需的角色

如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過服務使用情形管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

啟用 API

驗證記錄檔路徑設定

資料洞察掃描作業會將記錄寫入記錄檔名稱 dataplex.googleapis.com/data_scan 下方。本文中的資訊主頁設定會從專案的 _Default 記錄檔 bucket 讀取這些記錄。確認專案的記錄檔路由符合下列條件:

  • _Default 接收器已啟用,並將記錄檔轉送至 _Default 記錄檔 bucket。
  • _Default 接收器沒有排除篩選器,可捨棄 dataplex.googleapis.com/data_scan 或 DATA_DOCUMENTATION 記錄。

控制台

  1. 前往 Google Cloud 控制台的「記錄檔 > 記錄檔路由器」頁面。

    前往 Log Router

  2. 找出 _Default 接收器,確認其狀態為「已啟用」,且目的地為 _Default 值區。

  3. 按一下接收器的選單 (),然後選取「查看接收器詳細資料」。確認沒有任何排除篩選器與 dataplex.googleapis.com/data_scan 或 DATA_DOCUMENTATION 相符。

gcloud

說明 _Default 接收器,檢查其狀態、目的地和排除篩選器:

gcloud logging sinks describe _Default --project=PROJECT_ID

將 PROJECT_ID 替換為您的 Google Cloud專案 ID。

確認 disabled 未設為 true,destination 以 /buckets/_Default 結尾,且 exclusions 底下沒有與 data_scan 相符的項目。

在 _Default bucket 啟用 Observability Analytics

如要對資料洞察掃描記錄執行 SQL 查詢,並啟用自訂 Observability Analytics 資訊主頁,請將專案的 _Default 記錄檔 bucket 升級為使用 Observability Analytics。

在 _Default 記錄檔 bucket 中啟用 Observability Analytics 前,請先詳閱下列注意事項:

  • bucket 升級為 Observability Analytics 後就無法復原,且不會產生額外費用。
  • 您不需要建立連結的 BigQuery 資料集。
  • Observability Analytics SQL 查詢只會傳回升級完成後收到的記錄。您仍可在 Logs Explorer 中查看舊記錄,但不會顯示在 SQL 查詢結果中。升級值區後,請至少執行一次資料洞察掃描,這樣資訊主頁就會有資料可供顯示。

控制台

  1. 在 Google Cloud 控制台中,前往「記錄檔 > 記錄檔儲存空間」頁面。

    前往「記錄檔儲存空間」

  2. 找出 _Default bucket 列,並查看「Observability Analytics available」(可使用 Observability Analytics) 欄:

    • 如果該欄顯示「Open」(開啟),表示 Observability Analytics 已啟用。
    • 如果該欄顯示「Upgrade」(升級),請按一下「Upgrade」(升級) 並確認升級。
  3. 稍候幾分鐘,直到資料欄狀態變更為「Open」(開啟)。

gcloud

  1. 升級 _Default 記錄檔 bucket,啟用 Observability Analytics:

    gcloud logging buckets update _Default \
        --location=global --enable-analytics --project=PROJECT_ID
    

    將 PROJECT_ID 替換為 Google Cloud 專案 ID。

  2. 幾分鐘後,請確認升級作業已完成:

    gcloud logging buckets describe _Default \
        --location=global --project=PROJECT_ID
    

    確認輸出內容包含 analyticsEnabled: true。

在 Logs Explorer 中查看各項工作的權杖用量

如要檢查個別資料洞察掃描工作的權杖用量,請使用 Logs Explorer 或 Google Cloud CLI。如要查看專案的每小時或每日匯總資料,請使用 Observability Analytics 建立資訊主頁。

控制台

  1. 前往 Google Cloud 控制台的「記錄」>「Logs Explorer」頁面。

    前往「Logs Explorer」頁面

  2. 如果看不到查詢編輯器,請開啟「Show query」(顯示查詢)。

  3. 在查詢編輯器中輸入下列查詢:

    log_id("dataplex.googleapis.com/data_scan")
    jsonPayload.type="DATA_DOCUMENTATION"
    jsonPayload.dataDocumentation.billableTokenUsage.promptTokenCount:*
    

    選用:如要篩選特定掃描或工作執行作業,請在查詢中附加下列其中一行:

    resource.labels.datascan_id="DATA_SCAN_ID"
    jsonPayload.jobId="JOB_ID"
    

    更改下列內容:

    • DATA_SCAN_ID:資料洞察掃描的 ID。
    • JOB_ID:特定掃描作業執行的 ID。
  4. 選取時間範圍 (例如「過去 24 小時」),然後按一下「執行查詢」。

  5. 展開記錄項目,然後依序點選 jsonPayload > dataDocumentation > billableTokenUsage,檢查該項作業的權杖數量。

gcloud

讀取最近的資料洞察掃描記錄項目,並將權杖欄位格式化為表格:

gcloud logging read \
    'log_id("dataplex.googleapis.com/data_scan") AND jsonPayload.type="DATA_DOCUMENTATION" AND jsonPayload.dataDocumentation.billableTokenUsage.promptTokenCount:*' \
    --project=PROJECT_ID --freshness=1d --limit=20 \
    --format='table(timestamp, resource.labels.datascan_id:label=SCAN,
jsonPayload.jobId:label=JOB,
jsonPayload.dataDocumentation.billableTokenUsage.promptTokenCount:label=PROMPT,
jsonPayload.dataDocumentation.billableTokenUsage.cachedContentTokenCount:label=CACHED,
jsonPayload.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount:label=TOOL_USE,
jsonPayload.dataDocumentation.billableTokenUsage.candidatesTokenCount:label=CANDIDATES,
jsonPayload.dataDocumentation.billableTokenUsage.thoughtsTokenCount:label=THOUGHTS)'

將 PROJECT_ID 替換為您的 Google Cloud專案 ID。

輸出表格中的空白資料欄,表示該欄位為 0 符記。 如要將這些欄位轉換為指標,請使用「權杖用量記錄的運作方式」中的公式。

使用 Observability Analytics 查詢權杖用量

您也可以直接在Google Cloud 控制台的「記錄檔分析」頁面中,執行或自訂小工具的 SQL 查詢。

每日和每小時圖表共用相同的圖表查詢,每項掃描工作會傳回一列。每個圖表小工具都會依天 (timeBinSize: 86400s) 或小時 (timeBinSize: 3600s) 將資料列分組並加總。如果您編輯圖表查詢並貼回資訊主頁小工具,請保留資料欄別名 timestamp、total_non_cached_input_tokens、total_cached_input_tokens 和 total_output_tokens。

如要將查詢篩選為單一掃描,請在 WHERE 子句中附加下列條件:

AND JSON_VALUE(resource.labels, '$.datascan_id') = 'DATA_SCAN_ID'

將 DATA_SCAN_ID 替換為資料洞察掃描作業的 ID。

圖表查詢範例 (每日和每小時圖表)

SELECT
  timestamp,
  GREATEST(
    IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)
    - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),
    0)
  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)
    AS total_non_cached_input_tokens,
  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)
    AS total_cached_input_tokens,
  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)
  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)
    AS total_output_tokens
FROM `PROJECT_ID.global._Default._Default`
WHERE
  log_id = 'dataplex.googleapis.com/data_scan'
  AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'
  AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL

將 PROJECT_ID 替換為您的 Google Cloud專案 ID。

個別掃描工作查詢範例

SELECT
  timestamp,
  JSON_VALUE(resource.labels, '$.datascan_id') AS data_scan_id,
  JSON_VALUE(resource.labels, '$.location') AS location,
  JSON_VALUE(json_payload, '$.jobId') AS job_id,
  JSON_VALUE(json_payload, '$.state') AS state,
  GREATEST(
    IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)
    - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),
    0)
  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)
    AS non_cached_input_tokens,
  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)
    AS cached_input_tokens,
  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)
  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)
    AS output_tokens
FROM `PROJECT_ID.global._Default._Default`
WHERE
  log_id = 'dataplex.googleapis.com/data_scan'
  AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'
  AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL
ORDER BY timestamp DESC
LIMIT 500

將 PROJECT_ID 替換為您的 Google Cloud專案 ID。

使用 Observability Analytics 建立資訊主頁

如要以圖表呈現及追蹤模型權杖用量變化,您可以使用 Observability Analytics 建立自訂 Monitoring 資訊主頁。

這個方法會直接對 _Default 記錄檔 bucket 中的資料洞察掃描記錄執行 SQL 查詢。這項功能有幾項優點:

  • 準確度:查詢會直接從記錄項目 JSON 酬載計算確切的權杖數量,而非匯總指標估計值。
  • 詳細工作記錄:除了匯總圖表,您還可以在表格檢視畫面中檢查個別掃描工作。
  • 無須額外付費:將 _Default 記錄檔 bucket 升級至 Observability Analytics 不會產生額外費用。

這個選項會建立 Monitoring 資訊主頁,其中包含三個小工具,可對記錄執行 SQL 查詢:

  • 每日權杖用量 (堆疊長條圖)
  • 每小時詞元用量 (折線圖)
  • 每個掃描工作的權杖用量 (表格顯示最近 500 項工作)

下列資訊主頁 JSON 設定使用內建的 @__project_id 變數 (@__project_id.global._Default._Default),會自動查詢您開啟資訊主頁的專案。匯入 JSON 前,您不需要編輯 JSON 中的任何專案預留位置。

控制台

  1. 在 Google Cloud 控制台,依序前往「Monitoring」>「Dashboards」頁面。

    前往「Dashboards」(資訊主頁)

  2. 按一下「Create dashboard」(建立資訊主頁)。

  3. 在工具列中,按一下 「Settings」(設定),選取「JSON」,然後選取「JSON Editor」(JSON 編輯器)。

  4. 將編輯器中的現有內容,替換為下一節提供的資訊主頁 JSON 定義。

  5. 按一下「套用變更」。啟用自動儲存功能後,Monitoring 會將資訊主頁儲存為 Data Insights - Token Usage。

  6. 首次開啟資訊主頁時,每個小工具都會提示您確認在專案的 BigQuery 引擎上執行 SQL 查詢。確認提示列出您的專案,然後按一下每個小工具上的「繼續執行」。

  7. 在資訊主頁工具列中選取日期範圍 (例如「Last 7 days」(過去 7 天))。

gcloud

  1. 將資訊主頁 JSON 定義儲存至名為 dashboard.json 的本機檔案。
  2. 在 Monitoring 中建立資訊主頁:

    gcloud monitoring dashboards create \
        --project=PROJECT_ID \
        --config-from-file=dashboard.json
    

    將 PROJECT_ID 替換為Google Cloud 專案 ID。

  3. 在 Google Cloud 控制台中開啟「Dashboards」(資訊主頁) 頁面,選取「Insights Scan - Token Usage」(深入分析掃描 - 權杖用量),然後在每個小工具上點選「Continue execution」(繼續執行),授權執行 SQL 查詢。

資訊主頁 JSON 定義

如要建立資訊主頁,請展開下列部分並複製 JSON 定義:

JSON 定義

{
  "displayName": "Data Insights - Token Usage",
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "xPos": 0,
        "yPos": 0,
        "width": 24,
        "height": 16,
        "widget": {
          "title": "Daily token usage",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR",
              "displayHorizontal": false
            },
            "dataSets": [
              {
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "breakdowns": [],
                "dimensions": [
                  {
                    "column": "timestamp",
                    "columnType": "TIMESTAMP",
                    "sortColumn": "timestamp",
                    "sortOrder": "SORT_ORDER_ASCENDING",
                    "timeBinSize": "86400s"
                  }
                ],
                "measures": [
                  {
                    "column": "total_non_cached_input_tokens",
                    "aggregationFunction": {
                      "type": "sum",
                      "parameters": []
                    }
                  },
                  {
                    "column": "total_cached_input_tokens",
                    "aggregationFunction": {
                      "type": "sum",
                      "parameters": []
                    }
                  },
                  {
                    "column": "total_output_tokens",
                    "aggregationFunction": {
                      "type": "sum",
                      "parameters": []
                    }
                  }
                ],
                "timeSeriesQuery": {
                  "opsAnalyticsQuery": {
                    "sql": "SELECT\n  timestamp,\n  GREATEST(\n    IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)\n    - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),\n    0)\n  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)\n    AS total_non_cached_input_tokens,\n  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)\n    AS total_cached_input_tokens,\n  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)\n  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)\n    AS total_output_tokens\nFROM `@__project_id.global._Default._Default`\nWHERE\n  log_id = 'dataplex.googleapis.com/data_scan'\n  AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'\n  AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL"
                  }
                }
              }
            ],
            "yAxis": {
              "label": "tokens",
              "scale": "LINEAR"
            }
          }
        }
      },
      {
        "xPos": 24,
        "yPos": 0,
        "width": 24,
        "height": 16,
        "widget": {
          "title": "Hourly token usage",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR",
              "displayHorizontal": false
            },
            "dataSets": [
              {
                "plotType": "LINE",
                "targetAxis": "Y1",
                "breakdowns": [],
                "dimensions": [
                  {
                    "column": "timestamp",
                    "columnType": "TIMESTAMP",
                    "sortColumn": "timestamp",
                    "sortOrder": "SORT_ORDER_ASCENDING",
                    "timeBinSize": "3600s"
                  }
                ],
                "measures": [
                  {
                    "column": "total_non_cached_input_tokens",
                    "aggregationFunction": {
                      "type": "sum",
                      "parameters": []
                    }
                  },
                  {
                    "column": "total_cached_input_tokens",
                    "aggregationFunction": {
                      "type": "sum",
                      "parameters": []
                    }
                  },
                  {
                    "column": "total_output_tokens",
                    "aggregationFunction": {
                      "type": "sum",
                      "parameters": []
                    }
                  }
                ],
                "timeSeriesQuery": {
                  "opsAnalyticsQuery": {
                    "sql": "SELECT\n  timestamp,\n  GREATEST(\n    IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)\n    - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),\n    0)\n  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)\n    AS total_non_cached_input_tokens,\n  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)\n    AS total_cached_input_tokens,\n  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)\n  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)\n    AS total_output_tokens\nFROM `@__project_id.global._Default._Default`\nWHERE\n  log_id = 'dataplex.googleapis.com/data_scan'\n  AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'\n  AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL"
                  }
                }
              }
            ],
            "yAxis": {
              "label": "tokens",
              "scale": "LINEAR"
            }
          }
        }
      },
      {
        "xPos": 0,
        "yPos": 16,
        "width": 48,
        "height": 20,
        "widget": {
          "title": "Token usage per scan job (latest 500)",
          "timeSeriesTable": {
            "columnSettings": [],
            "dataSets": [
              {
                "tableTemplate": "",
                "timeSeriesQuery": {
                  "opsAnalyticsQuery": {
                    "sql": "SELECT\n  timestamp,\n  JSON_VALUE(resource.labels, '$.datascan_id') AS data_scan_id,\n  JSON_VALUE(resource.labels, '$.location') AS location,\n  JSON_VALUE(json_payload, '$.jobId') AS job_id,\n  JSON_VALUE(json_payload, '$.state') AS state,\n  GREATEST(\n    IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)\n    - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),\n    0)\n  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)\n    AS non_cached_input_tokens,\n  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)\n    AS cached_input_tokens,\n  IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)\n  + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)\n    AS output_tokens\nFROM `@__project_id.global._Default._Default`\nWHERE\n  log_id = 'dataplex.googleapis.com/data_scan'\n  AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'\n  AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL\nORDER BY timestamp DESC\nLIMIT 500"
                  }
                }
              }
            ],
            "metricVisualization": "NUMBER"
          }
        }
      }
    ]
  }
}

限制

  • 只有在dataplex.googleapis.com/data_scan記錄檔未遭排除或未從 _Default 記錄檔 bucket 路由傳送時,權杖指標才會完整。
  • 只有含權杖中繼資料的成功工作才會計入。不含 billableTokenUsage 區塊的記錄項目會從查詢和指標中排除。
  • 這些資訊主頁可用於監控用量趨勢和估算費用,而非用於核對正式的 Cloud Billing 帳單。
  • 每個 Google Cloud 專案都需要設定專屬資訊主頁。
  • SQL 查詢不會傳回在 _Default bucket 啟用 Observability Analytics 前寫入的記錄項目。
  • 每個工作的表格小工具最多會顯示所選日期範圍內最近的 500 個工作。如要檢查較舊的工作,請查詢 Logs Explorer。

後續步驟