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 i dati di telemetria dalle azioni chiave dell'agente. Quando attivi la strumentazione integrata, tale strumentazione invia informazioni come prompt testuali e risposte dell'agente al tuo progetto Google Cloud . Questo documento descrive le modifiche richieste e fornisce un link a un'applicazione di esempio.

Anche le applicazioni che utilizzano l'ADK possono raccogliere prompt e risposte multimodali. Questo documento descrive come raccogliere prompt testuali e risposte. Se vuoi raccogliere dati multimodali, è necessaria una configurazione aggiuntiva. Per saperne di più, consulta Raccogli e visualizza 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 della tua 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 un codice di strumentazione per:

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

Strumenta la tua applicazione di AI generativa per raccogliere dati di telemetria

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

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

Il resto di questa sezione descrive i passaggi precedenti.

Installa i pacchetti OpenTelemetry

Aggiungi i seguenti pacchetti di strumentazione ed esportazione OpenTelemetry:

uv add 'google-adk>=2.12.0' \
  'opentelemetry-instrumentation-google-genai>=0.7b1' \
  'opentelemetry-instrumentation-sqlite3>=0.63b1' \
  'opentelemetry-exporter-otlp-proto-grpc>=1.42.1' \
  'opentelemetry-exporter-otlp-proto-http>=1.42.1' \
  'opentelemetry-instrumentation-vertexai>=2.0b0'

I dati di log, metriche e tracce vengono inviati a Google Cloud utilizzando l'API Telemetry (OTLP), che implementa il protocollo OpenTelemetry. 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. 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, consulta Schema per i dati di traccia.

Configura l'ambiente ADK

Le versioni 1.17.0 e successive del framework ADK includono il supporto integrato per OpenTelemetry e l'invio di dati di telemetria OpenTelemetry aGoogle Cloud Observability. Per attivare questa opzione, configura l'ambiente ADK:

  • Se esegui l'applicazione con il comando 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'
    
  • Configura OpenTelemetry in modo che utilizzi le convenzioni semantiche più recenti per l'AI generativa.

    OTEL_SEMCONV_STABILITY_OPT_IN='gen_ai_latest_experimental'
    
  • Configura OpenTelemetry per allegare i messaggi come eventi.

    OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT='EVENT_ONLY'
    

    Per saperne di più sui valori di enumerazione consentiti, consulta genai/types.py.

  • Ti consigliamo inoltre di aggiungere 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 dimensione degli attributi.
    • Impedisce che le informazioni che consentono l'identificazione personale (PII) vengano allegate agli span come attributi.
  • Potrebbe essere necessario impostare altre variabili di ambiente. Ad esempio, se esegui il deployment su Gemini Enterprise Agent Platform, devi impostare anche la seguente variabile di ambiente:

    GOOGLE_CLOUD_AGENT_ENGINE_ENABLE_TELEMETRY='true'
    

Scarica ed esegui 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 progetto Google Cloud . La telemetria inviata al tuo progetto include prompt e risposte dell'AI generativa.

Persona dell'agente ADK

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

Prima di iniziare

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni 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 progetto Google Cloud .

    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 per 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'autorizzazione resourcemanager.projects.create. Scopri come concedere i ruoli.
    • Crea un progetto Google Cloud :

      gcloud projects create PROJECT_ID

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

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del progetto Google Cloud .

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

  7. Abilita le API Vertex AI, Service Usage, Telemetry, Cloud Logging, Cloud Monitoring e API Cloud Trace, se non sono già abilitate:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    gcloud services enable aiplatform.googleapis.com serviceusage.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 progetto Google Cloud .

    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 per 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'autorizzazione resourcemanager.projects.create. Scopri come concedere i ruoli.
    • Crea un progetto Google Cloud :

      gcloud projects create PROJECT_ID

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

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del progetto Google Cloud .

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

  13. Abilita le API Vertex AI, Service Usage, Telemetry, Cloud Logging, Cloud Monitoring e API Cloud Trace, se non sono già abilitate:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    gcloud services enable aiplatform.googleapis.com serviceusage.googleapis.com telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com
  14. Per ottenere le autorizzazioni necessarie per consentire all'applicazione di esempio di scrivere dati di log, metriche e tracce, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

    Queste autorizzazioni sono sufficienti se esegui l'esempio in Cloud Shell, su risorse Google Cloud o in un ambiente di sviluppo locale.

  15. Assicurati di specificare un progetto di quota. L'API Vertex AI (aiplatform.googleapis.com) richiede la specifica di un progetto di quota. Per saperne di più, consulta Imposta il progetto di quota. Ad esempio, il seguente comando può impostare un progetto di quota.

    gcloud config set billing/quota_project PROJECT_ID

Avvia l'applicazione

Per avviare l'applicazione di esempio, segui questi passaggi:

  1. In Cloud Shell, clona il repository:

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

    cd opentelemetry-samples/python/adk-sql-agent
    

    L'esempio contiene un file .env che imposta due variabili di ambiente. Una variabile controlla gli endpoint utilizzati dall'SDK. L'altra variabile imposta una località.

    Se preferisci utilizzare un modello diverso, modifica main.py. Assicurati che il modello selezionato supporti la località specificata nel file .env. Per informazioni sui modelli, consulta Modelli di Google.

  3. Crea un ambiente virtuale ed esegui l'esempio:

    uv run --env-file opentelemetry.env adk web --otel_to_cloud
    

    L'applicazione visualizza un messaggio simile al seguente:

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

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

Interagisci 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 ?

Analogamente, poiché sql_agent ha il ruolo di un esperto SQL, puoi chiedergli di creare tabelle per le tue applicazioni e scrivere query per operare sulle tabelle create. L'agente può creare solo un database temporaneo supportato da un file .db creato sulla macchina che esegue l'applicazione.

Di seguito è riportato un esempio di interazione 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.

Esci dall'applicazione

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

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

Visualizza la telemetria

Per visualizzare gli eventi di AI generativa creati dall'applicazione, utilizza la pagina Esplora tracce:

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

    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, quindi seleziona call_llm.

    Di seguito è riportata 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 sono disponibili dati di traccia da visualizzare.

  3. Per esplorare i dati di intervalli e log, seleziona un intervallo nella tabella Intervalli.

    Viene visualizzata la pagina Dettagli. In questa pagina vengono visualizzati 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 AI generativa. Per scoprire di più su questi eventi, consulta Visualizza gli eventi di AI generativa.

      Lo screenshot seguente mostra una traccia in cui uno span ha il nome call_llm. Questo intervallo richiama l'LLM (modello linguistico di grandi dimensioni) che alimenta questo agente. Per questo esempio, è Gemini. L'intervallo di 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 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"
          }
        },
        ...
      }