Gemini-Protokolle ansehen

In diesem Dokument wird beschrieben, wie Sie die Erhebung und Speicherung von Gemini for 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 Metadatenprotokolle, z. B. Telemetriemetadaten und vom Nutzer akzeptierte Codezeilen.

Gemini für Google Cloud erfasst oder sendet keine anderen Nutzerinteraktionen, die der Nutzer mit Gemini für Google Cloud ausgeführt hat, einschließlich schriftliches Feedback, an Cloud Logging. Google CloudDie erfassten Daten werden zum Speichern an Cloud Logging gesendet. Sie können diese Daten prüfen, indem Sie nach Logeinträgen mit dem Ressourcentyp cloudaicompanion.googleapis.com/Instance suchen.

Mit 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.

Mit IAM-Rollen (Identity and Access Management, Identitäts- und Zugriffsverwaltung) wird festgelegt, ob ein Hauptkonto auf Protokolle 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. Von Logging in Protokoll-Buckets gespeicherte Daten werden mit Schlüsselverschlüsselungsschlüsseln verschlüsselt. Dieser Vorgang wird als Umschlagverschlü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 Schlüsselverschlü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 (CMEK), einschließlich Vorteilen und Einschränkungen, finden Sie unter Vom Kunden verwaltete Verschlüsselungsschlüssel.

Beschränkungen

Die von Gemini in Google Cloud erfassten Protokolldaten enthalten keine Nutzerinteraktionen mit den folgenden Produkten:
  • Gemini in BigQuery
  • Gemini in Looker
  • Gemini in Google Security Operations
  • Gemini-Bereich in der Google Cloud Console für das Rechenzentrum

Hinweise

Gemini für die Google Cloud Protokollierung aktivieren

Wenden Sie sich an den Google Cloud Support oder Ihren Google Cloud Ansprechpartner und geben Sie die Projekt-ID an, für die Sie Gemini für dieGoogle Cloud Protokollierung, Gemini für die Google Cloud Metadatenprotokollierung oder beides aktivieren möchten.

Gemini für Google Cloud Nutzerprotokolle und Metadatenprotokolle ansehen

So rufen Sie Gemini- Google Cloud Nutzerprotokolle und Metadatenprotokolle auf:

Google Cloud 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.

Google Cloud CLI

Führen Sie dazu diesen Befehl aus:

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

Gemini für Google Cloud -Protokolle

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

Nutzeranforderungen

Die folgende Tabelle enthält eine Liste der Felder in einem Logeintrag für Nutzeranfragen.

Feld Werte und Hinweise
LogEntry.resource.type Gemini für Google Cloud Ressourcentyp: cloudaicompanion.googleapis.com/Instance.
LogEntry.resource.labels.resource_container Die 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 Die eindeutige ID der Ressource, in der Gemini für Google Cloud verwendet wurde.
LogEntry.labels.method Kann eine der folgenden Optionen sein, je nachdem, was logEntry aufgerufen hat:

CompleteTask: z. B. eine Chatanfrage von Gemini Code Assist oder einem anderen Gemini-Dienst Google Cloud .

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

CompleteCode: z. B. eine Anfrage zum Vervollständigen von Code bei der Arbeit in der IDE, z. B. mit Inline-Vorschlägen in Gemini Code Assist.
LogEntry.labels.product Gemini für Google Cloud Dienstname Wenn das Gemini for Google Cloud -Produkt Gemini Code Assist ist, ist dieser Wert code_assist. Wenn das Gemini for Google Cloud -Produkt Gemini Cloud Assist ist, ist dieser Wert cloud_assist. Andernfalls ist der Wert unknown.
LogEntry.labels.request_id Eine eindeutige Kennung, um eine Anfrage mit einem Antwortprotokolleintrag 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 Protokoll.

Das folgende Beispiel zeigt einen Beispiel-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 Prompts zur Inline-Codevorschläge und Prompts für Gemini Google Cloud in einer Codedatei.

Für Prompt-Daten für Inline-Codevorschläge wird das codeCompletionRequest-Objekt verwendet (wie im folgenden Beispiel gezeigt), 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"
}

Gemini für Google Cloud -Antworten

In der folgenden Tabelle sind die Antwortfelder und Beschreibungen für Gemini für Google Cloud aufgeführt.

Feld Werte und Hinweise
LogEntry.resource.type Gemini für Google Cloud Ressourcentyp: cloudaicompanion.googleapis.com/Instance.
LogEntry.resource.labels.resource_container Die 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 Die eindeutige ID der Ressource, in der Gemini für Google Cloud verwendet wurde.
LogEntry.labels.method Kann eine der folgenden Optionen sein, je nachdem, was logEntry aufgerufen hat:

CompleteTask: z. B. eine Chatanfrage von Gemini Code Assist oder einem anderen Gemini-Dienst Google Cloud .

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

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

