Instrumentar aplicativos do ADK com o OpenTelemetry

Este documento explica como instrumentar um agente de IA criado com o framework do Kit de Desenvolvimento de Agente (ADK, na sigla em inglês). O framework do ADK inclui a instrumentação do OpenTelemetry, que coleta a telemetria das principais ações do agente. Quando você ativa a instrumentação integrada, ela envia informações como comandos de texto e respostas do agente para o Google Cloud projeto. Este documento descreve as mudanças necessárias e fornece um link para um aplicativo de amostra.

Os aplicativos que usam o ADK também podem coletar comandos e respostas multimodais. Este documento descreve como coletar comandos e respostas de texto. Se você quiser coletar dados multimodais, será necessária uma configuração adicional. Para mais informações, consulte Coletar e visualizar comandos e respostas multimodais.

A observabilidade padrão fornecida pelo ADK pode não ser suficiente para o caso de uso do aplicativo. Você pode adicionar outras bibliotecas de instrumentação usando o OpenTelemetry para capturar a telemetria de outras partes do app ou sua própria instrumentação personalizada para capturar dados específicos do aplicativo e ter uma observabilidade mais detalhada. Por exemplo, no aplicativo, você pode escrever um código de instrumentação para:

  • Acompanhar o consumo de recursos de ferramentas invocadas pelo agente.
  • Acompanhar falhas de validação específicas do aplicativo, violações de regras de negócios ou mecanismos personalizados de recuperação de erros.
  • Acompanhar pontuações de qualidade para respostas de agentes com base nos critérios específicos do domínio.

Instrumentar o aplicativo de IA generativa para coletar telemetria

Para instrumentar o agente de IA para coletar dados de registro, métricas e traces, faça o seguinte:

  1. Instale os pacotes do OpenTelemetry.
  2. Configure o ambiente do ADK.

O restante desta seção descreve as etapas anteriores.

Instalar os pacotes do OpenTelemetry

Adicione os seguintes pacotes de instrumentação e exportador do 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'

Os dados de registro e métricas são enviados ao Google Cloud projeto usando a API Cloud Logging ou a API Cloud Monitoring. As opentelemetry-exporter-gcp-logging e opentelemetry-exporter-gcp-monitoring bibliotecas invocam endpoints nessas APIs.

Os dados de trace são enviados para Google Cloud usando a API Telemetry (OTLP), que implementa o protocolo de linha do OpenTelemetry. A biblioteca opentelemetry-exporter-otlp-proto-grpc invoca o endpoint de API Telemetry (OTLP).

Os dados de trace são armazenados em um formato que é geralmente consistente com os arquivos proto definidos pelo protocolo de linha do OpenTelemetry. No entanto, os campos podem ser convertidos de um tipo de dados específico do OpenTelemetry para um tipo de dados JSON antes do armazenamento. Para saber mais sobre o formato de armazenamento, consulte Esquema para dados de trace.

Configurar o ambiente do ADK

As versões 1.17.0 e mais recentes do framework do ADK incluem suporte integrado para o OpenTelemetry e o envio de dados de telemetria do OpenTelemetry para Google Cloud a observabilidade. Para ativar isso, configure o ambiente do ADK:

  • Se você executar o aplicativo com o comando adk web, inclua a flag --otel_to_cloud.

  • No arquivo opentelemetry.env, defina as seguintes variáveis de ambiente:

    OTEL_SERVICE_NAME='adk-sql-agent'
    OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED='true'
    
  • Configure o OpenTelemetry para usar as convenções semânticas mais recentes para IA generativa.

    OTEL_SEMCONV_STABILITY_OPT_IN='gen_ai_latest_experimental'
    
  • Configure o OpenTelemetry para anexar mensagens como eventos.

    OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT='EVENT_ONLY'
    

    Para mais informações sobre os valores enumerados permitidos, consulte genai/types.py.

  • Recomendamos que você também adicione a seguinte variável de ambiente ao arquivo opentelemetry.env:

    ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS='false'
    

    Essa variável de ambiente faz o seguinte:

    • Impede que a instrumentação do ADK anexe atributos de período que excedam o limite de tamanho do atributo.
    • Impede que informações de identificação pessoal (PII) sejam anexadas a períodos como atributos.
  • Talvez seja necessário definir outras variáveis de ambiente. Por exemplo, se você fizer a implantação na plataforma de agentes do Gemini Enterprise, também será necessário definir a seguinte variável de ambiente:

    GOOGLE_CLOUD_AGENT_ENGINE_ENABLE_TELEMETRY='true'
    

Fazer o download e executar o aplicativo de amostra

Este exemplo de código implementa um agente de IA generativa criado usando o ADK. O agente é instrumentado com o OpenTelemetry, configurado para enviar métricas, traces e registros para o seu Google Cloud projeto. A telemetria enviada ao projeto inclui comandos e respostas de IA generativa.

Persona do agente do ADK

O agente de IA generativa é definido como um especialista em SQL com acesso total a um banco de dados SQLite efêmero. O agente é criado com o Kit de Desenvolvimento de Agente e acessa um banco de dados usando o SQLDatabaseToolkit. O banco de dados está inicialmente vazio.

