Instrumentare le applicazioni ADK con OpenTelemetry

Questo documento spiega come instrumentare un agente AI creato con il framework Agent Development Kit (ADK). Il framework ADK include la strumentazione OpenTelemetry che raccoglie la telemetria dalle azioni chiave dell'agente. Quando abiliti la strumentazione integrata, questa invia informazioni come i prompt di testo e le risposte dell'agente al tuo Google Cloud progetto. Questo documento descrive le modifiche richieste e fornisce un link a un'applicazione di esempio.

Le applicazioni che utilizzano 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 altre librerie di strumentazione utilizzando OpenTelemetry per acquisire la telemetria da altre parti dell'app o la tua strumentazione personalizzata per acquisire dati specifici dell'applicazione per ottenere un'osservabilità più granulare. Ad esempio, nella tua applicazione potresti scrivere codice di strumentazione per:

  • Monitorare il consumo di risorse degli strumenti richiamati dall'agente.
  • Monitorare gli errori di convalida specifici dell'applicazione, le violazioni delle regole aziendali o i meccanismi di ripristino degli errori personalizzati.
  • Monitorare i punteggi di qualità per le risposte dell'agente in base ai criteri specifici del dominio.

Instrumentare l'applicazione di AI generativa per raccogliere la telemetria

Per instrumentare l'agente AI in modo da raccogliere dati di log, metriche e tracce:

  1. Installa i pacchetti OpenTelemetry.
  2. Configura l'ambiente ADK.

Il resto di questa sezione descrive i passaggi precedenti.

Installare i pacchetti OpenTelemetry

Aggiungi i seguenti pacchetti di strumentazione 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 metriche vengono inviati al tuo Google Cloud progetto utilizzando l' API Cloud Logging o l'API Cloud Monitoring. Le librerie opentelemetry-exporter-gcp-logging e opentelemetry-exporter-gcp-monitoring richiamano gli endpoint di queste API.

I dati di Trace vengono inviati a Google Cloud utilizzando l' API Telemetry (OTLP), che implementa il protocollo OpenTelemetry OTLP. La opentelemetry-exporter-otlp-proto-grpc libreria 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 saperne di più sul formato di archiviazione, consulta 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 abilitare 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=true
    
  • Ti consigliamo di aggiungere anche la seguente variabile di ambiente al file opentelemetry.env:

    ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS=false
    

    Questa variabile di ambiente esegue le seguenti operazioni:

    • Impedisce alla strumentazione ADK di collegare attributi di intervallo che superano il limite di dimensioni degli attributi.
    • Impedisce che le informazioni che consentono l'identificazione personale (PII) vengano collegate agli intervalli come attributi.

Scaricare ed eseguire l'applicazione di esempio

Questo codice campione implementa un agente AI generativa creato utilizzando ADK. L' agente è instrumentato con OpenTelemetry, configurato per inviare metriche, tracce e log al tuo Google Cloud progetto. La telemetria inviata al tuo progetto include prompt e risposte di AI generativa.

Persona dell'agente ADK

L'agente AI generativa è definito come un esperto di SQL con accesso completo a un database SQLite effimero. L'agente è creato con il Agent Development Kit e accede a un database utilizzando il SQLDatabaseToolkit. Il database è inizialmente vuoto.

