Logo GCP con Eduardo

GCP con Eduardo

BigQuery Agent Analytics: Observabilidad y FinOps para Agentes de IA en GCP
✦ Guía Técnica & Arquitectura

BigQuery Agent Analytics: Observabilidad, Auditoría y FinOps para Agentes de IA

Desplegar agentes de Inteligencia Artificial con frameworks como el Agent Development Kit (ADK) o Vertex AI sin observabilidad estructurada es operar una caja negra en producción. Cuando un agente entra en bucles de llamadas a herramientas, alucina datos o multiplica los costes de inferencia, necesitas telemetría analítica en tiempo real. BigQuery Agent Analytics permite ingerir, trazar y auditar cada decisión de tus agentes directamente en BigQuery con cero impacto en latencia.

Lo que aprenderás en esta guía

Integración paso a paso de BigQueryAgentAnalyticsPlugin en el ADK de Google Cloud.
Estructura interna del log stream en la tabla particionada agent_events.
Consultas SQL analíticas para auditar consumo de tokens, latencias y errores de herramientas.
Patrones de arquitectura FinOps y prevención de cuellos de botella en entornos multiagente.
BigQuery Agent Analytics Agent Development Kit (ADK) Vertex AI BigQuery Storage Write API Python 3.11+ FinOps & LLMOps

Matriz de Decisión: Estrategias de Telemetría para Agentes LLM

Elegir la capa de persistencia para los traces de un sistema agéntico define el balance entre latencia de consulta, escalabilidad OLAP y costes operacionales.

Capa de Telemetría Mecanismo de Ingesta Capacidad Analítica (OLAP) Overhead en Latencia FinOps / TCO
BigQuery Agent Analytics Storage Write API (Streaming Asíncrono) Extrema (SQL Estándar, BI Engine, Looker) Cero (Thread secundario desacoplado) Altamente eficiente (Particionado + Slot Sharing)
Cloud Logging (Google Cloud) Log Router Sink Baja (Filtrado textual básico / BigQuery Export diferido) Muy bajo Costoso a gran volumen de logs no estructurados
OpenTelemetry + Jaeger / Prometheus gRPC OTel Collector Media (Métricas de series temporales, traces jerárquicos) Bajo a medio Requiere gestión de infraestructura dedicada
SaaS Propietario (LangSmith, W&B) REST API Hooks Alta (UI especializada en prompts) Medio (Dependencia de red externa) Costes de licencia por asiento/evento elevados

⚠️ Error Crítico en Producción: Tablas No Particionadas y Fugas de PII

El plugin de BigQuery Agent Analytics creará automáticamente la tabla agent_events si no existe. No obstante, dejar que el plugin genere la tabla por defecto en producción es un antipatrón costoso. BigQuery creará una tabla no particionada, provocando que cada consulta SQL de auditoría escanee el histórico completo de eventos (aumento lineal de costes FinOps).

Solución Técnica: Despliega previamente el DDL de la tabla con PARTITION BY DATE(timestamp) y CLUSTER BY event_type, agent_name, session_id, configurando además filtros de sanitización (redacción de datos sensibles y tarjetas de crédito) en la configuración del plugin mediante BigQueryLoggerConfig.

Implementación Práctica en Python con ADK

A continuación se muestra el código listo para entornos empresariales donde se instancia un agente basado en Gemini 2.5 Flash, configurando el BigQueryAgentAnalyticsPlugin con redacción de datos sensibles y enrutamiento directo a un dataset analítico.

import os
from google.adk.apps import App
from google.adk.agents import Agent
from google.adk.models import google_llm
from google.adk.plugins.bigquery_agent_analytics_plugin import (
    BigQueryAgentAnalyticsPlugin,
    BigQueryLoggerConfig
)
from google.adk.tools.bigquery import BigQueryToolSet

# 1. Configuración de Identidad y Entorno GCP
PROJECT_ID = os.environ.get("GOOGLE_CLOUD_PROJECT", "mi-proyecto-gcp")
DATASET_ID = os.environ.get("BQ_AGENT_DATASET", "demo_dataset_ia")
TABLE_NAME = "agent_events"

# 2. Inicialización del Plugin de Observabilidad BigQuery
# Soporta streaming asíncrono sobre la BigQuery Storage Write API
bq_logging_plugin = BigQueryAgentAnalyticsPlugin(
    project_id=PROJECT_ID,
    dataset_id=DATASET_ID,
    table_id=TABLE_NAME
)

# 3. Definición del Agente con Vertex AI (Gemini)
llm_model = google_llm.Gemini(model="gemini-2.5-flash")

root_agent = Agent(
    name="financial_analytics_agent",
    model=llm_model,
    instruction=(
        "Eres un analista de datos experto. Responde a preguntas de negocio "
        "consultando tablas de BigQuery y generando análisis de ROI precisos."
    ),
    tools=[BigQueryToolSet(project_id=PROJECT_ID)]
)

# 4. Enlace del Agente en la Aplicación ADK con el Plugin Registrado
app = App(
    name="financial_data_agent_app",
    root_agent=root_agent,
    plugins=[bq_logging_plugin] # Registra la telemetría automática
)

