Melihat log Gemini

Dokumen ini menjelaskan cara mengaktifkan pengumpulan dan penyimpanan Gemini untuk aktivitas Google Cloud , 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.

Gemini untuk Google Cloud tidak mengumpulkan atau mengirim ke Cloud Logging interaksi pengguna lainnya yang mungkin dilakukan pengguna dengan Gemini untuk Google Cloud, termasuk masukan tertulis. Data yang dikumpulkan dikirim ke Cloud Logging untuk disimpan. Anda dapat meninjau data ini dengan menelusuri entri log dengan jenis resource cloudaicompanion.googleapis.com/Instance.

Fitur ini tidak mencatat perintah atau respons dalam Gemini di Vertex AI. Untuk mengaktifkan log Gemini di Vertex AI, lihat Mengaktifkan log audit Akses Data.

Peran Identity and Access Management (IAM) mengontrol kemampuan akun utama untuk mengakses log. Anda dapat memberikan peran bawaan kepada akun utama, atau membuat peran kustom. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan, lihat Kontrol akses.

Secara default, Cloud Logging mengenkripsi konten pelanggan yang disimpan dalam penyimpanan. Data yang disimpan di bucket log oleh Logging dienkripsi menggunakan kunci enkripsi kunci, proses yang dikenal sebagai enkripsi amplop. Akses ke data logging Anda memerlukan akses ke kunci enkripsi kunci tersebut, yang dikelola Google untuk Anda tanpa tindakan apa pun dari Anda.

Organisasi Anda mungkin memiliki persyaratan enkripsi peraturan, terkait kepatuhan, atau enkripsi lanjutan yang tidak disediakan oleh enkripsi default dalam penyimpanan kami. Untuk memenuhi persyaratan organisasi, Anda dapat mengelola kunci enkripsi yang melindungi data Anda, bukan Google.

Untuk informasi spesifik tentang penggunaan kunci enkripsi yang dikelola pelanggan (CMEK), termasuk keuntungan dan batasan, lihat Kunci enkripsi yang dikelola pelanggan.

Batasan

Data log yang dicatat oleh Gemini di Google Cloud mencakup interaksi pengguna dengan Gemini Code Assist dalam IDE.

Selain itu, Gemini untuk Google Cloud tidak mencatat data untuk Gemini Code Assist jika telemetri VS Code dinonaktifkan oleh pengguna.

Sebelum memulai

Melihat Gemini untuk Google Cloud log pengguna dan log metadata

Untuk melihat Gemini untuk Google Cloud log pengguna dan log metadata, lakukan salah satu hal berikut:

Konsol Google Cloud

  1. Di konsol Google Cloud, buka halaman Logs Explorer:

    Buka Logs Explorer

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.

  2. Di toolbar, pilih project konsol Google Cloud.
  3. Di toolbar, luaskan menu All resources dan pilih resource Cloud AI Companion Instance.

Google Cloud CLI

Jalankan perintah berikut:

gcloud logging read "resource.type=cloudaicompanion.googleapis.com/Instance" --project PROJECT_ID  --limit 3

Gemini untuk Google Cloud log

LogEntry adalah unit dasar data di Cloud Logging. Bagian berikut memberikan daftar kolom yang ditemukan di LogEntry untuk peristiwa platform Gemini for Google Cloud , seperti permintaan pengguna dan respons Gemini for Google Cloud .

Permintaan pengguna

Tabel berikut menunjukkan daftar kolom yang ditemukan di 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 Penampung Resource tempat Gemini untuk Google Cloud digunakan.
LogEntry.resource.labels.location Lokasi tempat Gemini untuk Google Cloud digunakan.
LogEntry.resource.labels.instance_id ID unik resource tempat Gemini untuk Google Cloud digunakan.
LogEntry.labels.method Dapat berupa salah satu dari berikut ini, bergantung pada apa yang memanggil logEntry:

CompleteTask: misalnya, permintaan chat dari Gemini Code Assist atau layanan Gemini lainnya Google Cloud .

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.
LogEntry.labels.product Gemini untuk Google Cloud nama layanan. Jika produk Gemini for 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 mengaitkan permintaan dengan entri log respons.
LogEntry.labels.user_id ID pengguna yang memulai permintaan ini.
LogEntry.jsonPayload Payload entri log.
LogEntry.logName Mengidentifikasi log.

Contoh berikut menunjukkan 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": "[email protected]"
  },
  "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 menunjukkan contoh entri RequestLog untuk perintah saran kode inline otomatis 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": "[email protected]"
  },
  "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"
}

Gemini untuk Google Cloud respons

