Anda dapat menghitung konsumsi token menurut model, hari, dan pengguna untuk model pihak ketiga di alat developer AI, seperti Anthropic Claude Opus 5.5 dan Anthropic Claude Sonnet 5.5, menggunakan Cloud Logging dan Observability Analytics.
Panduan Memulai
Jika bucket log _Default project Anda sudah diupgrade untuk Observability Analytics, jalankan kueri berikut di Logging > Observability Analytics
(ganti [PROJECT_ID] dengan ID project Google Cloud Anda) untuk mendapatkan penggunaan token 30 hari di seluruh model Anthropic pihak ketiga:
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
Sebelum memulai
Pastikan project Anda memenuhi persyaratan berikut sebelum menjalankan langkah-langkah tutorial:
- Logging metadata diaktifkan. Kontrol administrator alat developer AI Anda harus mengaktifkan Pencatatan log metadata agar catatan
inference_responsemenyertakan blok tokenjsonPayload.metadata. - Anda memiliki setidaknya peran Logs Viewer (
roles/logging.viewer). Peranroles/logging.viewerstandar memberikan akses SQL ke tampilan log_Default._Defaultyang digunakan di seluruh panduan ini. Membuat kueri tampilan_Default._AllLogsmemerlukanroles/logging.privateLogVieweratauroles/logging.viewAccessor. - Bucket log
_DefaultAnda diupgrade untuk Observability Analytics.- Di konsol Google Cloud , buka Logging > Logs Storage, temukan bucket
_Default, dan periksa kolom Observability Analytics. - Jika belum diaktifkan, klik
Lainnya > Upgrade untuk
menggunakan Observability Analytics. Upgrade mengubah
_Defaultdi tempat dan tidak dapat diurungkan. - Izinkan propagasi awal: Setelah mengupgrade bucket, Cloud Logging memerlukan waktu 30 hingga 60 menit untuk memperbarui cache perutean untuk entri log baru, dan beberapa jam untuk mengisi ulang log historis (pengisian ulang dimulai 1 jam setelah upgrade selesai).
- Di konsol Google Cloud , buka Logging > Logs Storage, temukan bucket
Cara struktur rekaman log
Setiap panggilan inferensi memancarkan satu entri InferenceResponseLog ke log
businessaicode.googleapis.com%2Finference_response. Identitas model dicatat di labels, dan jumlah token dicatat di 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"
}
}
}
Referensi kolom dan aturan penghitungan
| Kolom LogEntry (Logs Explorer dan Metrik berbasis log) | Ekspresi SQL (Observability Analytics) | Deskripsi |
|---|---|---|
labels.model |
JSON_VALUE(labels.model) |
ID model (misalnya, claude-sonnet-5-5 untuk Anthropic Claude Sonnet 5.5 atau claude-opus-5-5 untuk Anthropic Claude Opus 5.5). |
labels.model_provider |
JSON_VALUE(labels.model_provider) |
Nama penyedia (misalnya, Anthropic atau Google). |
labels.user_id |
JSON_VALUE(labels.user_id) |
Akun utama yang diautentikasi (misalnya, user:user@example.com). |
labels.trajectory_id |
JSON_VALUE(labels.trajectory_id) |
ID lintasan percakapan atau agen. Satu giliran pengguna biasanya mencakup beberapa panggilan request_id dalam satu trajectory_id. |
jsonPayload.metadata.promptTokenCount |
SAFE_CAST(JSON_VALUE(json_payload.metadata.promptTokenCount) AS INT64) |
Total token input untuk panggilan (termasuk token yang di-cache). |
jsonPayload.metadata.cachedContentTokenCount |
SAFE_CAST(JSON_VALUE(json_payload.metadata.cachedContentTokenCount) AS INT64) |
Subset promptTokenCount disajikan dari cache perintah. Dihilangkan jika nol. Jangan tambahkan ke promptTokenCount atau totalTokenCount. |
jsonPayload.metadata.candidatesTokenCount |
SAFE_CAST(JSON_VALUE(json_payload.metadata.candidatesTokenCount) AS INT64) |
Token output yang dihasilkan oleh model. |
jsonPayload.metadata.thoughtsTokenCount |
SAFE_CAST(JSON_VALUE(json_payload.metadata.thoughtsTokenCount) AS INT64) |
Token penalaran, jika berlaku. Dihilangkan untuk model Anthropic. |
jsonPayload.metadata.totalTokenCount |
SAFE_CAST(JSON_VALUE(json_payload.metadata.totalTokenCount) AS INT64) |
Total otoritatif untuk panggilan. Sama dengan promptTokenCount + candidatesTokenCount (+ thoughtsTokenCount jika ada). |
Langkah 1: Verifikasi log masuk di Logs Explorer
Sebelum menjalankan kueri SQL, pastikan bahwa rekaman inference_response dengan metadata token tiba di project Anda:
- Di konsol Google Cloud , buka Logging > Logs Explorer.
Tempel kueri berikut ke editor kueri, dengan mengganti
[PROJECT_ID]dengan project ID Anda:logName="projects/[PROJECT_ID]/logs/businessaicode.googleapis.com%2Finference_response" labels.model_provider="Anthropic"Klik Run query.
Di panel Log fields, klik model untuk melihat distribusi permintaan di seluruh model Anthropic. Tampilan ini menghitung permintaan, bukan token.
Langkah 2: Jumlahkan token menurut model di Observability Analytics
- Di konsol Google Cloud , buka Logging > Observability Analytics.
- Tetapkan Pemilih rentang waktu ke 30 hari terakhir (pemilih rentang waktu membatasi hasil kueri Anda selain klausa
WHERESQL Anda). Tempel dan jalankan kueri berikut, dengan mengganti
[PROJECT_ID]dengan project ID Anda: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
Langkah 3: Resep SQL umum
Gunakan kueri SQL berikut di Logging > Observability Analytics untuk menganalisis tren token harian dan atribusi token per pengguna.
Tren token harian menurut model
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
Atribusi per pengguna, per model
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
Langkah 4: Sematkan ke dasbor Cloud Monitoring
Anda memiliki dua opsi untuk dasbor, bergantung pada apakah Anda memerlukan perincian SQL historis atau ad hoc, atau metrik berkelanjutan yang ringan:
| Pendekatan | Paling cocok untuk | Mempertahankan histori lebih dari 30 hari? | Mendukung pengelompokan user_id? |
|---|---|---|---|
| Opsi A: Menyimpan diagram SQL dari Observability Analytics | Tabel dan diagram per model, harian, dan per pengguna tanpa penyiapan metrik | Dibatasi oleh retensi bucket log (default 30 hari) | Ya (tidak ada batas kardinalitas) |
| Opsi B: Metrik distribusi berbasis log | Deret waktu Pemantauan Berkelanjutan dan pemberitahuan pada label kardinalitas rendah | Ya (disimpan di Monitoring) | Tidak (kardinalitas tinggi menghabiskan kuota metrik) |
Opsi A: Menyimpan langsung dari Observability Analytics
- Jalankan kueri dari Langkah 2 atau kueri Tren token harian menurut model di Observability Analytics.
- Alihkan panel hasil dari Tabel ke Diagram jika Anda menginginkan deret waktu atau diagram batang visual.
- Di toolbar panel hasil, klik Simpan ke dasbor, lalu pilih dasbor Monitoring yang ada atau buat dasbor baru.
Opsi B: Membuat metrik distribusi berbasis log
- Di konsol Google Cloud , buka Logging > Metrik berbasis log, lalu klik Create metric.
- Pilih Distribusi sebagai jenis metrik.
- Tempelkan kueri dari Langkah 1 ke kolom Filter, lalu tetapkan Nama kolom ke
jsonPayload.metadata.totalTokenCount. - Tambahkan dua label:
modeldipetakan kelabels.modelmodel_providerdipetakan kelabels.model_provider
Langkah berikutnya
- Melihat metrik alat developer AI
- Mengonfigurasi ketersediaan model alat developer AI
- Mengonfigurasi setelan kepatuhan alat developer AI