Gemini for Google Cloud-Protokolle ansehen

In diesem Dokument wird beschrieben, wie Sie die Erhebung und Speicherung von Gemini für Google Cloud -Aktivitäten aktivieren können. Dazu gehören:

  • Gemini für Google Cloud -Prompts und Antwortprotokolle, z. B. Nutzereingaben, Kontextinformationen und Antworten.
  • Gemini für Google Cloud -Metadatenlogs, z. B. Telemetriemetadaten und vom Nutzer akzeptierte Codezeilen.

Wenn Sie Gemini Code Assist-Messwerte generieren müssen, lesen Sie den Abschnitt Gemini für Google Cloud Nutzung überwachen.

Gemini für Google Cloud erfasst oder sendet keine anderen Nutzerinteraktionen, die der Nutzer möglicherweise mit Gemini für Google Cloudhatte, einschließlich schriftlichen Feedbacks, an Cloud Logging. Die erhobenen Daten werden zur Speicherung an Cloud Logging gesendet. Sie können diese Daten aufrufen, indem Sie nach Logeinträgen mit dem Ressourcentyp cloudaicompanion.googleapis.com/Instance suchen.

Bei dieser Funktion werden keine Prompts oder Antworten in Gemini in Vertex AI protokolliert. Informationen zum Aktivieren von Logs für Gemini in Vertex AI finden Sie unter Audit-Logs zum Datenzugriff aktivieren.

IAM-Rollen (Identity and Access Management, Identitäts- und Zugriffsverwaltung) steuern, ob ein Hauptkonto auf Logs zugreifen kann. Sie können Hauptkonten vordefinierte Rollen zuweisen oder benutzerdefinierte Rollen erstellen. Weitere Informationen zu erforderlichen Berechtigungen finden Sie unter Zugriffssteuerung.

Cloud Logging verschlüsselt inaktive Kundendaten standardmäßig. In Log-Buckets von Logging gespeicherte Daten werden mit Schlüsselverschlüsselungsschlüsseln verschlüsselt. Dieser Vorgang wird als Envelope-Verschlüsselung bezeichnet. Der Zugriff auf Ihre Logging-Daten erfordert den Zugriff auf diese Schlüsselverschlüsselungsschlüssel, die Google für Sie verwaltet, ohne dass Sie etwas tun müssen.

Ihre Organisation kann regulatorische, Compliance- oder erweiterte Verschlüsselungsanforderungen haben, die unsere Standardverschlüsselung inaktiver Daten nicht anspricht. Anstatt die Verschlüsselungsschlüssel, die Ihre Daten schützen, von Google verwalten zu lassen, können Sie Ihre Schlüssel selbst verwalten.

Weitere Informationen zur Verwendung von vom Kunden verwalteten Verschlüsselungsschlüsseln (Customer-Managed Encryption Keys, CMEK) einschließlich der Vorteile und Einschränkungen finden Sie unter Vom Kunden verwaltete Verschlüsselungsschlüssel.

Beschränkungen

Die Aufzeichnung von Protokolldaten für Gemini in Google Cloud ist auf Nutzerinteraktionen mit Gemini Code Assist in der IDE beschränkt.

Wenn der Endnutzer die Telemetrieeinstellung für VS Code deaktiviert, werden von Gemini für Google Cloud keine Metadaten protokolliert. Wenn Administratoren die Protokollierung von Prompts und Antworten aktivieren, werden jedoch weiterhin Protokolle für Prompts und Antworten generiert.

Hinweise

Gemini für Google Cloud -Nutzerprotokolle und Metadatenprotokolle ansehen

So rufen Sie Gemini für Google Cloud Nutzerlogs und Metadatenlogs auf:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf:

    Zum Log-Explorer

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.

  2. Wählen Sie in der Symbolleiste ein Google Cloud -Console-Projekt aus.
  3. Maximieren Sie in der Symbolleiste das Menü Alle Ressourcen und wählen Sie die Ressource Cloud AI Companion-Instanz aus.

