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_responseincludano il blocco di tokenjsonPayload.metadata. - Disponi almeno del ruolo Visualizzatore log (
roles/logging.viewer). Il ruolo standardroles/logging.viewerconcede l'accesso SQL alla visualizzazione dei log_Default._Defaultutilizzata in questa guida. L'esecuzione di query sulla vista_Default._AllLogsrichiederoles/logging.privateLogVieweroroles/logging.viewAccessor. - È stato eseguito l'upgrade del bucket di log
_Defaultper Observability Analytics.- Nella console Google Cloud , vai a Logging > Archiviazione dei log, trova il bucket
_Defaulte controlla la colonna Observability Analytics. - Se non è abilitato, fai clic su
Altro > Esegui l'upgrade per
utilizzare Observability Analytics. L'upgrade modifica
_Defaultsul posto e non può essere annullato. - 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).
- Nella console Google Cloud , vai a Logging > Archiviazione dei log, trova il bucket
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:
- Nella console Google Cloud , apri Logging > Esplora log.
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"Fai clic su Esegui query.
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
- Nella console Google Cloud , apri Logging > Observability Analytics.
- 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). 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
- Esegui la query del passaggio 2 o la query Tendenza giornaliera dei token per modello in Observability Analytics.
- Passa dal riquadro dei risultati da Tabella a Grafico se vuoi una serie temporale o un grafico a barre visivo.
- 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
- Nella console Google Cloud , vai a Logging > Metriche basate su log, quindi fai clic su Crea metrica.
- Seleziona Distribuzione come tipo di metrica.
- Incolla la query del passaggio 1 nel campo Filtro e imposta Nome campo su
jsonPayload.metadata.totalTokenCount. - Aggiungi due etichette:
modelmappato alabels.modelmodel_providermappato alabels.model_provider
Passaggi successivi
- Visualizzare le metriche degli strumenti per sviluppatori di AI
- Configurare la disponibilità dei modelli degli strumenti per sviluppatori AI
- Configurare le impostazioni di conformità degli strumenti per sviluppatori AI