In diesem Dokument wird beschrieben, wie Sie einen KI-Agenten instrumentieren, der mit dem Agent Development Kit (ADK) Framework erstellt wurde. Das ADK-Framework enthält OpenTelemetry-Instrumentierung, mit der Telemetriedaten von wichtigen Aktionen des Agenten erfasst werden. Wenn Sie die integrierte Instrumentierung aktivieren, werden Informationen wie Text-Prompts und Agent-Antworten an Ihr Google Cloud -Projekt gesendet. In diesem Dokument werden die erforderlichen Änderungen beschrieben und ein Link zu einer Beispielanwendung bereitgestellt.
Anwendungen, die das ADK verwenden, können auch multimodale Prompts und Antworten erfassen. In diesem Dokument wird beschrieben, wie Sie Text-Prompts und ‑Antworten erfassen. Wenn Sie multimodale Daten erfassen möchten, ist eine zusätzliche Konfiguration erforderlich. Weitere Informationen finden Sie unter Multimodale Prompts und Antworten erfassen und ansehen.
Die standardmäßige Observability, die vom ADK bereitgestellt wird, reicht möglicherweise nicht für den Anwendungsfall Ihrer Anwendung aus. Sie können zusätzliche Instrumentierungsbibliotheken mit OpenTelemetry hinzufügen, um Telemetriedaten aus anderen Teilen Ihrer App zu erfassen. Sie können auch Ihre eigene benutzerdefinierte Instrumentierung verwenden, um anwendungsspezifische Daten zu erfassen und so eine detailliertere Beobachtbarkeit zu erreichen. In Ihrer Anwendung können Sie beispielsweise Instrumentierungscode schreiben, um:
- Ressourcenverbrauch von Agent-aufgerufenen Tools verfolgen.
- Anwendungsspezifische Validierungsfehler, Verstöße gegen Geschäftsregeln oder benutzerdefinierte Mechanismen zur Fehlerbehebung lassen sich nachverfolgen.
- Sie können die Qualität von Agentenantworten anhand Ihrer domänenspezifischen Kriterien bewerten.
Generative KI-Anwendung für die Erfassung von Telemetriedaten instrumentieren
So instrumentieren Sie Ihren KI-Agenten, um Log-, Messwert- und Trace-Daten zu erfassen:
Im Rest dieses Abschnitts werden die vorherigen Schritte beschrieben.
OpenTelemetry-Pakete installieren
Fügen Sie die folgenden OpenTelemetry-Instrumentierungs- und Exporter-Pakete hinzu:
uv add 'google-adk>=1.17.0' \
'opentelemetry-instrumentation-google-genai>=0.4b0' \
'opentelemetry-instrumentation-sqlite3' \
'opentelemetry-exporter-gcp-logging' \
'opentelemetry-exporter-otlp-proto-grpc' \
'opentelemetry-instrumentation-vertexai>=2.0b0'
Logdaten werden über die Cloud Logging API oder die Cloud Monitoring API an Ihr Google Cloud -Projekt gesendet. Mit der Bibliothek opentelemetry-exporter-gcp-logging werden Endpunkte in der Cloud Logging API aufgerufen.
Messwertdaten werden nicht erhoben. In Anwendungen, die keine Collector-basierte Lösung verwenden, ist in der Regel die opentelemetry-exporter-gcp-monitoring-Bibliothek enthalten.
Mit dieser Bibliothek werden Endpunkte in der Cloud Monitoring API aufgerufen.
Trace-Daten werden mithilfe der Telemetry (OTLP) API an Google Cloud gesendet. Diese API implementiert das OpenTelemetry Protocol.
Die opentelemetry-exporter-otlp-proto-grpc-Bibliothek ruft den Telemetry (OTLP) API-Endpunkt auf.
Ihre Tracedaten werden in einem Format gespeichert, das im Allgemeinen mit den von OpenTelemetry Protocol definierten Protobuf-Dateien übereinstimmt. Felder können jedoch vor der Speicherung von einem OpenTelemetry-spezifischen Datentyp in einen JSON-Datentyp konvertiert werden. Weitere Informationen zum Speicherformat finden Sie unter Schema für Tracedaten.
ADK-Umgebung konfigurieren
ADK-Framework-Versionen 1.17.0 und höher bieten integrierte Unterstützung für OpenTelemetry und das Senden von OpenTelemetry-Telemetriedaten anGoogle Cloud Observability. Konfigurieren Sie dazu Ihre ADK-Umgebung:
Wenn Sie Ihre Anwendung mit dem Befehl
adk webausführen, fügen Sie das Flag--otel_to_cloudein.Legen Sie in der Datei
opentelemetry.envdie folgenden Umgebungsvariablen fest:OTEL_SERVICE_NAME='adk-sql-agent' OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED='true'Konfigurieren Sie OpenTelemetry so, dass die neuesten semantischen Konventionen für generative KI verwendet werden.
OTEL_SEMCONV_STABILITY_OPT_IN='gen_ai_latest_experimental'Konfigurieren Sie OpenTelemetry so, dass Nachrichten als Ereignisse angehängt werden.
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT='EVENT_ONLY'Weitere Informationen zu zulässigen aufgezählten Werten finden Sie unter
genai/types.py.Wir empfehlen, die folgende Umgebungsvariable auch in Ihre
opentelemetry.env-Datei aufzunehmen:ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS='false'Diese Umgebungsvariable hat folgende Funktion:
- Verhindert, dass mit der ADK-Instrumentierung Spannenattribute angehängt werden, die das Attributgrößenlimit überschreiten.
- Verhindert, dass personenidentifizierbare Informationen als Attribute an Spans angehängt werden.
Möglicherweise müssen Sie weitere Umgebungsvariablen festlegen. Wenn Sie beispielsweise auf der Gemini Enterprise Agent Platform bereitstellen, sollten Sie auch die folgende Umgebungsvariable festlegen:
GOOGLE_CLOUD_AGENT_ENGINE_ENABLE_TELEMETRY='true'
Beispielanwendung herunterladen und ausführen
In diesem Beispielcode wird ein generativer KI-Agent implementiert, der mit dem ADK erstellt wurde. Der Agent ist mit OpenTelemetry instrumentiert und so konfiguriert, dass Messwerte, Traces und Logs an Ihr Google Cloud -Projekt gesendet werden. Die an Ihr Projekt gesendeten Telemetriedaten enthalten Prompts und Antworten von generativer KI.
Persona für ADK-Agenten
Der KI-Agent ist als SQL-Experte definiert, der vollen Zugriff auf eine temporäre SQLite-Datenbank hat. Der Agent wird mit dem Agent Development Kit erstellt und greift über das SQLDatabaseToolkit auf eine Datenbank zu. Die Datenbank ist anfangs leer.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.
Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch Ihren Google Cloud Projektnamen.
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
Aktivieren Sie die APIs für Vertex AI, Service Usage, Telemetrie, Cloud Logging, Cloud Monitoring und Cloud Trace, falls sie noch nicht aktiviert sind:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollengcloud services enable aiplatform.googleapis.com
serviceusage.googleapis.com telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com -
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.
Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch Ihren Google Cloud Projektnamen.
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
Aktivieren Sie die APIs für Vertex AI, Service Usage, Telemetrie, Cloud Logging, Cloud Monitoring und Cloud Trace, falls sie noch nicht aktiviert sind:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollengcloud services enable aiplatform.googleapis.com
serviceusage.googleapis.com telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com -
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie benötigen, damit die Beispielanwendung Log-, Messwert- und Tracedaten schreiben kann:
- Cloud Telemetry Traces Writer (
roles/telemetry.tracesWriter) - Log-Autor (
roles/logging.logWriter) - Monitoring-Messwert-Autor (
roles/monitoring.metricWriter) - Vertex AI-Nutzer (
roles/aiplatform.user)
Diese Berechtigungen sind ausreichend, wenn Sie das Beispiel in Cloud Shell, auf Google Cloud -Ressourcen oder in einer lokalen Entwicklungsumgebung ausführen.
- Cloud Telemetry Traces Writer (
Geben Sie ein Kontingentprojekt an. Für die Vertex AI API (
aiplatform.googleapis.com) muss ein Kontingentprojekt angegeben werden. Weitere Informationen finden Sie unter Kontingentprojekt festlegen. Mit dem folgenden Befehl kann beispielsweise ein Kontingentprojekt festgelegt werden.gcloud config set billing/quota_project PROJECT_ID
App starten
So starten Sie die Beispielanwendung:
Klonen Sie das Repository in Cloud Shell:
git clone https://github.com/GoogleCloudPlatform/opentelemetry-samples.gitGehen Sie zum Beispielverzeichnis:
cd opentelemetry-samples/python/adk-sql-agentDas Beispiel enthält eine
.env-Datei, in der zwei Umgebungsvariablen festgelegt werden. Eine Variable steuert, welche Endpunkte das SDK verwendet. Die andere Variable legt einen Ort fest.Wenn Sie ein anderes Modell verwenden möchten, bearbeiten Sie
main.py. Das ausgewählte Modell muss den in der Datei.envangegebenen Standort unterstützen. Informationen zu Modellen finden Sie unter Google-Modelle.Erstellen Sie eine virtuelle Umgebung und führen Sie das Beispiel aus:
uv run --env-file opentelemetry.env adk web --otel_to_cloudIn der Anwendung wird eine Meldung ähnlich der folgenden angezeigt:
Appplication startup complete Uvicorn running on http://127.0.0.1:8080Wenn Sie mit dem Agenten interagieren möchten, wählen Sie die URL aus, die in der Ausgabe des vorherigen Schritts angezeigt wird.
Maximieren Sie App auswählen und wählen Sie
sql_agentaus der Liste der Kundenservicemitarbeiter aus.
Mit dem Agenten interagieren
Um mit dem KI-Agenten zu interagieren, stellen Sie ihm eine Frage oder geben Sie ihm einen Befehl. Sie könnten beispielsweise fragen:
What can you do for me ?
Da sql_agent die Persona eines SQL-Experten hat, können Sie es auch bitten, Tabellen für Ihre Anwendungen zu erstellen und Abfragen zu schreiben, um die erstellten Tabellen zu bearbeiten. Der Agent kann nur eine temporäre Datenbank erstellen, die durch eine .db-Datei gesichert wird, die auf dem Computer erstellt wird, auf dem die Anwendung ausgeführt wird.
Im Folgenden wird eine Beispielinteraktion zwischen dem sql_agent und dem Nutzer veranschaulicht:
Die von generativen KI-Agenten ausgeführten Aktionen sind nicht deterministisch. Daher kann es sein, dass Sie für denselben Prompt eine andere Antwort erhalten.
Anwendung beenden
Geben Sie in der Shell, die zum Starten der Anwendung verwendet wurde, Ctrl-C ein, um die Anwendung zu beenden.
Traces, Messwerte und Logs ansehen
In diesem Abschnitt wird beschrieben, wie Sie Ereignisse im Zusammenhang mit generativer KI aufrufen können.
Hinweis
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aufrufen Ihrer Log-, Messwert- und Tracedaten benötigen:
- Loganzeige (
roles/logging.viewer) - Monitoring Viewer (
roles/monitoring.viewer) - Cloud Trace User (
roles/cloudtrace.user)
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.
Telemetriedaten ansehen
So rufen Sie die von der Anwendung erstellten Ereignisse für generative KI auf :
-
Rufen Sie in der Google Cloud Console die Seite
Trace Explorer auf:
Sie können diese Seite auch über die Suchleiste finden.
Wählen Sie in der Symbolleiste Filter hinzufügen, Span-Name und dann
call_llmaus.Das folgende Bild zeigt die Seite Trace-Explorer nach dem Filtern der Daten:
Wenn Sie Cloud Trace noch nie verwendet haben, muss Google Cloud Observability eine Datenbank zum Speichern Ihrer Trace-Daten erstellen. Das Erstellen der Datenbank kann einige Minuten dauern. In dieser Zeit sind keine Tracedaten verfügbar.
Wenn Sie Ihre Spannen- und Logdaten ansehen möchten, wählen Sie in der Tabelle Spannen eine Spanne aus.
Die Seite Details wird geöffnet. Auf dieser Seite werden der zugehörige Trace und seine Spans angezeigt. In der Tabelle auf der Seite werden detaillierte Informationen für den ausgewählten Zeitraum angezeigt. Diese Informationen umfassen Folgendes:
Auf dem Tab Ein-/Ausgaben werden Ereignisse für generative KI-Agents angezeigt. Weitere Informationen zu diesen Ereignissen
Der folgende Screenshot zeigt einen Trace, in dem ein Span den Namen
call_llmhat. Dieser Bereich ruft das LLM (Large Language Model) auf, das diesen Agenten unterstützt. In diesem Beispiel ist es Gemini. Der Gemini-Zeitraum umfasst Ereignisse im Zusammenhang mit generativer KI:
Auf dem Tab Logs und Ereignisse werden Logeinträge und Ereignisse aufgeführt, die mit dem Bereich verknüpft sind. Wenn Sie die Logdaten im Log-Explorer ansehen möchten, wählen Sie in der Symbolleiste dieses Tabs Logs ansehen aus.
Die Logdaten enthalten die Antwort von
sql_agent. Für den Beispielaufruf enthält die JSON-Nutzlast beispielsweise den folgenden Inhalt:{ "logName": "projects/my-project/logs/otel_python_inprocess_log_name_temp", "jsonPayload": { "content": { "parts": [ 0: { "text": "Now I can create the table." } 1: {1} ], "role": "model" } }, ... }
Das Beispiel ist so instrumentiert, dass Messwertdaten an Ihr Google Cloud -Projekt gesendet werden, es werden jedoch keine Messwerte generiert.