gcloud

Führen Sie dazu diesen Befehl aus:

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

Ersetzen Sie PROJECT_ID durch die ID des Projekts, dessen Gemini für Google Cloud -Logs Sie aufrufen möchten.

API

  1. Erstellen Sie eine JSON-Datei, die folgende Informationen enthält:

      {
        "resourceNames": [
          "projects/PROJECT_ID"
        ],
        "pageSize": 5,
        "filter": "resource.type: cloudaicompanion.googleapis.com/Instance"
      }
    

    Ersetzen Sie PROJECT_ID durch die ID des Projekts, dessen Gemini für Google Cloud -Logs Sie aufrufen möchten.

  2. Authentifizierungstoken abrufen:

    TOKEN=$(gcloud auth print-access-token)
    
  3. Verwenden Sie cURL, um die Methode entries.list aufzurufen:

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type: application/json" \
      "https://logging.googleapis.com/v2/entries:list"

    Ersetzen Sie JSON_FILE_NAME durch den Pfad zur JSON-Datei, die Sie im vorherigen Schritt erstellt haben.

    Weitere Informationen zur Authentifizierung finden Sie unter Für die Verwendung von REST authentifizieren.

    Die Antwort gibt eine Reihe von Logeinträgen zurück.

Gemini für Google Cloud -Protokolle

Ein LogEntry ist die Grundeinheit für Daten in Cloud Logging. In den folgenden Abschnitten finden Sie Listen der Felder, die im LogEntry für ein Gemini für Google Cloud -Plattformereignis enthalten sind, z. B. Nutzeranfragen und Gemini für Google Cloud -Antworten.

Nutzeranforderungen

In der folgenden Tabelle finden Sie eine Liste der Felder, die in einem Logeintrag für Nutzeranfragen enthalten sind.

Feld Werte und Hinweise
LogEntry.resource.type Gemini für den Google Cloud Ressourcentyp: cloudaicompanion.googleapis.com/Instance.
LogEntry.resource.labels.resource_container Eindeutige ID des Ressourcencontainers, in dem Gemini für Google Cloud verwendet wurde.
LogEntry.resource.labels.location Standort, an dem Gemini für Google Cloud verwendet wurde.
LogEntry.resource.labels.instance_id Eindeutige ID der Ressource, in der Gemini für Google Cloud verwendet wurde.
LogEntry.labels.method Kann je nach Aufruf von logEntry

CompleteTask einen der folgenden Werte haben: z. B. eine Chatanfrage von Gemini Code Assist oder einem anderen Gemini for Google Cloud -Dienst.

GenerateCode: z. B. eine Anfrage zum Generieren von Code, etwa mit einer Code-Transformation-Anfrage in Gemini Code Assist.

CompleteCode: z. B. eine Anfrage zum Vervollständigen von Code bei der Arbeit in der IDE, etwa mit Inline-Vorschlägen in Gemini Code Assist.
LogEntry.labels.product Gemini für Google Cloud [Dienstname]. Wenn das Gemini-Produkt für Google Cloud Gemini Code Assist ist, lautet dieser Wert code_assist. Wenn das Gemini for Google Cloud -Produkt Gemini Cloud Assist ist, lautet dieser Wert cloud_assist. Andernfalls ist dieser Wert unknown.
LogEntry.labels.request_id Eine eindeutige Kennung, um eine Anfrage mit einem Antwortlogeintrag zu korrelieren.
LogEntry.labels.user_id Die Kennung des Nutzers, der diese Anfrage initiiert hat.
LogEntry.jsonPayload Die Nutzlast des Logeintrags.
LogEntry.logName Identifiziert das Log.

Das folgende Beispiel zeigt einen Logeintrag für ein Chat-Prompt-Ereignis.

{
  "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": "my-user@example.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"
}

Das folgende Beispiel zeigt einen RequestLog-Eintrag für automatische Inline-Codevorschläge und Gemini in einer Codedatei nach Google Cloud fragen.

