Este documento descreve os passos para instrumentar um agente ReAct do LangGraph com o OpenTelemetry, o que permite recolher telemetria do agente. Os comandos do utilizador, as respostas e as escolhas do agente são incluídos na telemetria como atributos anexados a intervalos. As respostas do agente também são incluídas nas entradas do registo correlacionadas com intervalos que contêm eventos de IA generativa. As instruções neste documento aplicam-se quando o agente usa o ChatVertexAI do Langchain para chamar um modelo do Gemini.
Instrumente a sua aplicação de IA generativa para recolher telemetria
Para instrumentar a sua aplicação de IA generativa para recolher dados de registo, métricas e rastreios, faça o seguinte:
- Instale pacotes do OpenTelemetry
- Configure o OpenTelemetry para recolher e enviar telemetria
- Rastreie a invocação do agente de IA generativa
Instale pacotes OpenTelemetry
Adicione os seguintes pacotes de exportadores e instrumentação do OpenTelemetry:
pip install 'opentelemetry-instrumentation-vertexai>=2.0b0' \
'opentelemetry-instrumentation-sqlite3' \
'opentelemetry-exporter-gcp-logging' \
'opentelemetry-exporter-gcp-monitoring' \
'opentelemetry-exporter-otlp-proto-grpc'
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 OpenTelemetry para recolher e enviar telemetria
No código de inicialização do seu agente LangGraph, configure o OpenTelemetry para capturar e enviar telemetria para o seu Google Cloud projeto:
Para ver o exemplo completo, clique em more_vert Mais e, de seguida, selecione Ver no GitHub.
Rastreie a invocação do agente de IA generativa
Para rastrear a execução da invocação do agente LangGraph, crie um intervalo personalizado em torno da invocação do agente:
Para ver o exemplo completo, clique em more_vert Mais e, de seguida, selecione Ver no GitHub.
É aconselhável incluir o código anterior em locais importantes no código da sua aplicação.
Para saber como adicionar intervalos e métricas personalizadas, consulte o artigo Adicione rastreios e métricas personalizadas à sua app.
Execute a amostra
Este exemplo é um agente LangGraph instrumentado com o OpenTelemetry para enviar rastreios e registos com comandos e respostas de IA generativa, e métricas para o seu projetoGoogle Cloud .
Personagem do agente LangGraph
O agente LangGraph é definido como um especialista em SQL que tem acesso total a uma base de dados SQLite efémera. O agente é implementado com o agente ReAct pré-criado do LangGraph e acede à base de dados, que está inicialmente vazia, através do SQLDatabaseToolkit.
Antes de começar
- 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.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.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.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.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 -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.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.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.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 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 rastreios, peça ao seu administrador que lhe conceda as seguintes funções da IAM no seu projeto:
-
Cloud Telemetry Traces Writer (
roles/telemetry.tracesWriter
) -
Logs Writer (
roles/logging.logWriter
) -
Monitoring Metric Writer (
roles/monitoring.metricWriter
) -
Utilizador do Vertex AI (
roles/aiplatform.user
)
-
Cloud Telemetry Traces Writer (
No Cloud Shell, execute o seguinte comando:
git clone https://github.com/GoogleCloudPlatform/opentelemetry-operations-python.git
Aceda ao diretório de exemplo:
cd opentelemetry-operations-python/samples/langgraph-sql-agent
Configure as variáveis de ambiente:
# Capture GenAI prompts and responses export OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true # Capture application logs automatically export OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true
Crie um ambiente virtual e execute o exemplo:
python -m venv venv/ source venv/bin/activate pip install -r requirements.txt python main.py
A aplicação apresenta uma mensagem semelhante à seguinte:
Starting agent using ephemeral SQLite DB.
Para criar uma base de dados, introduza um valor no comando Falar com o agente SQL >> e, de seguida, prima Enter.
As ações realizadas pelo agente são apresentadas no Cloud Shell.
A imagem seguinte ilustra exemplos de interações entre um utilizador e a aplicação:
Talk to the SQL agent >> Create a new table to hold weather data. 👤 User: Create a new table to hold weather data. 🤖 Agent: I need to know what columns the table should have. What information about the weather do you want to store? For example, I could include columns for date, location, temperature, humidity, and precipitation. Talk to the SQL agent >> Create a new table to hold weather data. Include date, location, temperature, humidity, and precipitation. 👤 User: Create a new table to hold weather data. Include date, location, temperature, humidity, and precipitation. 🤖 Agent CREATE TABLE weather ( date DATE, location VARCHAR(255), temperature REAL, humidity REAL, precipitation REAL );
Para sair, introduza
Ctrl-C
.-
Visualizador de registos (
roles/logging.viewer
) -
Visitante de monitorização (
roles/monitoring.viewer
) -
Utilizador do Cloud Trace (
roles/cloudtrace.user
) -
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.
Na barra de ferramentas, selecione Adicionar filtro, selecione Nome do intervalo e, de seguida, selecione
invoke agent
.A secção Executar exemplo incluía um exemplo de execução em que são enviados dois comandos para a aplicação. A imagem seguinte ilustra a página do Explorador de rastreios após a filtragem dos dados:
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.
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 GenAI 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
invoke_agent
. Esse intervalo invoca o Gemini. O intervalo do Gemini inclui 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 agente LangGraph. 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: { finish_reason: "stop" message: { role: "model" content: [ 0: { text: "I need to know what columns the table should have. What information about the weather do you want to store? For example, I could include columns for date, location, temperature, humidity, and precipitation." } ] } index: 0 } ... }
Executar amostra
Para executar o exemplo, faça o seguinte:
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.
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 rastreio, peça ao seu administrador que lhe conceda 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, use a página Explorador de rastreios:
O exemplo está instrumentado para enviar dados de métricas para o seu projeto do Google Cloud , mas não gera métricas.