Gemini für Google Cloud Metadatenlogs

Damit die Metadatenprotokolle generiert werden können, 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 for Google Cloud -Metadatenprotokolle folgen derselben Struktur wie Gemini for Google Cloud -Protokolle, enthalten aber andere Felder. In der folgenden Tabelle sind die Felder aufgeführt, die in einem Logeintrag für Nutzeranfragen gefunden werden:

Feld Werte und Hinweise
LogEntry.@type Gemini für den Google Cloud Metadatenressourcentyp type.googleapis.com/google.cloud.cloudaicompanion.logging.v1.MetadataLog
LogEntry.labels.method Für Metadatenprotokolle ist dieser Labelwert Export.Metrics.
LogEntry.labels.product Gemini für Google Cloud Dienstname Wenn das Gemini for Google Cloud -Produkt Gemini Code Assist ist, ist dieser Wert code_assist. Wenn das Gemini for Google Cloud -Produkt Gemini Cloud Assist ist, ist dieser Wert cloud_assist. Andernfalls ist der Wert unknown.
LogEntry.labels.user_id Die Kennung des Nutzers, der diese Anfrage initiiert hat.
LogEntry.jsonPayload Gibt entweder ein codeExposure-Ereignis oder ein code.Acceptance-Ereignis an. Ein codeExposure-Ereignis gibt an, dass einem Nutzer ein Codevorschlag präsentiert wurde. Ein Ereignis vom Typ code.Acceptance gibt an, dass der Nutzer ein Einwilligungsereignis ausgelöst hat, z. B. durch Eingabe, Tabulatortaste oder vollständige Einwilligung.
LogEntry.jsonPayload.clientName Der Name der IDE, z. B. CloudCodeVscode.
LogEntry.jsonPayload.clientVersion Die Versionsnummer der IDE.
LogEntry.jsonPayload.codeAcceptance Nur für VS Code und IntelliJ IDEs: Gibt an, dass ein Nutzer ein Ereignis zur Bestätigung ausgeführt hat, z. B. Eingabe, Tabulator oder vollständige Bestätigung. Außerdem enthält er die folgenden Felder:
  • linesCount: die Gesamtzahl der vom Nutzer akzeptierten Codezeilen.
  • commentLinesCount: die Anzahl der Kommentarzeilen im Code, die vom Nutzer akzeptiert wurden. Diese Eigenschaft wird nur angezeigt, wenn Gemini Code Assist feststellen kann, wie viele der akzeptierten Zeilen Kommentarzeilen sind.
  • originalRequestId: Eine Kennung, die ein codeExposure-Ereignis mit null oder mehreren codeAcceptance-Ereignissen verknüpft. So können die Messwerte Akzeptanzrate und Akzeptierte Codezeilen berechnet werden.
  • programmingLanguage: Programmiersprache des akzeptierten Codes, z. B. python.
LogEntry.jsonPayload.codeExposure Nur für VS Code und IntelliJ IDEs: Gibt an, dass einem Nutzer ein Codevorschlag angezeigt wurde. Außerdem enthält er die folgenden Felder:
  • programmingLanguage: Programmiersprache der Auslieferung, z. B. python.
  • originalRequestId: Eine Kennung, die ein codeExposure-Ereignis mit null oder mehreren codeAcceptance-Ereignissen verknüpft. So können die Messwerte Akzeptanzrate und Akzeptierte Codezeilen berechnet werden.
LogEntry.jsonPayload.chatExposure Gibt an, dass eine Chatantwort für einen Nutzer sichtbar war. Enthält außerdem das folgende Feld:
  • originalRequestId: Eine Kennung, die ein chatExposure-Ereignis mit null oder mehreren codeAcceptance- oder codeExposure-Ereignissen verknüpft. So können die Messwerte Akzeptanzrate und Akzeptierte 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"
}

Akzeptanzrate für Codes berechnen

Wenn Sie die Annahmerate anhand von Gemini Code Assist-Metadatenprotokollen berechnen möchten, 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. Mit den entsprechenden Metadaten-Log-Ereignisfeldern können Sie diese Berechnung nach Programmiersprache und Nutzer weiter verfeinern.

Akzeptierte Codezeilen berechnen

Um die Anzahl der akzeptierten Codezeilen zu berechnen, suchen Sie nach dem letzten getaggten Ereignis mit codeAcceptance für eine eindeutige codeAcceptance.originalRequestId und sehen Sie sich dann codeAcceptance.linesCount an. Fügen Sie dann den linesCount-Wert für alle endgültigen codeAcceptance-Ereignisse für jede originalRequestId hinzu, um die Gesamtzahl der akzeptierten Codezeilen zu berechnen. Sie können diese Berechnung mithilfe der entsprechenden Felder für Metadatenprotokollereignisse nach Programmiersprache und Nutzer weiter verfeinern.

Nächste Schritte