Für Prompt-Daten für Inline-Codevorschläge wird das codeCompletionRequest-Objekt verwendet (siehe folgendes Beispiel), während für die manuell ausgelöste Generierung codeGenerationRequest verwendet wird.

{
  "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": "my-user@example.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"
}

Antworten von Gemini für Google Cloud

In der folgenden Tabelle finden Sie die Antwortfelder und Beschreibungen für Gemini für Google Cloud .

Feld Werte und Hinweise
LogEntry.resource.type Gemini für den Google Cloud Ressourcentyp: cloudaicompanion.googleapis.com/Instance.
LogEntry.resource.labels.resource_container Eindeutige ID des Ressourcencontainers, in dem Gemini für Google Cloud verwendet wurde.
LogEntry.resource.labels.location Standort, an dem Gemini für Google Cloud verwendet wurde.
LogEntry.resource.labels.instance_id Eindeutige ID der Ressource, in der Gemini für Google Cloud verwendet wurde.
LogEntry.labels.method Kann je nach Aufruf von logEntry

CompleteTask einen der folgenden Werte haben: z. B. eine Chatanfrage von Gemini Code Assist oder einem anderen Gemini for Google Cloud -Dienst.

GenerateCode: z. B. eine Anfrage zum Generieren von Code, etwa mit einer Code-Transformation-Anfrage in Gemini Code Assist.

CompleteCode: z. B. eine Anfrage zum Vervollständigen von Code bei der Arbeit in der IDE, etwa mit Inline-Vorschlägen in Gemini Code Assist.
LogEntry.labels.product Gemini für Google Cloud [Dienstname]. Wenn das Gemini-Produkt für Google Cloud Gemini Code Assist ist, lautet dieser Wert code_assist. Wenn das Gemini for Google Cloud -Produkt Gemini Cloud Assist ist, lautet dieser Wert cloud_assist. Andernfalls ist dieser Wert unknown.
LogEntry.labels.request_id Eine eindeutige Kennung, um eine Anfrage mit einem Antwortlogeintrag zu korrelieren.
LogEntry.labels.user_id Die Kennung des Nutzers, der diese Anfrage initiiert hat.
LogEntry.jsonPayload Die Nutzlast des Logeintrags. Alle Quellenzitationen, die zum Generieren der Antwort verwendet wurden, sind in diesem Objekt als attribution_context enthalten.
LogEntry.logName Identifiziert das Log.

Metadatenprotokolle für Gemini für Google Cloud

Damit die Metadatenlogs generiert werden, muss die Telemetrieeinstellung Gemini Code Assist-Erweiterung sowohl für VS Code- als auch für IntelliJ-Erweiterungen aktiviert sein. Außerdem muss für VS Code die globale Einstellung für die Erfassung von Telemetriedaten aktiviert sein.

Gemini für Google Cloud Metadatenlogs haben dieselbe Struktur wie Gemini für Google Cloud -Logs, aber es werden unterschiedliche Felder angegeben. In der folgenden Tabelle finden Sie eine Liste der Felder, die in einem Logeintrag für Nutzeranfragen enthalten sind:

