Instrumente aplicações ADK com o OpenTelemetry

Este documento explica como instrumentar um agente de IA criado com a estrutura do Agent Development Kit (ADK). A framework ADK inclui instrumentação OpenTelemetry que recolhe telemetria das ações principais do agente. Quando ativa a instrumentação incorporada, essa instrumentação envia informações, como comandos de texto e respostas do agente, para o seu Google Cloud projeto. Este documento descreve as alterações necessárias e fornece um link para uma aplicação de exemplo.

As aplicações que usam o ADK também podem recolher comandos e respostas multimodais. Este documento descreve como recolher comandos de texto e respostas. Se quiser recolher dados multimodais, é necessária uma configuração adicional. Para mais informações, consulte o artigo Recolha e veja comandos e respostas multimodais.

A observabilidade predefinida fornecida pelo ADK pode não ser suficiente para o exemplo de utilização da sua aplicação. Pode adicionar bibliotecas de instrumentação adicionais através do OpenTelemetry para capturar telemetria de outras partes da sua app ou a sua própria instrumentação personalizada para capturar dados específicos da aplicação e obter uma observabilidade mais detalhada. Por exemplo, na sua aplicação, pode escrever código de instrumentação para:

  • Acompanhe o consumo de recursos das ferramentas invocadas pelo agente.
  • Monitorize falhas de validação específicas da aplicação, violações de regras empresariais ou mecanismos de recuperação de erros personalizados.
  • Monitorize os índices de qualidade das respostas dos agentes com base nos seus critérios específicos do domínio.

Instrumente a sua aplicação de IA generativa para recolher telemetria

Para instrumentar o seu agente de IA para recolher dados de registo, métricas e rastreios, faça o seguinte:

  1. Instale pacotes OpenTelemetry.
  2. Configure o seu ambiente ADK.

O resto desta secção descreve os passos anteriores.

Instale pacotes OpenTelemetry

Adicione os seguintes pacotes de exportadores e instrumentações 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 registo e de métricas são enviados para o seu Google Cloud projeto através da API Cloud Logging ou da API Cloud Monitoring. As bibliotecas opentelemetry-exporter-gcp-logging e opentelemetry-exporter-gcp-monitoring invocam pontos finais nessas APIs.

Os dados de rastreio são enviados para Google Cloud através da API Telemetry (OTLP), que implementa o protocolo OTLP OpenTelemetry. A biblioteca opentelemetry-exporter-otlp-proto-grpc invoca o ponto final da API Telemetry (OTLP).

Os seus dados de rastreio são armazenados num formato geralmente consistente com os ficheiros proto definidos pelo protocolo OTLP 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 o Esquema para dados de rastreio.

Configure o ambiente do ADK

As versões 1.17.0 e superiores da framework ADK incluem compatibilidade integrada com o OpenTelemetry e o envio de dados de telemetria do OpenTelemetry para aGoogle Cloud observabilidade. Para ativar esta opção, configure o seu ambiente ADK:

  • Quando executar a aplicação com o comando adk web CLI, inclua o sinalizador --otel_to_cloud.

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

    OTEL_SERVICE_NAME=adk-sql-agent
    OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true
    OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true
    
  • Recomendamos que também adicione a seguinte variável de ambiente ao ficheiro opentelemetry.env:

    ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS=false
    

    Esta variável de ambiente faz o seguinte:

    • Impede que a instrumentação do ADK anexe atributos de intervalo que excedam o limite de tamanho dos atributos.
    • Impede que as informações de identificação pessoal (PII) sejam anexadas a intervalos como atributos.

Transfira e execute a aplicação de exemplo

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

Perfil do agente ADK

O agente de IA generativa é definido como um especialista em SQL que tem acesso total a uma base de dados SQLite efémera. O agente é criado com o Agent Development Kit e acede a uma base de dados através do SQLDatabaseToolkit. A base de dados está inicialmente vazia.

