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:
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
- 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.
-
Instale a Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
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 aresourcemanager.projects.createpermissão. Saiba como conceder papéis.
-
Crie um Google Cloud projeto:
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor 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_IDpelo nome do Google Cloud projeto.
-
Verifique se o faturamento está ativado para o Google Cloud projeto.
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 aserviceusage.services.enablepermissão. Saiba como conceder papéis.gcloud services enable aiplatform.googleapis.com
telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com -
Instale a Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
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 aresourcemanager.projects.createpermissão. Saiba como conceder papéis.
-
Crie um Google Cloud projeto:
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor 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_IDpelo nome do Google Cloud projeto.
-
Verifique se o faturamento está ativado para o Google Cloud projeto.
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 aserviceusage.services.enablepermissão. Saiba como conceder papéis.gcloud services enable aiplatform.googleapis.com
telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com 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:
- Gravador de traces de telemetria do Cloud (
roles/telemetry.tracesWriter) - Gravador de registros (
roles/logging.logWriter) - Gravador de métricas do Monitoring (
roles/monitoring.metricWriter) - Usuário da Vertex AI (
roles/aiplatform.user)
- Gravador de traces de telemetria do Cloud (
Iniciar o aplicativo
Para iniciar o aplicativo de amostra, faça o seguinte:
No Cloud Shell, emita o seguinte comando:
git clone https://github.com/GoogleCloudPlatform/opentelemetry-operations-python.gitAcesse o diretório da amostra:
cd opentelemetry-operations-python/samples/adk-sql-agentCrie 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_cloudO aplicativo mostra uma mensagem semelhante a esta:
Appplication startup complete Uvicorn running on http://0.0.0.0:8080Para interagir com o agente, selecione o URL mostrado na saída da etapa anterior.
Expanda Selecionar um agente e escolha
sql_agentna 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:
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:
- Visualizador de registros (
roles/logging.viewer) - Leitor do Monitoring (
roles/monitoring.viewer) - Usuário do Cloud Trace (
roles/cloudtrace.user)
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:
-
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.
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:
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.
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:
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.