Prima di iniziare

  1. Accedi al tuo Google Cloud account. Se non hai mai utilizzato Google Cloud, crea un account per valutare il rendimento dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  2. Installa Google Cloud CLI.

  3. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  4. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  5. Crea o seleziona un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l' resourcemanager.projects.create autorizzazione. Scopri come concedere i ruoli.
    • Crea un Google Cloud progetto:

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il Google Cloud progetto che stai creando.

    • Seleziona il Google Cloud progetto che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del Google Cloud progetto.

  6. Verifica che la fatturazione sia abilitata per il tuo Google Cloud progetto.

  7. Abilita le API Vertex AI, Telemetry, Cloud Logging, Cloud Monitoring e Cloud Trace:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin), che contiene l' serviceusage.services.enable autorizzazione. Scopri come concedere i ruoli.

    gcloud services enable aiplatform.googleapis.com telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com
  8. Installa Google Cloud CLI.

  9. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  10. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  11. Crea o seleziona un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l' resourcemanager.projects.create autorizzazione. Scopri come concedere i ruoli.
    • Crea un Google Cloud progetto:

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il Google Cloud progetto che stai creando.

    • Seleziona il Google Cloud progetto che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del Google Cloud progetto.

  12. Verifica che la fatturazione sia abilitata per il tuo Google Cloud progetto.

  13. Abilita le API Vertex AI, Telemetry, Cloud Logging, Cloud Monitoring e Cloud Trace:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin), che contiene l' serviceusage.services.enable autorizzazione. Scopri come concedere i ruoli.

    gcloud services enable aiplatform.googleapis.com telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com
  14. Se esegui l'esempio in Cloud Shell, sulle Google Cloud risorse 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 tracce.

    Per ottenere le autorizzazioni necessarie per l'applicazione di esempio per scrivere dati di log, metriche e tracce, chiedi all'amministratore di concederti i seguenti ruoli IAM sul tuo progetto:

Avviare l'applicazione

Per avviare l'applicazione di esempio:

  1. In Cloud Shell, esegui questo comando:

    git clone https://github.com/GoogleCloudPlatform/opentelemetry-operations-python.git
    
  2. Vai alla directory di esempio:

    cd opentelemetry-operations-python/samples/adk-sql-agent
    
  3. Crea 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_cloud
    

    L'applicazione mostra un messaggio simile al seguente:

    Appplication startup complete
    Uvicorn running on http://0.0.0.0:8080
    
  4. Per interagire con l'agente, seleziona l'URL mostrato nell'output del passaggio precedente.

  5. Espandi Seleziona un agente e seleziona sql_agent dall'elenco degli agenti.

Interagire con l'agente

Per interagire con l'agente, fagli una domanda o dagli un comando. Ad esempio, potresti porre la domanda:

What can you do for me ?

Allo stesso modo, poiché sql_agent ha la persona 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 una conversazione di esempio tra sql_agent e l'utente:

Visualizzazione dell'interazione con sql_agent.

Le azioni eseguite dagli agenti di AI generativa non sono deterministiche, quindi potresti visualizzare una risposta diversa per lo stesso prompt.

Chiudere l'applicazione

Per chiudere l'applicazione, inserisci Ctrl-C nella shell utilizzata per avviare l'applicazione.

Visualizzare tracce, metriche e 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 tracce, chiedi all'amministratore di concederti i seguenti ruoli IAM sul tuo 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:

  1. Nella Google Cloud console, vai alla Esplora tracce pagina:

    Vai a Esplora tracce

    Puoi trovare questa pagina anche utilizzando la barra di ricerca.

  2. Nella barra degli strumenti, seleziona Aggiungi filtro, seleziona Nome intervallo e poi seleziona call_llm.

    Di seguito è illustrata la pagina Esplora tracce dopo aver filtrato i dati:

    Visualizzazione degli intervalli di traccia.

    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 è possibile visualizzare i dati di traccia.

  3. Per esplorare i dati di intervallo e 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 sull'intervallo selezionato. Queste informazioni includono:

    • La scheda Input/Output mostra gli eventi per gli agenti di AI generativa. Per saperne di più su questi eventi, consulta Visualizzare gli eventi di AI generativa.

      Lo screenshot seguente mostra una traccia in cui un intervallo ha il nome call_llm. Questo intervallo richiama l'LLM (modello linguistico di grandi dimensioni) che alimenta questo agente. Per questo esempio, si tratta di Gemini. L'intervallo Gemini include eventi di AI generativa:

      Visualizzazione degli eventi di AI generativa.

    • La scheda Log ed eventi elenca le voci di log e gli eventi associati all'intervallo. 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"
          }
        },
        ...
      }
      

L'esempio è instrumentato per inviare dati di metriche al tuo Google Cloud progetto, ma non genera metriche.