Antes de começar

  1. 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.
  2. Install the Google Cloud CLI.

  3. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

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

    gcloud init
  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with 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_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

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

  9. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

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

    gcloud init
  11. 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 the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with 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_ID with your Google Cloud project name.

  12. Verify that billing is enabled for your Google Cloud project.

  13. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable aiplatform.googleapis.com telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com
  14. Se executar o exemplo no Cloud Shell, em Google Cloud resources ou num ambiente de programação local, as autorizações indicadas nesta secção são suficientes. Para aplicações de produção, normalmente, uma conta de serviço fornece as credenciais para escrever dados de registo, métricas e rastreio.

    Para receber as autorizações de que precisa para que a aplicação de exemplo escreva dados de registo, métricas e rastreio, peça ao seu administrador que lhe conceda as seguintes funções de IAM no seu projeto:

  15. Inicie a aplicação

    Para iniciar a aplicação de exemplo, faça o seguinte:

    1. No Cloud Shell, execute o seguinte comando:

      git clone https://github.com/GoogleCloudPlatform/opentelemetry-operations-python.git
      
    2. Aceda ao diretório de exemplo:

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

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

      A aplicação apresenta uma mensagem semelhante à seguinte:

      Appplication startup complete
      Uvicorn running on http://0.0.0.0:8080
      
    4. Para interagir com o agente, selecione o URL apresentado no resultado do passo anterior.

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

    Interaja com o agente

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

    What can you do for me ?
    

    Da mesma forma, uma vez que o sql_agent tem a personalidade de um especialista em SQL, pode pedir-lhe para criar tabelas para as suas aplicações e escrever consultas para operar nas tabelas criadas. O agente só pode criar uma base de dados efémera suportada por um ficheiro .db criado na máquina que executa a aplicação.

    A imagem seguinte ilustra um exemplo de interação entre o sql_agent e o utilizador:

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

    As ações realizadas pelos agentes de IA generativa não são determinísticas, pelo que pode ver uma resposta diferente para o mesmo comando.

    Saia da aplicação

    Para sair da aplicação, introduza Ctrl-C na shell usada para iniciar a aplicação.

    Veja os rastreios, as métricas e os registos

    Esta secção descreve como pode ver eventos de IA generativa.

    Antes de começar

    Para receber as autorizações de que precisa para ver os dados de registo, métricas e rastreios, peça ao seu administrador para lhe conceder as seguintes funções da IAM no seu projeto:

    Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

    Ver telemetria

    Para ver os eventos de IA generativa criados pela aplicação, use a página Explorador de rastreios:

    1. Na Google Cloud consola, aceda à página Explorador de rastreios:

      Aceda ao Explorador de rastreios

      Também pode encontrar esta página através da barra de pesquisa.

    2. Na barra de ferramentas, selecione Adicionar filtro, selecione Nome do intervalo e, de seguida, selecione call_llm.

      A imagem seguinte ilustra a página do Explorador de rastreios após a filtragem dos dados:

      Apresentação de intervalos de rastreio.

      Se nunca usou o Cloud Trace, o Google Cloud Observability tem de criar uma base de dados para armazenar os seus dados de rastreio. A criação da base de dados pode demorar alguns minutos e, durante esse período, não estão disponíveis dados de rastreio para visualização.

    3. Para explorar os dados de intervalo e registo, na tabela Intervalos, selecione um intervalo.

      É apresentada a página Detalhes. Esta página apresenta o rastreio associado e os respetivos intervalos. A tabela na página apresenta informações detalhadas para o intervalo selecionado. Estas informações incluem o seguinte:

      • O separador Entradas/saídas apresenta eventos para agentes de IA generativa. Para saber mais acerca destes eventos, consulte o artigo Veja eventos de IA generativa.

        A captura de ecrã seguinte ilustra um rastreio, em que um intervalo tem o nome call_llm. Esse intervalo invoca o GML (grande modelo de linguagem) que alimenta este agente. Para este exemplo, é o Gemini. O intervalo do Gemini inclui eventos de IA generativa:

        Apresentação de eventos de IA generativa.

      • O separador Registos e eventos apresenta entradas de registo e eventos associados ao intervalo. Se quiser ver os dados de registo no Explorador de registos, na barra de ferramentas deste separador, selecione Ver registos.

        Os dados de registo incluem a resposta do sql_agent. Por exemplo, para a execução de exemplo, 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"
            }
          },
          ...
        }
        

    O exemplo está instrumentado para enviar dados de métricas para o seu projeto do Google Cloud , mas não gera métricas.