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
-
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Logs Viewer (
roles/logging.viewer
) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aufrufen von Gemini für Google Cloud -Logs benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Sehen Sie sich die Preise für Cloud Logging und die Preise für Gemini for Google Cloud an, bevor Sie Gemini for Google Cloud -Logging aktivieren.
Gemini für Google Cloud -Nutzerprotokolle und Metadatenprotokolle ansehen
So rufen Sie Gemini für Google Cloud Nutzerlogs und Metadatenlogs auf:
Console
-
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.
- Wählen Sie in der Symbolleiste ein Google Cloud -Console-Projekt aus.
- 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
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.Authentifizierungstoken abrufen:
TOKEN=$(gcloud auth print-access-token)
Verwenden Sie
cURL
, um die Methodeentries.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:
|
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:
|
LogEntry.jsonPayload.chatExposure |
Gibt an, dass einem Nutzer eine Chatantwort präsentiert wurde. Enthält auch das folgende Feld:
|
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
- Informationen zum Aufrufen, Analysieren und Überwachen von Logs in Google Cloud
- Weitere Informationen zum Überwachen der Nutzung von Gemini für Google Cloud