Questo documento spiega come instrumentare un agente AI creato con il framework Agent Development Kit (ADK). Il framework ADK include strumentazione OpenTelemetry che raccoglie dati di telemetria dalle azioni chiave dell'agente. Quando attivi la strumentazione integrata, questa invia informazioni come prompt di testo e risposte dell'agente al tuo progetto Google Cloud . Questo documento descrive le modifiche richieste e fornisce un link a un'applicazione di esempio.
Le applicazioni che utilizzano l'ADK possono anche raccogliere prompt e risposte multimodali. Questo documento descrive come raccogliere prompt e risposte di testo. Se vuoi raccogliere dati multimodali, è necessaria una configurazione aggiuntiva. Per saperne di più, consulta Raccogliere e visualizzare prompt e risposte multimodali.
L'osservabilità predefinita fornita da ADK potrebbe non essere sufficiente per il caso d'uso della tua applicazione. Puoi aggiungere librerie di strumentazione aggiuntive utilizzando OpenTelemetry per acquisire la telemetria da altre parti della tua app o la tua strumentazione personalizzata per acquisire dati specifici dell'applicazione e ottenere un'osservabilità più granulare. Ad esempio, nella tua applicazione potresti scrivere codice di strumentazione per:
- Monitora il consumo di risorse degli strumenti richiamati dall'agente.
- Tieni traccia degli errori di convalida specifici dell'applicazione, delle violazioni delle regole aziendali o dei meccanismi di recupero degli errori personalizzati.
- Monitora i punteggi di qualità per le risposte degli agenti in base ai criteri specifici del tuo dominio.
Instrumenta l'applicazione di AI generativa per raccogliere dati di telemetria
Per instrumentare l'agente AI in modo da raccogliere dati di log, metriche e tracciamento, procedi nel seguente modo:
Il resto di questa sezione descrive i passaggi precedenti.
Installa i pacchetti OpenTelemetry
Aggiungi i seguenti pacchetti di instrumentazione ed esportazione OpenTelemetry:
pip install 'google-adk>=1.17.0' \
'opentelemetry-instrumentation-google-genai>=0.4b0' \
'opentelemetry-instrumentation-sqlite3' \
'opentelemetry-exporter-gcp-logging' \
'opentelemetry-exporter-gcp-monitoring' \
'opentelemetry-exporter-otlp-proto-grpc' \
'opentelemetry-instrumentation-vertexai>=2.0b0'
I dati di log e delle metriche vengono inviati al tuo progetto Google Cloud utilizzando l'API Cloud Logging o l'API Cloud Monitoring. Le librerie
opentelemetry-exporter-gcp-logging e
opentelemetry-exporter-gcp-monitoring richiamano
gli endpoint in queste API.
I dati di Trace vengono inviati a Google Cloud utilizzando l'API Telemetry (OTLP), che implementa il protocollo OpenTelemetry OTLP.
La libreria opentelemetry-exporter-otlp-proto-grpc
richiama l'endpoint API Telemetry (OTLP).
I dati di traccia vengono archiviati in un formato generalmente coerente con i file proto definiti dal protocollo OpenTelemetry OTLP. Tuttavia, i campi potrebbero essere convertiti da un tipo di dati specifico di OpenTelemetry a un tipo di dati JSON prima dell'archiviazione. Per scoprire di più sul formato di archiviazione, vedi Schema per i dati di traccia.
Configurare l'ambiente ADK
Le versioni del framework ADK 1.17.0 e successive includono il supporto integrato per OpenTelemetry e l'invio di dati di telemetria OpenTelemetry a Google Cloud Observability. Per attivare questa funzionalità, configura l'ambiente ADK:
Quando esegui l'applicazione con il comando CLI
adk web, includi il flag--otel_to_cloud.Nel file
opentelemetry.env, imposta le seguenti variabili di ambiente:OTEL_SERVICE_NAME=adk-sql-agent OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=trueTi consigliamo inoltre di aggiungere la seguente variabile di ambiente al file
opentelemetry.env:ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS=falseQuesta variabile di ambiente svolge le seguenti operazioni:
- Impedisce all'instrumentazione ADK di collegare attributi di intervallo che superano il limite di dimensioni degli attributi.
- Impedisce l'allegato di informazioni che consentono l'identificazione personale (PII) agli span come attributi.
Scarica ed esegui l'applicazione di esempio
Questo codice campione implementa un agente di AI generativa creato utilizzando ADK. L'agente è instrumentato con OpenTelemetry, configurato per inviare metriche, tracce e log al tuo progetto Google Cloud . La telemetria inviata al tuo progetto include prompt e risposte dell'AI generativa.
Persona dell'agente ADK
L'agente di AI generativa è definito come un esperto di SQL che ha accesso completo a un database SQLite temporaneo. L'agente è creato con Agent Development Kit e accede a un database utilizzando SQLDatabaseToolkit. Il database è inizialmente vuoto.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI, Telemetry, Cloud Logging, Cloud Monitoring, and Cloud Trace APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable aiplatform.googleapis.com
telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com -
Install the Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI, Telemetry, Cloud Logging, Cloud Monitoring, and Cloud Trace APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable aiplatform.googleapis.com
telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com Se esegui l'esempio in Cloud Shell, sulle risorse Google Cloud o in un ambiente di sviluppo locale, le autorizzazioni elencate in questa sezione sono sufficienti. Per le applicazioni di produzione, in genere un account di servizio fornisce le credenziali per scrivere dati di log, metriche e traccia.
Per ottenere le autorizzazioni necessarie per consentire all'applicazione di esempio di scrivere dati di log, metriche e traccia, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Cloud Telemetry Traces Writer (
roles/telemetry.tracesWriter) -
Logs Writer (
roles/logging.logWriter) -
Monitoring Metric Writer (
roles/monitoring.metricWriter) -
Utente Vertex AI (
roles/aiplatform.user)
-
Cloud Telemetry Traces Writer (
In Cloud Shell, esegui questo comando:
git clone https://github.com/GoogleCloudPlatform/opentelemetry-operations-python.gitVai alla directory di esempio:
cd opentelemetry-operations-python/samples/adk-sql-agentCrea un ambiente virtuale ed esegui l'esempio:
python -m venv venv/ source venv/bin/activate pip install -r requirements.txt env $(cat opentelemetry.env | xargs) adk web --otel_to_cloudL'applicazione mostra un messaggio simile al seguente:
Appplication startup complete Uvicorn running on http://0.0.0.0:8080Per interagire con l'agente, seleziona l'URL mostrato nell'output del passaggio precedente.
Espandi Seleziona un agente e seleziona
sql_agentdall'elenco degli agenti.-
Visualizzatore log (
roles/logging.viewer) -
Monitoring Viewer (
roles/monitoring.viewer) -
Utente Cloud Trace (
roles/cloudtrace.user) -
Nella Google Cloud console, vai alla pagina Esplora tracce:
Puoi trovare questa pagina anche utilizzando la barra di ricerca.
Nella barra degli strumenti, seleziona Aggiungi filtro, poi Nome span e infine
call_llm.Di seguito è illustrata la pagina Esplora tracce dopo aver filtrato i dati:
Se non hai mai utilizzato Cloud Trace, Google Cloud Observability deve creare un database per archiviare i dati di traccia. La creazione del database può richiedere alcuni minuti e durante questo periodo non sono disponibili dati di traccia da visualizzare.
Per esplorare i dati di intervallo e di log, seleziona un intervallo nella tabella Intervalli.
Viene visualizzata la pagina Dettagli. Questa pagina mostra la traccia associata e i relativi intervalli. La tabella nella pagina mostra informazioni dettagliate per l'intervallo selezionato. Queste informazioni includono:
La scheda Input/Output mostra gli eventi per gli agenti di AI generativa. Per scoprire di più su questi eventi, consulta Visualizzare gli eventi di AI generativa.
Lo screenshot seguente mostra una traccia in cui uno span ha il nome
call_llm. Questo intervallo richiama il modello linguistico di grandi dimensioni (LLM) che alimenta questo agente. Per questo campione, è Gemini. L'intervallo Gemini include eventi di AI generativa:
La scheda Log ed eventi elenca le voci di log e gli eventi associati allo span. Se vuoi visualizzare i dati di log in Esplora log, seleziona Visualizza log nella barra degli strumenti di questa scheda.
I dati di log includono la risposta di
sql_agent. Ad esempio, per l'esecuzione di esempio, il payload JSON include i seguenti contenuti:{ "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" } }, ... }
Avvia l'applicazione
Per avviare l'applicazione di esempio:
Interagisci con l'agente
Per interagire con l'agente, fagli una domanda o dai un comando. Ad esempio, potresti porre la domanda:
What can you do for me ?
Analogamente, poiché sql_agent ha la personalità di un esperto di SQL, potresti chiedergli di creare tabelle per le tue applicazioni e scrivere query per operare sulle tabelle create. L'agente può creare solo un database effimero supportato da un file .db creato sulla macchina che esegue l'applicazione.
Di seguito è riportata un'interazione di esempio tra sql_agent e l'utente:
Le azioni eseguite dagli agenti di AI generativa non sono deterministiche, quindi potresti visualizzare una risposta diversa per lo stesso prompt.
Chiudi l'applicazione
Per uscire dall'applicazione, inserisci Ctrl-C nella shell utilizzata per avviare
l'applicazione.
Visualizza le tracce, le metriche e i log
Questa sezione descrive come visualizzare gli eventi di AI generativa.
Prima di iniziare
Per ottenere le autorizzazioni necessarie per visualizzare i dati di log, metriche e traccia, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Visualizzare la telemetria
Per visualizzare gli eventi di AI generativa creati dall'applicazione, utilizza la pagina Esplora tracce:
L'esempio è strumentato per inviare i dati delle metriche al tuo progetto Google Cloud , ma non genera metriche.