Dokumen ini menjelaskan cara mengaktifkan pengumpulan dan penyimpanan Gemini untuk Google Cloud aktivitas, termasuk hal berikut:
- Gemini untuk Google Cloud perintah dan log respons, seperti input pengguna, informasi kontekstual, dan respons.
- Gemini untuk Google Cloud log metadata, seperti metadata telemetri dan baris kode yang diterima oleh pengguna.
Jika Anda perlu membuat metrik Gemini Code Assist, lihat Memantau penggunaan Gemini untuk Google Cloud .
Gemini untuk Google Cloud tidak mengumpulkan atau mengirim ke
Cloud Logging interaksi pengguna lainnya yang mungkin dimiliki pengguna dengan
Gemini untuk Google Cloud, termasuk masukan tertulis. Data yang dikumpulkan dikirim ke Cloud Logging untuk penyimpanan. Anda dapat meninjau data ini dengan menelusuri entri log dengan jenis resource cloudaicompanion.googleapis.com/Instance.
Fitur ini tidak mencatat perintah atau respons ke dalam log di Gemini di Vertex AI. Untuk mengaktifkan log untuk Gemini di Vertex AI, lihat Mengaktifkan log audit Akses Data.
Peran Pengelolaan Akses dan Identitas (IAM) mengontrol kemampuan pokok untuk mengakses log. Anda dapat memberikan peran yang telah ditetapkan kepada pokok, atau Anda dapat membuat peran khusus. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan, lihat Kontrol akses.
Secara default, Cloud Logging mengenktipsi konten pelanggan yang disimpan dalam penyimpanan. Data yang disimpan di bucket log oleh Logging akan dienkripsi menggunakan kunci enkripsi kunci, sebuah proses yang dikenal dengan sebutan enkripsi envelope. Akses ke data logging Anda membutuhkan akses ke kunci enkripsi kunci yang dikelola Google untuk Anda, dan Anda tidak perlu melakukan tindakan apa pun.
Organisasi Anda mungkin memiliki persyaratan enkripsi tingkat lanjut, terkait kepatuhan, atau peraturan yang tidak disediakan oleh enkripsi default kami dalam penyimpanan. Untuk memenuhi persyaratan organisasi Anda, Anda dapat mengelola kunci Anda, bukan Google yang mengelola kunci enkripsi yang melindungi data Anda.
Untuk mengetahui informasi spesifik tentang penggunaan kunci enkripsi yang dikelola pelanggan (CMEK), termasuk keuntungan dan batasannya, lihat Kunci enkripsi yang dikelola pelanggan.
Batasan
Pengumpulan data log Gemini dibatasi untuk interaksi pengguna dengan Gemini Code Assist dalam IDE. Google Cloud
Secara default, log Gemini untuk Google Cloud dikumpulkan berdasarkan per project. Untuk mengetahui petunjuk cara mengonfigurasi project terpusat untuk mengumpulkan log dari beberapa project, lihat Menyiapkan logging multi-project.
Gemini Code Assist di GitHub tidak mendukung logging dengan Cloud Logging.
Sebelum memulai
-
Untuk mendapatkan izin yang diperlukan untuk melihat log Gemini untuk Google Cloud , minta administrator untuk memberi Anda peran IAM Logs Viewer (
roles/logging.viewer) di project Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Tinjau harga Cloud Logging dan harga Gemini untuk Google Cloud sebelum mengaktifkan logging Gemini untuk Google Cloud .
Melihat log pengguna Gemini untuk Google Cloud dan log metadata
Untuk melihat log pengguna Gemini untuk Google Cloud dan log metadata, lakukan salah satu hal berikut:
Konsol
-
Di Google Cloud konsol, buka halaman Logs Explorer:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.
- Di toolbar, pilih project Google Cloud konsol.
- Di toolbar, luaskan menu All resources dan pilih resource Cloud AI Companion Instance.
gcloud
Jalankan perintah berikut:
gcloud logging read "resource.type=cloudaicompanion.googleapis.com/Instance" --project PROJECT_ID --limit 3
Ganti PROJECT_ID dengan ID project yang
Gemini untuk Google Cloud lognya ingin Anda lihat.
API
Buat file JSON yang berisi informasi berikut:
{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "resource.type: cloudaicompanion.googleapis.com/Instance" }Ganti
PROJECT_IDdengan ID project yang log Gemini untuknya ingin Anda lihat. Google CloudDapatkan token autentikasi:
TOKEN=$(gcloud auth print-access-token)Gunakan
cURLuntuk memanggil metodeentries.list:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ "https://logging.googleapis.com/v2/entries:list"
Ganti
JSON_FILE_NAMEdengan jalur untuk file JSON yang Anda buat pada langkah sebelumnya.Untuk mengetahui informasi selengkapnya tentang autentikasi, lihat Melakukan autentikasi untuk menggunakan REST.
Respons menampilkan kumpulan entri log.
Log Gemini untuk Google Cloud
A LogEntry merupakan satuan dasar data dalam Cloud Logging. Bagian berikut memberikan daftar kolom yang ditemukan
di LogEntry untuk peristiwa platform Gemini untuk Google Cloud , seperti
permintaan pengguna dan respons Gemini untuk Google Cloud .
Permintaan pengguna
Tabel berikut menampilkan daftar kolom yang ditemukan dalam entri log permintaan pengguna:
| Kolom | Nilai dan catatan |
|---|---|
LogEntry.resource.type |
Gemini untuk Google Cloud jenis resource: cloudaicompanion.googleapis.com/Instance. |
LogEntry.resource.labels.resource_container |
ID unik dari Resource Container tempat Gemini for Google Cloud digunakan. |
LogEntry.resource.labels.location |
Lokasi tempat Gemini untuk Google Cloud digunakan. |
LogEntry.resource.labels.instance_id |
ID unik dari resource tempat Gemini for Google Cloud digunakan. |
LogEntry.labels.method |
Dapat berupa salah satu hal berikut, bergantung pada apa yang memanggil logEntry:CompleteTask: misalnya, permintaan chat dari Gemini Code Assist atau layanan Gemini untuklainnya.GenerateCode: misalnya, permintaan untuk membuat kode, seperti dengan permintaan transformasi kode dalam Gemini Code Assist.CompleteCode: misalnya, permintaan untuk menyelesaikan kode saat bekerja di IDE, seperti dengan saran inline dalam Gemini Code Assist. Google Cloud |
LogEntry.labels.product |
Nama layanan Gemini untuk Google Cloud Jika produk Gemini untuk Google Cloud adalah Gemini Code Assist, nilai ini adalah code_assist. Jika produk Gemini untuk Google Cloud adalah Gemini Cloud Assist, nilai ini adalah cloud_assist. Jika tidak, nilai ini adalah unknown. |
LogEntry.labels.request_id |
ID unik untuk menghubungkan permintaan ke suatu entri log respons. |
LogEntry.labels.user_id |
ID pengguna yang memulai permintaan ini. |
LogEntry.jsonPayload |
Payload entri log. |
LogEntry.logName |
Mengidentifikasi log. |
Contoh berikut menampilkan contoh entri log untuk peristiwa perintah chat:
{
"insertId": "654581e30003b19e340bbd96",
"resource": {
"type": "cloudaicompanion.googleapis.com/Instance",
"labels": {
instance_id: "default"
location: "global"
resource_container: "my-project-id"
}
},
"timestamp": "2023-11-03T23:27:31.242078Z",
"labels": {
"product": "code_assist",
"request_id": "4ea1e265-ea5d-4d11-b3c8-39bad9c96326"
"user_id": "user@company.com"
},
"jsonPayload" : {
@type: "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.RequestLog"
"taskCompletionRequest":
input: {
messages: [{
author: "USER"
content: "What are some best practices to save cost on my Google Cloud bill?"
}]
preamble: ""
}
}
"logName": "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Frequest",
"receiveTimestamp": "2023-11-03T23:27:31.255648319Z"
"severity": "INFO"
}
Contoh berikut menampilkan contoh RequestLog entri untuk otomatis
saran kode inline
perintah dan
perintah Gemini untuk Google Cloud dalam file kode.
Data perintah untuk saran kode inline menggunakan objek codeCompletionRequest (seperti yang ditunjukkan dalam contoh berikut), sedangkan pembuatan yang dipicu secara manual menggunakan codeGenerationRequest.
{
"insertId": "654581e30003b19e340bbd96",
"resource": {
"type": "cloudaicompanion.googleapis.com/Instance",
"labels": {
instance_id: "default"
location: "global"
resource_container: "my-project-id"
}
},
"timestamp": "2023-11-03T23:27:31.242078Z",
"labels": {
"product": "code_assist",
"request_id": "4ea1e265-ea5d-4d11-b3c8-39bad9c96326"
"user_id": "user@company.com"
},
"jsonPayload" : {
@type: "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.RequestLog"
"codeCompletionRequest": {
"input_data_context": {
"additional_context": {
"files": [
{
"language": "go",
"path": "{/path/to/../current-file.go",
"segments": [
{
"content": "...Prefix Text..."
},
{
"content": "...Suffix Text..."
}
],
"state": ["EDITED"]
},
{
"language": "go",
"path": "/path/to/../recent-file.go",
"segments": [
{
"content": "...File Text..."
}
],
"state": ["RECENTLY_OPENED"]
}
]
}
}
}
}
"logName": "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Frequest",
"receiveTimestamp": "2023-11-03T23:27:31.255648319Z"
"severity": "INFO"
}
Log interaksi agen
Beberapa interaksi dengan Gemini dapat menghasilkan beberapa entri log (permintaan, respons, dan metadata) untuk satu tindakan pengguna. Contoh interaksi tersebut meliputi:
- Agen yang melakukan tugas yang melibatkan penggunaan alat (misalnya, model yang memanggil fungsi internal seperti
read_fileataureplace, seperti yang ditunjukkan dalam contoh log). - Agen yang berinteraksi dengan agen lain.
Entri log permintaan
Contoh berikut menampilkan contoh entri log untuk permintaan yang memulai interaksi agen:
{
"insertId": "qe9xxub2r",
"jsonPayload": {
"taskCompletionRequest": {
"input": {
"messages": [
{
"author": "USER",
"content": "hi can you add one test here\nCurrent File Path:\n```cpp\n/usr/local/google/home/pdec/test.cpp\n```\n\n"
}
],
"preamble": ""
}
},
"@type": "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.RequestLog"
},
"resource": {
"type": "cloudaicompanion.googleapis.com/Instance",
"labels": {
"resource_container": "my-project-id",
"instance_id": "default",
"location": "global"
}
},
"timestamp": "2025-10-08T10:09:52.225165428Z",
"severity": "INFO",
"labels": {
"request_id": "e60facb1485b17b7",
"client_version": "unknown",
"product": "code_assist",
"method": "CompleteTask",
"user_id": "user@company.com",
"client_name": "cloudcode_cli"
},
"logName": "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Frequest",
"receiveTimestamp": "2025-10-08T10:09:52.581787548Z"
}
Entri log respons
Contoh berikut menampilkan contoh entri log respons dari interaksi agen yang menyertakan beberapa pesan:
{
"insertId": "qe9xxub2t",
"jsonPayload": {
"@type": "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.ResponseLog",
"taskCompletionResponse": {
"output": {
"messages": [
{
"content": "**Reading File Contents**\n\nI'm currently focused on reading the contents of `/usr/local/google/home/pdec/test.cpp`. This will inform what kind of test needs to be written and how it should be structured.\n\n\n",
"author": "MODEL"
},
{
"author": "MODEL",
"content": "**File Inspection Begins**\n\nI've initiated the process of reading the test file. My immediate goal is to grasp its existing structure and identify the testing framework, if one exists. This will directly influence the design of the new test case I'll be adding.\n\n\n"
},
{
"author": "MODEL",
"content": "Of course. What is the test about? I'll read the file to understand the context."
},
{
"content": "read_file({\"absolute_path\":\"/usr/local/google/home/pdec/test.cpp\"})",
"author": "MODEL"
}
]
}
}
},
"resource": {
"type": "cloudaicompanion.googleapis.com/Instance",
"labels": {
"resource_container": "my-project-id",
"instance_id": "default",
"location": "global"
}
},
"timestamp": "2025-10-08T10:09:52.227354297Z",
"severity": "INFO",
"labels": {
"product": "code_assist",
"request_id": "e60facb1485b17b7",
"user_id": "user@company.com",
"client_version": "unknown",
"method": "CompleteTask",
"client_name": "cloudcode_cli"
},
"logName": "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Fresponse",
"receiveTimestamp": "2025-10-08T10:09:52.581787548Z"
}
Entri log metadata
Contoh berikut menampilkan contoh entri log metadata dari interaksi agen:
{
"insertId": "qe9xxub2s",
"jsonPayload": {
"apiRequest": {},
"clientName": "cloudcode_cli",
"requestId": "e60facb1485b17b7",
"@type": "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog",
"clientVersion": "unknown"
},
"resource": {
"type": "cloudaicompanion.googleapis.com/Instance",
"labels": {
"location": "global",
"instance_id": "default",
"resource_container": "my-project-id"
}
},
"timestamp": "2025-10-08T10:09:52.226420727Z",
"severity": "INFO",
"labels": {
"method": "CompleteTask",
"product": "code_assist",
"user_id": "user@company.com"
},
"logName": "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Fmetadata",
"receiveTimestamp": "2025-10-08T10:09:52.581787548Z"
}
Contoh berikut menampilkan contoh lain entri log untuk interaksi agen, dengan ID permintaan 4b66a582bad9cf2c:
Entri log permintaan
{
"insertId": "4qvt8nb2k",
"jsonPayload": {
"taskCompletionRequest": {
"input": {
"messages": [
{
"author": "USER",
"content": "FunctionResponse{name: read_file, response: {\"output\":\"#include <iostream>\\n\\n// Function to calculate the greatest common divisor (GCD) of two numbers.\\nint gcd(int a, int b) {\\n if (b == 0) {\\n return a;\\n }\\n return gcd(b, a % b);\\n}\\n\\n// Function to calculate the least common multiple (LCM) of two numbers.\\nint lcm(int a, int b) {\\n return (a * b) / gcd(a, b);\\n}\\n\\n// Function to check if a number is prime.\\nint is_prime(int a) {\\n if (a < 2) {\\n return 0;\\n }\\n for (int i = 2; i * i <= a; ++i) {\\n if (a % i == 0) {\\n return 0;\\n }\\n }\\n return 1;\\n}\\n\\n// Function for extended Euclidean algorithm.\\nint extended_gcd(int a, int b, int &x, int &y) {\\n if (b == 0) {\\n x = 1;\\n y = 0;\\n return a;\\n }\\n int x1, y1;\\n int d = extended_gcd(b, a % b, x1, y1);\\n x = y1;\\n y = x1 - (a / b) * y1;\\n return d;\\n}\\n\\n// Test function\\nvoid run_tests() {\\n // Test gcd\\n if (gcd(10, 15) == 5) {\\n std::cout << \\\"gcd(10, 15) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"gcd(10, 15) failed\\\" << std::endl;\\n }\\n\\n // Test lcm\\n if (lcm(10, 15) == 30) {\\n std::cout << \\\"lcm(10, 15) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"lcm(10, 15) failed\\\" << std::endl;\\n }\\n\\n // Test is_prime\\n if (is_prime(7) == 1) {\\n std::cout << \\\"is_prime(7) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"is_prime(7) failed\\\" << std::endl;\\n }\\n if (is_prime(10) == 0) {\\n std::cout << \\\"is_prime(10) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"is_prime(10) failed\\\" << std::endl;\\n }\\n\\n // Test extended_gcd\\n int x, y;\\n int g = extended_gcd(35, 15, x, y);\\n if (g == 5 && 35 * x + 15 * y == g) {\\n std::cout << \\\"extended_gcd(35, 15) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"extended_gcd(35, 15) failed\\\" << std::endl;\\n }\\n\\n // Test is_prime with 1\\n if (is_prime(1) == 0) {\\n std::cout << \\\"is_prime(1) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"is_prime(1) failed\\\" << std::endl;\\n }\\n\\n // Test is_prime with 9\\n if (is_prime(9) == 0) {\\n std::cout << \\\"is_prime(9) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"is_prime(9) failed\\\" << std::endl;\\n }\\n\\n // Test is_prime with 13\\n if (is_prime(13) == 1) {\\n std::cout << \\\"is_prime(13) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"is_prime(13) failed\\\" << std::endl;\\n }\\n\\n // Test lcm with 7 and 9\\n if (lcm(7, 9) == 63) {\\n std::cout << \\\"lcm(7, 9) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"lcm(7, 9) failed\\\" << std::endl;\\n }\\n\\n // Test gcd with 12 and 18\\n if (gcd(12, 18) == 6) {\\n std::cout << \\\"gcd(12, 18) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"gcd(12, 18) failed\\\" << std::endl;\\n }\\n\\n // Test gcd with two primes\\n if (gcd(7, 13) == 1) {\\n std::cout << \\\"gcd(7, 13) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"gcd(7, 13) failed\\\" << std::endl;\\n }\\n\\n // Test is_prime with 97\\n if (is_prime(97) == 1) {\\n std::cout << \\\"is_prime(97) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"is_prime(97) failed\\\" << std::endl;\\n }\\n\\n // Test extended_gcd with 48 and 18\\n int x2, y2;\\n int g2 = extended_gcd(48, 18, x2, y2);\\n if (g2 == 6 && 48 * x2 + 18 * y2 == g2) {\\n std::cout << \\\"extended_gcd(48, 18) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"extended_gcd(48, 18) failed\\\" << std::endl;\\n }\\n\\n // Test gcd with 27 and 18\\n if (gcd(27, 18) == 9) {\\n std::cout << \\\"gcd(27, 18) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"gcd(27, 18) failed\\\" << std::endl;\\n }\\n // test 999 and 123\\n if (gcd(999, 123) == 3) {\\n std::cout << \\\"gcd(999, 123) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"gcd(999, 123) failed\\\" << std::endl;\\n }\\n \\n \\n}\\n\\nint main() {\\n run_tests();\\n return 0;\\n}\"}}"
}
],
"preamble": ""
}
},
"@type": "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.RequestLog"
},
"resource": {
"type": "cloudaicompanion.googleapis.com/Instance",
"labels": {
"resource_container": "my-project-id",
"instance_id": "default",
"location": "global"
}
},
"timestamp": "2025-10-08T10:10:03.457717366Z",
"severity": "INFO",
"labels": {
"request_id": "4b66a582bad9cf2c",
"method": "CompleteTask",
"client_version": "unknown",
"product": "code_assist",
"client_name": "cloudcode_cli",
"user_id": "user@company.com"
},
"logName": "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Frequest",
"receiveTimestamp": "2025-10-08T10:10:03.606059154Z"
}
Entri log respons
{
"insertId": "4qvt8nb2m",
"jsonPayload": {
"taskCompletionResponse": {
"output": {
"messages": [
{
"author": "MODEL",
"content": "**Testing the functions**\\n\\nI'm focusing on adding a new test case to `test.cpp`. The existing `run_tests` function is a great starting point. I'm considering which function to test further – maybe `extended_gcd`? I'll review the current tests for that function and then devise a new test scenario to add.\\n\\n\\n"
},
{
"author": "MODEL",
"content": "**Evaluating LCM Test**\\n\\nI've finalized the new test case for the `lcm` function within the `test.cpp` file. I'm adding a test for `lcm(12, 18)` to confirm the result is 36. I plan to use the `replace` command to inject this new test directly before the closing brace of the `run_tests` function. I've identified a unique line in `test.cpp` as the anchor for replacement.\\n\\n\\n"
},
{
"author": "MODEL",
"content": "**Inserting the new test**\\n\\nI've created a test case for `lcm(12, 18)`, confirming the expected result of 36. To implement this, I'm targeting the `run_tests` function. I'll use the `replace` command and will search the end of the `run_tests` function to inject the new test, right before the closing brace. I'm ready to implement this and confirm that it passes.\\n\\n\\n"
},
{
"author": "MODEL",
"content": "I've reviewed the file. I'll add a test case for the `lcm` function with inputs 12 and 18."
},
{
"content": "replace({\"file_path\":\"/usr/local/google/home/pdec/test.cpp\",\"instruction\":\"add a test for the lcm function with 12 and 18\",\"new_string\":\" // test 999 and 123\\n if (gcd(999, 123) == 3) {\\n std::cout << \\\"gcd(999, 123) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"gcd(999, 123) failed\\\" << std::endl;\\n }\\n \\n // Test lcm with 12 and 18\\n if (lcm(12, 18) == 36) {\\n std::cout << \\\"lcm(12, 18) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"lcm(12, 18) failed\\\" << std::endl;\\n }\\n \\n}\",\"old_string\":\" // test 999 and 123\\n if (gcd(999, 123) == 3) {\\n std::cout << \\\"gcd(999, 123) passed\\\" << std::endl;\\n } else {\\n std::cout << \\\"gcd(999, 123) failed\\\" << std::endl;\\n }\\n \\n \\n}\"})",
"author": "MODEL"
}
]
}
},
"@type": "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.ResponseLog"
},
"resource": {
"type": "cloudaicompanion.googleapis.com/Instance",
"labels": {
"location": "global",
"resource_container": "my-project-id",
"instance_id": "default"
}
},
"timestamp": "2025-10-08T10:10:03.461137399Z",
"severity": "INFO",
"labels": {
"client_name": "cloudcode_cli",
"client_version": "unknown",
"method": "CompleteTask",
"request_id": "4b66a582bad9cf2c",
"product": "code_assist",
"user_id": "user@company.com"
},
"logName": "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Fresponse",
"receiveTimestamp": "2025-10-08T10:10:03.606059154Z"
}
Entri log metadata
{
"insertId": "4qvt8nb2l",
"jsonPayload": {
"clientVersion": "unknown",
"apiRequest": {},
"clientName": "cloudcode_cli",
"requestId": "4b66a582bad9cf2c",
"@type": "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog"
},
"resource": {
"type": "cloudaicompanion.googleapis.com/Instance",
"labels": {
"resource_container": "my-project-id",
"location": "global",
"instance_id": "default"
}
},
"timestamp": "2025-10-08T10:10:03.459902984Z",
"severity": "INFO",
"labels": {
"product": "code_assist",
"user_id": "user@company.com",
"method": "CompleteTask"
},
"logName": "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Fmetadata",
"receiveTimestamp": "2025-10-08T10:10:03.606059154Z"
}
Respons Gemini untuk Google Cloud
Tabel berikut menampilkan kolom dan deskripsi respons Gemini untuk Google Cloud :
| Kolom | Nilai dan catatan |
|---|---|
LogEntry.resource.type |
Gemini untuk Google Cloud jenis resource: cloudaicompanion.googleapis.com/Instance. |
LogEntry.resource.labels.resource_container |
ID unik dari Resource Container tempat Gemini for Google Cloud digunakan. |
LogEntry.resource.labels.location |
Lokasi tempat Gemini untuk Google Cloud digunakan. |
LogEntry.resource.labels.instance_id |
ID unik dari resource tempat Gemini for Google Cloud digunakan. |
LogEntry.labels.method |
Dapat berupa salah satu hal berikut, bergantung pada apa yang memanggil logEntry:CompleteTask: misalnya, permintaan chat dari Gemini Code Assist atau layanan Gemini untuklainnya.GenerateCode: misalnya, permintaan untuk membuat kode, seperti dengan permintaan transformasi kode dalam Gemini Code Assist.CompleteCode: misalnya, permintaan untuk menyelesaikan kode saat bekerja di IDE, seperti dengan saran inline dalam Gemini Code Assist. Google Cloud |
LogEntry.labels.product |
Nama layanan Gemini untuk Google Cloud Jika produk Gemini untuk Google Cloud adalah Gemini Code Assist, nilai ini adalah code_assist. Jika produk Gemini untuk Google Cloud adalah Gemini Cloud Assist, nilai ini adalah cloud_assist. Jika tidak, nilai ini adalah unknown. |
LogEntry.labels.request_id |
ID unik untuk menghubungkan permintaan ke suatu entri log respons. |
LogEntry.labels.user_id |
ID pengguna yang memulai permintaan ini. |
LogEntry.jsonPayload |
Payload entri log. Setiap kutipan sumber yang digunakan untuk membuat respons disertakan dalam objek ini sebagai attribution_context. |
LogEntry.logName |
Mengidentifikasi log. |
Log metadata Gemini untuk Google Cloud
Agar log metadata dibuat, setelan telemetri ekstensi Gemini Code Assist harus diaktifkan untuk ekstensi VS Code dan IntelliJ.
Log metadata Gemini untuk Google Cloud mengikuti struktur yang sama dengan log Gemini untuk Google Cloud tetapi menentukan kolom yang berbeda. Tabel berikut menampilkan daftar kolom yang ditemukan dalam entri log permintaan pengguna:
| Kolom | Nilai dan catatan |
|---|---|
LogEntry.@type |
Gemini untuk Google Cloud metadata jenis resource: type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog. |
LogEntry.labels.method |
Untuk log metadata, nilai label ini adalah Export.Metrics. |
LogEntry.labels.product |
Nama layanan Gemini untuk Google Cloud Jika produk Gemini untuk Google Cloud adalah Gemini Code Assist, nilai ini adalah code_assist. Jika produk Gemini untuk Google Cloud adalah Gemini Cloud Assist, nilai ini adalah cloud_assist. Jika tidak, nilai ini adalah unknown. |
LogEntry.labels.user_id |
ID pengguna yang memulai permintaan ini. |
LogEntry.jsonPayload |
Menunjukkan peristiwa codeExposure atau peristiwa code.Acceptance. Peristiwa codeExposure menunjukkan eksposur saran kode kepada pengguna. Peristiwa code.Acceptance menunjukkan adanya peristiwa penerimaan oleh pengguna, seperti typeover, tab, atau penerimaan penuh. |
LogEntry.jsonPayload.clientName |
Nama IDE, seperti CloudCodeVscode. |
LogEntry.jsonPayload.clientVersion |
Nomor versi IDE. |
LogEntry.jsonPayload.codeAcceptance |
Khusus untuk IDE VS Code dan IntelliJ, menunjukkan adanya peristiwa penerimaan oleh pengguna, seperti typeover, tab, atau penerimaan penuh. Juga menyertakan kolom berikut:
|
LogEntry.jsonPayload.codeExposure |
Khusus untuk IDE VS Code dan IntelliJ, menunjukkan adanya eksposur saran kode kepada pengguna. Juga menyertakan kolom berikut:
|
LogEntry.jsonPayload.chatExposure |
Menunjukkan adanya eksposur respons chat kepada pengguna. Juga menyertakan kolom berikut:
|
LogEntry.jsonPayload.chatAcceptance |
Menunjukkan adanya peristiwa penerimaan oleh pengguna pada blok kode dalam respons chat. Juga menyertakan kolom berikut:
|
Contoh berikut menampilkan contoh entri log codeExposure:
{
insertId: "whfrqgc1gj"
jsonPayload: {
@type: "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog"
clientName: "CloudCodeVscode"
clientVersion: "1.93.1"
codeExposure: {
originalRequestId: "cac019824a0b25ba"
programmingLanguage: "python"
}
requestId: "0c5178fe-446f-4ab6-b996-520dec100cf8"
}
labels: {
method: "Export.Metrics"
product: "code_assist"
user_id: "user@company.com"
}
logName: "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Fmetadata"
receiveTimestamp: "2025-02-03T23:34:35.662837985Z"
resource: {
labels: {
instance_id: "default"
location: "global"
resource_container: "my-project-id"
}
type: "cloudaicompanion.googleapis.com/Instance"
}
severity: "INFO"
timestamp: "2025-02-03T23:34:35.021564463Z"
}
Contoh berikut menampilkan contoh entri log codeAcceptance:
{
insertId: "whfrqgc1gk"
jsonPayload: {
@type: "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog"
clientName: "CloudCodeVscode"
clientVersion: "1.93.1"
codeAcceptance: {
linesCount: 2
originalRequestId: "cac019824a0b25ba"
programmingLanguage: "python"
}
requestId: "ddf11040-c315-452e-b7cd-928c3f97984e"
}
labels: {
method: "Export.Metrics"
product: "code_assist"
user_id: "user@company.com"
}
logName: "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Fmetadata"
receiveTimestamp: "2025-02-03T23:34:37.632662272Z"
resource: {
labels: {
instance_id: "default"
location: "global"
resource_container: "my-project-id"
}
type: "cloudaicompanion.googleapis.com/Instance"
}
severity: "INFO"
timestamp: "2025-02-03T23:34:36.778692483Z"
}
Contoh berikut menampilkan contoh entri log chatAcceptance:
{
"insertId": "1oru1grbow",
"jsonPayload": {
"clientVersion": "1.103.2",
"requestId": "32a0b0b8c967d8e8",
"clientName": "CloudCodeVscode",
"chatAcceptance": {
"interactionType": "ACCEPT_CODE_BLOCK",
"programmingLanguage": "go",
"linesCount": "15",
"originalRequestId": "75f7c41e63162567"
},
"@type": "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog"
},
"resource": {
"type": "cloudaicompanion.googleapis.com/Instance",
"labels": {
"resource_container": "my-project-id",
"instance_id": "default",
"location": "global"
}
},
"timestamp": "2025-08-25T09:34:01.240377123Z",
"severity": "INFO",
"labels": {
"product": "code_assist",
"method": "Export.Metrics",
"user_id": "user@company.com"
},
"logName": "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Fmetadata",
"receiveTimestamp": "2025-08-25T09:34:01.704925625Z"
}
Contoh berikut menampilkan contoh entri log chatExposure:
{
insertId: "3diaj2c208"
jsonPayload: {
@type: "type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog"
clientName: "CloudCodeVscode"
clientVersion: "1.93.1"
chatExposure: {
originalRequestId: "cac019824a0b25ba"
}
requestId: "0c5178fe-446f-4ab6-b996-520dec100cf8"
}
labels: {
method: "Export.Metrics"
product: "code_assist"
user_id: "user@company.com"
}
logName: "projects/my-project-id/logs/cloudaicompanion.googleapis.com%2Fmetadata"
receiveTimestamp: "2025-02-03T23:34:35.662837985Z"
resource: {
labels: {
instance_id: "default"
location: "global"
resource_container: "my-project-id"
}
type: "cloudaicompanion.googleapis.com/Instance"
}
severity: "INFO"
timestamp: "2025-02-03T23:34:35.021564463Z"
}
Menghitung tingkat penerimaan
Bagian berikut menjelaskan cara menghitung tingkat penerimaan saran kode, tingkat penerimaan respons chat, dan total tingkat penerimaan gabungan menggunakan log metadata Gemini Code Assist.
Menghitung tingkat penerimaan kode
Untuk menghitung tingkat penerimaan kode menggunakan log metadata Gemini Code Assist, temukan jumlah total ID unik dari peristiwa dengan codeAcceptance.originalRequestId dan bagi dengan jumlah total ID unik dari peristiwa dengan codeExposure.originalRequestId.
Anda dapat menyempurnakan perhitungan ini berdasarkan bahasa pemrograman dan pengguna menggunakan kolom peristiwa log metadata yang berkaitan.
Menghitung tingkat penerimaan chat
Untuk menghitung tingkat penerimaan chat menggunakan log metadata Gemini Code Assist, temukan jumlah total ID unik dari peristiwa dengan chatAcceptance.originalRequestId dan bagi dengan jumlah total ID unik dari peristiwa dengan chatExposure.originalRequestId.
Anda dapat menyempurnakan perhitungan ini berdasarkan bahasa pemrograman dan pengguna menggunakan kolom peristiwa log metadata yang berkaitan.
Menghitung total tingkat penerimaan
Untuk menghitung total tingkat penerimaan menggunakan log metadata Gemini Code Assist, temukan jumlah total peristiwa yang diterima dan bagi dengan jumlah total peristiwa eksposur:
Total tingkat penerimaan = Total peristiwa yang diterima ÷ Total peristiwa eksposur
- Total peristiwa yang diterima: jumlah total ID unik dari peristiwa dengan
codeAcceptance.originalRequestIdditambah jumlah total ID unik dari peristiwa denganchatAcceptance.originalRequestId. - Total peristiwa eksposur: jumlah total ID unik dari peristiwa dengan
codeExposure.originalRequestIdditambah jumlah total ID unik dari peristiwa denganchatExposure.originalRequestId.
Rumus ini memberikan tingkat penerimaan yang mencerminkan probabilitas keseluruhan dari saran yang diterima di semua fitur Gemini Code Assist.
Menghitung baris kode yang diterima
Bagian berikut menjelaskan cara menghitung jumlah baris kode yang diterima dari saran kode, jumlah baris kode yang diterima dari chat, dan total baris kode yang diterima menggunakan log metadata Gemini Code Assist.
Menghitung baris kode yang diterima
Untuk menghitung baris kode yang diterima, temukan nilai maksimum untuk codeAcceptance.linesCount untuk setiap codeAcceptance.originalRequestId yang unik.
Kemudian, jumlahkan nilai maksimum ini untuk menghitung total baris kode yang diterima.
Anda dapat menyempurnakan perhitungan ini berdasarkan bahasa pemrograman dan pengguna menggunakan kolom peristiwa log metadata yang berkaitan.
Menghitung baris kode yang diterima dari chat
Untuk menghitung baris kode yang diterima dari chat, temukan nilai dari
chatAcceptance.linesCount untuk setiap
chatAcceptance.originalRequestId yang unik. Kemudian, jumlahkan nilai maksimum ini untuk menghitung total baris chat yang diterima.
Menghitung total baris kode yang diterima
Untuk menghitung total baris yang diterima menggunakan Gemini Code Assist log metadata, tambahkan baris kode yang diterima dan baris kode yang diterima dari chat.
Langkah berikutnya
- Pelajari cara melihat, menganalisis, dan memantau log Anda di Google Cloud.
- Pelajari lebih lanjut cara memantau penggunaan Gemini untuk Google Cloud.