Monitorare l'utilizzo dei token del modello di terze parti

Puoi calcolare il consumo di token per modello, giorno e utente per i modelli di terze parti in Strumenti per sviluppatori AI, come Anthropic Claude Opus 5.5 e Anthropic Claude Sonnet 5.5, utilizzando Cloud Logging e Observability Analytics.

Guida rapida

Se il bucket di log _Default del tuo progetto è già stato sottoposto ad upgrade per Observability Analytics, esegui la seguente query in Logging > Observability Analytics (sostituendo [PROJECT_ID] con l'ID progetto Google Cloud ) per ottenere l'utilizzo dei token in 30 giorni nei modelli Anthropic di terze parti:

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

Prima di iniziare

Prima di eseguire i passaggi del tutorial, assicurati che il tuo progetto soddisfi i seguenti requisiti:

  • Il logging dei metadati è attivato. I controlli dell'amministratore degli strumenti per sviluppatori di AI devono avere Registrazione dei metadati abilitata in modo che i record inference_response includano il blocco di token jsonPayload.metadata.
  • Disponi almeno del ruolo Visualizzatore log (roles/logging.viewer). Il ruolo standard roles/logging.viewer concede l'accesso SQL alla visualizzazione dei log _Default._Default utilizzata in questa guida. L'esecuzione di query sulla vista _Default._AllLogs richiede roles/logging.privateLogViewer o roles/logging.viewAccessor.
  • È stato eseguito l'upgrade del bucket di log _Default per Observability Analytics.
    1. Nella console Google Cloud , vai a Logging > Archiviazione dei log, trova il bucket _Default e controlla la colonna Observability Analytics.
    2. Se non è abilitato, fai clic su Altro > Esegui l'upgrade per utilizzare Observability Analytics. L'upgrade modifica _Default sul posto e non può essere annullato.
    3. Consenti la propagazione iniziale:dopo l'upgrade di un bucket, Cloud Logging impiega 30-60 minuti per aggiornare le cache di routing per le nuove voci di log e diverse ore per eseguire il backfill dei log storici (il backfill inizia 1 ora dopo il completamento dell'upgrade).

Struttura del record di log

Ogni chiamata di inferenza genera una singola voce InferenceResponseLog nel log businessaicode.googleapis.com%2Finference_response. L'identità del modello è registrata in labels e i conteggi dei token sono registrati in 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"
    }
  }
}

Riferimento ai campi e regole di conteggio

Campo LogEntry (Esplora log e metriche basate su log) Espressione SQL (Observability Analytics) Descrizione
labels.model JSON_VALUE(labels.model) Identificatore del modello (ad esempio, claude-sonnet-5-5 per Anthropic Claude Sonnet 5.5 o claude-opus-5-5 per Anthropic Claude Opus 5.5).
labels.model_provider JSON_VALUE(labels.model_provider) Nome del fornitore (ad esempio, Anthropic o Google).
labels.user_id JSON_VALUE(labels.user_id) Entità autenticata (ad esempio, user:user@example.com).
labels.trajectory_id JSON_VALUE(labels.trajectory_id) ID traiettoria conversazione o agente. Il turno di un utente in genere si estende su più chiamate request_id in un unico trajectory_id.
jsonPayload.metadata.promptTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.promptTokenCount) AS INT64) Token di input totali per la chiamata (inclusi i token memorizzati nella cache).
jsonPayload.metadata.cachedContentTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.cachedContentTokenCount) AS INT64) Sottoinsieme di promptTokenCount gestito dalla cache dei prompt. Omesso quando è zero. Non aggiungere a promptTokenCount o totalTokenCount.
jsonPayload.metadata.candidatesTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.candidatesTokenCount) AS INT64) Token di output generati dal modello.
jsonPayload.metadata.thoughtsTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.thoughtsTokenCount) AS INT64) Token di ragionamento, se applicabili. Omitted for Anthropic models.
jsonPayload.metadata.totalTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.totalTokenCount) AS INT64) Totale autorevole per la chiamata. Uguale a promptTokenCount + candidatesTokenCount (+ thoughtsTokenCount se presente).

Passaggio 1: verifica i log in entrata in Esplora log

Prima di eseguire query SQL, verifica che nel tuo progetto arrivino record inference_response con metadati del token:

  1. Nella console Google Cloud , apri Logging > Esplora log.
  2. Incolla la seguente query nell'editor di query, sostituendo [PROJECT_ID] con il tuo ID progetto:

    logName="projects/[PROJECT_ID]/logs/businessaicode.googleapis.com%2Finference_response"
    labels.model_provider="Anthropic"
    
  3. Fai clic su Esegui query.

  4. Nel riquadro Campi log, fai clic su model per visualizzare la distribuzione delle richieste tra i modelli Anthropic. Questa visualizzazione conteggia le richieste, non i token.

Passaggio 2: somma i token per modello in Observability Analytics

  1. Nella console Google Cloud , apri Logging > Observability Analytics.
  2. Imposta il selettore dell'intervallo di tempo su Ultimi 30 giorni (il selettore dell'intervallo di tempo limita i risultati della query oltre alla clausola SQL WHERE).
  3. Incolla ed esegui la query seguente, sostituendo [PROJECT_ID] con il tuo ID progetto:

    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
    

Passaggio 3: ricette SQL comuni

Utilizza le seguenti query SQL in Logging > Observability Analytics per analizzare le tendenze giornaliere dei token e l'attribuzione dei token per utente.

Tendenza giornaliera dei token per modello

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

Attribuzione per utente e per modello

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

Passaggio 4: aggiungi un grafico a una dashboard di Cloud Monitoring

Hai due opzioni per la creazione di dashboard, a seconda che tu abbia bisogno di suddivisioni SQL storiche o ad hoc o di una metrica continua leggera:

Approccio Ideale per Conserva la cronologia per più di 30 giorni? Supporta il raggruppamento user_id?
Opzione A: salva il grafico SQL da Observability Analytics Tabelle e grafici per modello, giornalieri e per utente senza configurazione delle metriche Limitato dalla conservazione del bucket di log (30 giorni per impostazione predefinita) Sì (nessun limite di cardinalità)
Opzione B: metrica di distribuzione basata su log Serie temporali di monitoraggio continuo e avvisi sulle etichette a bassa cardinalità Sì (memorizzati in Monitoring) No (la cardinalità elevata esaurisce la quota di metriche)

Opzione A: salva direttamente da Observability Analytics

  1. Esegui la query del passaggio 2 o la query Tendenza giornaliera dei token per modello in Observability Analytics.
  2. Passa dal riquadro dei risultati da Tabella a Grafico se vuoi una serie temporale o un grafico a barre visivo.
  3. Nella barra degli strumenti del riquadro dei risultati, fai clic su Salva nella dashboard, quindi scegli una dashboard di monitoraggio esistente o creane una nuova.

Opzione B: crea una metrica di distribuzione basata su log

  1. Nella console Google Cloud , vai a Logging > Metriche basate su log, quindi fai clic su Crea metrica.
  2. Seleziona Distribuzione come tipo di metrica.
  3. Incolla la query del passaggio 1 nel campo Filtro e imposta Nome campo su jsonPayload.metadata.totalTokenCount.
  4. Aggiungi due etichette:
    • model mappato a labels.model
    • model_provider mappato a labels.model_provider

Passaggi successivi