Feld Werte und Hinweise
LogEntry.@type Gemini für Google Cloud Metadaten Ressourcentyp: type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog.
LogEntry.labels.method Bei Metadatenlogs ist dieser Labelwert Export.Metrics.
LogEntry.labels.product Gemini für Google Cloud [Dienstname]. Wenn das Gemini-Produkt für Google Cloud Gemini Code Assist ist, lautet dieser Wert code_assist. Wenn das Gemini for Google Cloud -Produkt Gemini Cloud Assist ist, lautet dieser Wert cloud_assist. Andernfalls ist dieser Wert unknown.
LogEntry.labels.user_id Die Kennung des Nutzers, der diese Anfrage initiiert hat.
LogEntry.jsonPayload Gibt entweder ein codeExposure- oder ein code.Acceptance-Ereignis an. Ein codeExposure-Ereignis gibt an, dass einem Nutzer ein Codevorschlag präsentiert wurde. Ein code.Acceptance-Ereignis gibt an, dass der Nutzer eine Aktion zur Annahme ausgeführt hat, z. B. durch Eingabe, Tabulator oder vollständige Annahme.
LogEntry.jsonPayload.clientName Der Name der IDE, z. B. CloudCodeVscode.
LogEntry.jsonPayload.clientVersion Die IDE-Versionsnummer.
LogEntry.jsonPayload.codeAcceptance Gilt nur für VS Code- und IntelliJ-IDEs. Gibt an, dass der Nutzer ein Ereignis zur Übernahme ausgelöst hat, z. B. durch Überschreiben, Tabulator oder vollständige Übernahme. Enthält auch die folgenden Felder:
  • linesCount: Die Gesamtzahl der vom Nutzer akzeptierten Codezeilen.
  • commentLinesCount: die Anzahl der Kommentarzeilen im vom Nutzer akzeptierten Code. Diese Property wird nur angezeigt, wenn Gemini Code Assist ermitteln kann, wie viele der akzeptierten Zeilen Kommentarzeilen sind.
  • originalRequestId: Eine Kennung, die ein codeExposure-Ereignis mit null oder mehr codeAcceptance-Ereignissen verknüpft. Damit können die Annahmerate und die Anzahl der angenommenen Codezeilen berechnet werden.
  • programmingLanguage: Programmiersprache des akzeptierten Codes, z. B. python.
LogEntry.jsonPayload.codeExposure Gilt nur für VS Code- und IntelliJ-IDEs. Gibt an, dass einem Nutzer eine Codevorschlag angezeigt wurde. Enthält auch die folgenden Felder:
  • programmingLanguage: Programmiersprache der Einblendung, z. B. python.
  • originalRequestId: Eine Kennung, die ein codeExposure-Ereignis mit null oder mehr codeAcceptance-Ereignissen verknüpft. Damit können die Annahmerate und die Anzahl der angenommenen Codezeilen berechnet werden.
LogEntry.jsonPayload.chatExposure Gibt an, dass einem Nutzer eine Chatantwort präsentiert wurde. Enthält auch das folgende Feld:
  • originalRequestId: Eine Kennung, die ein chatExposure-Ereignis mit null oder mehr codeAcceptance- und codeExposure-Ereignissen verknüpft. Damit können die Annahmerate und die Anzahl der angenommenen Codezeilen berechnet werden.

Das folgende Beispiel zeigt einen codeExposure-Logeintrag:

{
  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"
}

Das folgende Beispiel zeigt einen codeAcceptance-Logeintrag:

{
  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"
} 

Das folgende Beispiel zeigt einen chatExposure-Logeintrag:

{
  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"
}

Code-Akzeptanzrate berechnen

Um die Akzeptanzrate anhand von Metadatenprotokollen von Gemini Code Assist zu berechnen, ermitteln Sie die Gesamtzahl der eindeutigen IDs aus Ereignissen mit codeAcceptance.originalRequestId und teilen Sie sie durch die Gesamtzahl der eindeutigen IDs aus Ereignissen mit codeExposure.originalRequestId. Sie können diese Berechnung weiter verfeinern, indem Sie die entsprechenden Metadaten-Log-Ereignisfelder nach Programmiersprache und Nutzer filtern.

Anzahl der akzeptierten Codezeilen berechnen

Um die Anzahl der akzeptierten Codezeilen zu berechnen, suchen Sie den Maximalwert für codeAcceptance.linesCount für einen eindeutigen codeAcceptance.originalRequestId. Addieren Sie dann den linesCount-Wert für alle endgültigen codeAcceptance-Ereignisse für jedes originalRequestId, um die Gesamtzahl der akzeptierten Codezeilen zu berechnen. Sie können diese Berechnung weiter verfeinern, indem Sie die entsprechenden Metadaten-Log-Ereignisfelder nach Programmiersprache und Nutzer filtern.

Nächste Schritte