Antes de começar

  1. Faça login na sua Google Cloud conta do. Se você não conhece o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em cenários reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
  2. Instale a Google Cloud CLI.

  3. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  4. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  5. Crie ou selecione um Google Cloud projeto.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: a seleção de um projeto não exige um papel específico do IAM. Você pode selecionar qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de criador de projetos (roles/resourcemanager.projectCreator), que contém a resourcemanager.projects.create permissão. Saiba como conceder papéis.
    • Crie um Google Cloud projeto:

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o Google Cloud projeto que você está criando.

    • Selecione o Google Cloud projeto que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do Google Cloud projeto.

  6. Verifique se o faturamento está ativado para o Google Cloud projeto.

  7. Ative as APIs Vertex AI, Telemetry, Cloud Logging, Cloud Monitoring e Cloud Trace:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de Service Usage role (roles/serviceusage.serviceUsageAdmin), que contém a serviceusage.services.enable permissão. Saiba como conceder papéis.

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

  9. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  10. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  11. Crie ou selecione um Google Cloud projeto.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: a seleção de um projeto não exige um papel específico do IAM. Você pode selecionar qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de criador de projetos (roles/resourcemanager.projectCreator), que contém a resourcemanager.projects.create permissão. Saiba como conceder papéis.
    • Crie um Google Cloud projeto:

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o Google Cloud projeto que você está criando.

    • Selecione o Google Cloud projeto que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do Google Cloud projeto.

  12. Verifique se o faturamento está ativado para o Google Cloud projeto.

  13. Ative as APIs Vertex AI, Telemetry, Cloud Logging, Cloud Monitoring e Cloud Trace:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de Service Usage role (roles/serviceusage.serviceUsageAdmin), que contém a serviceusage.services.enable permissão. Saiba como conceder papéis.

    gcloud services enable aiplatform.googleapis.com telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com
  14. Se você executar a amostra no Cloud Shell, em Google Cloud recursos ou em um ambiente de desenvolvimento local, as permissões listadas nesta seção serão suficientes. Para aplicativos de produção, normalmente uma conta de serviço fornece as credenciais para gravar dados de registro, métricas e traces.

    Para receber as permissões necessárias para que o aplicativo de amostra grave dados de registro, métricas e traces, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Iniciar o aplicativo

Para iniciar o aplicativo de amostra, faça o seguinte:

  1. No Cloud Shell, emita o seguinte comando:

    git clone https://github.com/GoogleCloudPlatform/opentelemetry-operations-python.git
    
  2. Acesse o diretório da amostra:

    cd opentelemetry-operations-python/samples/adk-sql-agent
    
  3. Crie um ambiente virtual e execute a amostra:

    python -m venv venv/
    source venv/bin/activate
    pip install -r requirements.txt
    env $(cat opentelemetry.env | xargs) adk web --otel_to_cloud
    

    O aplicativo mostra uma mensagem semelhante a esta:

    Appplication startup complete
    Uvicorn running on http://0.0.0.0:8080
    
  4. Para interagir com o agente, selecione o URL mostrado na saída da etapa anterior.

  5. Expanda Selecionar um agente e escolha sql_agent na lista de agentes.

Interagir com o agente

Para interagir com o agente, faça uma pergunta ou dê um comando. Por exemplo, você pode fazer a seguinte pergunta:

What can you do for me ?

Da mesma forma, como o sql_agent tem a persona de um especialista em SQL, você pode pedir que ele crie tabelas para seus aplicativos e escreva consultas para operar nas tabelas criadas. O agente só pode criar um banco de dados efêmero com suporte de um arquivo .db criado na máquina que executa o aplicativo.

A seguir, ilustramos uma interação de amostra entre o sql_agent e o usuário:

Exibição da interação com o sql_agent.

As ações realizadas por agentes de IA generativa não são determinísticas. Portanto, você pode receber uma resposta diferente para o mesmo comando.

Sair do app

Para sair do aplicativo, insira Ctrl-C no shell usado para iniciar o aplicativo.

Visualizar os traces, métricas e registros

Esta seção descreve como visualizar eventos de IA generativa.

Antes de começar

Para receber as permissões necessárias para visualizar os dados de registro, métricas e traces, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando personalizados papéis ou outros predefinidos papéis.

Visualizar a telemetria

Para visualizar os eventos de IA generativa criados pelo aplicativo, use a página Explorador de traces:

  1. No Google Cloud console, acesse a página Explorador de traces:

    Acessar o Explorador de traces

    Também é possível encontrar essa página usando a barra de pesquisa.

  2. Na barra de ferramentas, selecione Adicionar filtro, selecione Nome do período e, em seguida, selecione call_llm.

    A seguir, ilustramos a página Explorador de traces após a filtragem dos dados:

    Exibição de intervalos de rastreamento.

    Se você nunca usou o Cloud Trace, o Google Cloud Observability precisa criar um banco de dados para armazenar os dados de trace. A criação do banco de dados pode levar alguns minutos e, durante esse período, nenhum dado de trace estará disponível para visualização.

  3. Para explorar os dados de período e registro, na tabela Períodos, selecione um período.

    A página Detalhes é aberta. Essa página mostra o trace associado e os períodos dele. A tabela na página mostra informações detalhadas sobre o período selecionado. Essas informações incluem o seguinte:

    • A guia Entradas/Saídas mostra eventos para agentes de IA generativa. Para saber mais sobre esses eventos, consulte Visualizar eventos de IA generativa.

      A captura de tela a seguir ilustra um trace em que um período tem o nome call_llm. Esse período invoca o LLM (modelo de linguagem grande) que alimenta esse agente. Para esta amostra, é o Gemini. O período do Gemini inclui eventos de IA generativa:

      Exibição de eventos de IA generativa.

    • A guia Registros e eventos lista entradas de registro e eventos associados ao período. Se você quiser visualizar os dados de registro na Análise de registros, na barra de ferramentas dessa guia, selecione Visualizar registros.

      Os dados de registro incluem a resposta do sql_agent. Por exemplo, para a execução da amostra, o payload JSON inclui o seguinte conteúdo:

      {
        "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"
          }
        },
        ...
      }
      

A amostra é instrumentada para enviar dados de métricas para o Google Cloud projeto, mas não gera nenhuma métrica.