if __name__ == "__main__":
    # Ejecución interactiva / Endpoint
    print("Agente inicializado con telemetría streaming en BigQuery.")

Auditoría y Telemetría: Consultas SQL de Producción

Una vez que los eventos se ingieren en la tabla agent_events, puedes ejecutar consultas OLAP inmediatas en la consola de BigQuery:

1. Trazabilidad de una Invocación Específica (Prompt, Tool Call y Respuesta)

SELECT 
    timestamp,
    event_type,
    agent_name,
    content
FROM 
    `mi-proyecto-gcp.demo_dataset_ia.agent_events`
WHERE 
    invocation_id = 'a64016df-4110-4475-ac10-fef2c5b0b41f'
ORDER BY 
    timestamp ASC;

2. Consumo Promedio de Tokens y Análisis FinOps por LLM Response

SELECT 
    DATE(timestamp) AS fecha,
    agent_name,
    COUNT(1) AS total_respuestas,
    AVG(CAST(JSON_EXTRACT_SCALAR(content, '$.token_usage.total') AS INT64)) AS avg_tokens_por_llamada,
    SUM(CAST(JSON_EXTRACT_SCALAR(content, '$.token_usage.total') AS INT64)) AS total_tokens_consumidos
FROM 
    `mi-proyecto-gcp.demo_dataset_ia.agent_events`
WHERE 
    event_type = 'LLM_RESPONSE'
GROUP BY 
    fecha, agent_name
ORDER BY 
    fecha DESC;

3. Monitorización de Excepciones y Fallos en Herramientas

SELECT 
    timestamp,
    event_type,
    agent_name,
    error_message,
    content
FROM 
    `mi-proyecto-gcp.demo_dataset_ia.agent_events`
WHERE 
    error_message IS NOT NULL OR is_error = TRUE
ORDER BY 
    timestamp DESC
LIMIT 50;

Patrones de Diseño y Gobernanza Empresarial

Para escalar arquitecturas multiagente bajo estándares de producción, se deben aplicar tres patrones clave:

  • Desacoplamiento I/O mediante Storage Write API: El plugin de ADK utiliza buffers en memoria y subprocesos para canalizar los eventos. Esto garantiza que la latencia percibida por el usuario final depende únicamente de la inferencia del modelo y no de la escritura del log.
  • Gobernanza de Identidad (IAM): La Service Account que ejecuta el contenedor del agente solo requiere el rol roles/bigquery.dataEditor a nivel de dataset y roles/bigquery.jobUser a nivel de proyecto, limitando privilegios y evitando accesos administrativos.
  • Clustering Estratégico: Al ordenar físicamente los bloques de BigQuery por event_type (ej. INVOCATION_STARTING, TOOL_CALL, LLM_RESPONSE), los dashboards en Looker Studio o Looker Core reducen su consumo de bytes leídos hasta en un 85%.

Framework de Implementación Paso a Paso

  1. Creación del Dataset y Tabla Optimizada en BigQuery: Ejecuta el script DDL con particionado temporal y clustering por tipo de evento y nombre de agente.
  2. Asignación de Permisos IAM de Mínimo Privilegio: Configura la Service Account del agente con los roles estrictos sobre el dataset destino.
  3. Inyección de Dependencias en el Código ADK: Instala la librería del plugin e inicializa BigQueryAgentAnalyticsPlugin en el objeto App.
  4. Validación de Tracing y Pruebas de Carga: Ejecuta tests conversacionales y verifica la ingesta de las columnas session_id, invocation_id y content en la vista previa de BigQuery.
  5. Creación de Alertas FinOps y Dashboards: Conecta Looker Studio para monitorizar el gasto acumulado de tokens y anomalías en el uso de herramientas.

Preguntas Frecuentes Técnicas

¿Impacta BigQuery Agent Analytics la latencia de respuesta del agente en producción?

No. El plugin de BigQuery Agent Analytics utiliza la BigQuery Storage Write API en hilos de ejecución asíncronos y desacoplados. La telemetría de eventos (prompts, tool calls, respuestas y tokens) se canaliza en streaming en segundo plano sin bloquear el bucle principal de inferencia del LLM.

¿Qué esquema de datos y particionamiento genera la tabla agent_events?

Por defecto, la tabla agent_events almacena campos como timestamp, event_type, agent_name, invocation_id, session_id, user_id, content y error_message. En producción se recomienda encarecidamente particionar por TIMESTAMP(timestamp) y aplicar clustering por event_type y agent_name para optimizar costes de consulta SQL.

¿Cómo se calculan los costes y consumo de tokens con BigQuery Agent Analytics?

Filtrando por el evento event_type = 'LLM_RESPONSE', el payload JSON en la columna content contiene metadatos del uso de tokens (prompt_token_count, candidates_token_count, total_token_count). Mediante funciones JSON_EXTRACT_SCALAR de SQL en BigQuery es posible consolidar dashboards analíticos de coste en tiempo real.

Sobre el Autor: Eduardo Martínez Agrelo

AI & Data Architect

Especialista en arquitecturas de datos e inteligencia artificial generativa en Google Cloud Platform. Asesora a organizaciones en el diseño de plataformas de datos a escala empresarial, optimización FinOps y despliegue de sistemas agénticos robustos en producción.