Tabel berikut menunjukkan Gemini untuk kolom dan deskripsi respons 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 Penampung Resource tempat Gemini untuk Google Cloud digunakan.
LogEntry.resource.labels.location Lokasi tempat Gemini untuk Google Cloud digunakan.
LogEntry.resource.labels.instance_id ID unik resource tempat Gemini untuk Google Cloud digunakan.
LogEntry.labels.method Dapat berupa salah satu dari berikut ini, bergantung pada apa yang memanggil logEntry:

CompleteTask: misalnya, permintaan chat dari Gemini Code Assist atau layanan Gemini lainnya Google Cloud .

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.
LogEntry.labels.product Gemini untuk Google Cloud nama layanan. Jika produk Gemini for 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 mengaitkan permintaan dengan entri log respons.
LogEntry.labels.user_id ID pengguna yang memulai permintaan ini.
LogEntry.jsonPayload Payload entri log. Setiap kutipan sumber yang digunakan untuk menghasilkan respons disertakan dalam objek ini sebagai attribution_context.
LogEntry.logName Mengidentifikasi log.

Gemini untuk Google Cloud log metadata

Agar log metadata dapat dibuat, setelan telemetri ekstensi Gemini Code Assist harus diaktifkan untuk ekstensi VS Code dan IntelliJ. Selain itu, untuk VS Code, setelan pengumpulan telemetri global juga harus diaktifkan.

Log metadata Gemini untuk Google Cloud mengikuti struktur yang sama dengan log Gemini untuk Google Cloud , tetapi menentukan kolom yang berbeda. Tabel berikut menunjukkan daftar kolom yang ditemukan dalam entri log permintaan pengguna:

Kolom Nilai dan catatan
LogEntry.@type Gemini untuk Google Cloud jenis resource metadata: type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog.
LogEntry.labels.method Untuk log metadata, nilai label ini adalah Export.Metrics.
LogEntry.labels.product Gemini untuk Google Cloud nama layanan. Jika produk Gemini for 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 bahwa ada beberapa peristiwa penerimaan oleh pengguna, seperti penggantian teks, tab, atau penerimaan penuh.
LogEntry.jsonPayload.clientName Nama IDE, seperti CloudCodeVscode.
LogEntry.jsonPayload.clientVersion Nomor versi IDE.
LogEntry.jsonPayload.codeAcceptance Khusus untuk VS Code dan IDE IntelliJ, menunjukkan bahwa ada beberapa peristiwa penerimaan oleh pengguna, seperti penggantian teks, tab, atau penerimaan penuh. Juga mencakup kolom berikut:
  • linesCount: jumlah total baris kode yang diterima oleh pengguna.
  • commentLinesCount: jumlah baris komentar dalam kode yang diterima oleh pengguna. Properti ini hanya muncul jika Gemini Code Assist dapat menentukan jumlah baris yang diterima yang merupakan baris komentar.
  • originalRequestId: ID yang menautkan peristiwa codeExposure ke nol atau beberapa peristiwa codeAcceptance. Hal ini dapat digunakan untuk menghitung tingkat penerimaan dan baris kode yang diterima.
  • programmingLanguage: bahasa pemrograman kode yang diterima, seperti python.
LogEntry.jsonPayload.codeExposure Khusus untuk IDE VS Code dan IntelliJ, menunjukkan bahwa ada eksposur saran kode kepada pengguna. Juga mencakup kolom berikut:
  • programmingLanguage: bahasa pemrograman eksposur, seperti python.
  • originalRequestId: ID yang menautkan peristiwa codeExposure ke nol atau beberapa peristiwa codeAcceptance. Hal ini dapat digunakan untuk menghitung tingkat penerimaan dan baris kode yang diterima.
LogEntry.jsonPayload.chatExposure Menunjukkan bahwa respons chat telah ditampilkan kepada pengguna. Juga mencakup kolom berikut:
  • originalRequestId: ID yang menautkan peristiwa chatExposure ke nol atau beberapa peristiwa codeAcceptance atau codeExposure. Hal ini dapat digunakan untuk menghitung tingkat penerimaan dan baris kode yang diterima.

Contoh berikut menunjukkan 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: "[email protected]"
  }
  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 menunjukkan 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: "[email protected]"
  }
  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 menunjukkan 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: "[email protected]"
  }
  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 rasio penerimaan kode

Untuk menghitung rasio penerimaan 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 lebih memfilter penghitungan ini berdasarkan bahasa pemrograman dan pengguna menggunakan kolom peristiwa log metadata masing-masing.

Menghitung baris kode yang diterima

Untuk menghitung baris kode yang diterima, temukan nilai maksimum untuk codeAcceptance.linesCount untuk codeAcceptance.originalRequestId unik. Kemudian, tambahkan nilai linesCount untuk semua peristiwa codeAcceptance akhir untuk setiap originalRequestId guna menghitung total baris kode yang diterima. Anda dapat lebih memfilter penghitungan ini menurut bahasa pemrograman dan pengguna menggunakan kolom peristiwa log metadata masing-masing.

Langkah berikutnya