Rastrear o uso de tokens de modelos de terceiros

É possível calcular o consumo de tokens por modelo, dia e usuário para modelos de terceiros nas ferramentas de IA para desenvolvedores, como o Anthropic Claude Opus 5.5 e o Anthropic Claude Sonnet 5.5, usando o Cloud Logging e a Análise de observabilidade.

Guia de início rápido

Se o bucket de registros _Default do seu projeto já tiver sido atualizado para a Análise de observabilidade, execute a consulta a seguir em Logging > Análise de observabilidade (substituindo [PROJECT_ID] pelo Google Cloud ID do projeto) para receber o uso de tokens de 30 dias em modelos Anthropic de terceiros:

SELECT
  JSON_VALUE(labels.model) AS model,
  COUNT(*) AS requests,
  SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.promptTokenCount) AS INT64)) AS input_tokens,
  SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.candidatesTokenCount) AS INT64)) AS output_tokens,
  IFNULL(SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.cachedContentTokenCount) AS INT64)), 0) AS cached_tokens,
  IFNULL(SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.thoughtsTokenCount) AS INT64)), 0) AS thoughts_tokens,
  SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.totalTokenCount) AS INT64)) AS total_tokens
FROM
  `[PROJECT_ID].global._Default._Default`
WHERE
  log_id = "businessaicode.googleapis.com/inference_response"
  AND JSON_VALUE(labels.model_provider) = "Anthropic"
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY
  model
ORDER BY
  total_tokens DESC

Antes de começar

Verifique se o projeto atende aos seguintes requisitos antes de executar as etapas do tutorial:

  • A geração de registros de metadados está ativada. Os controles de administrador das ferramentas de IA para desenvolvedores precisam ter a geração de registros de metadados ativada para que os registros inference_response incluam o jsonPayload.metadata bloco de tokens.
  • Você tem pelo menos o papel Leitor de registros (roles/logging.viewer) . O papel padrão roles/logging.viewer concede acesso SQL à visualização de registros _Default._Default usada neste guia. A consulta da visualização _Default._AllLogs requer roles/logging.privateLogViewer ou roles/logging.viewAccessor.
  • O bucket de registros _Default foi atualizado para a Análise de observabilidade.
    1. No Google Cloud console, acesse Logging > Armazenamento de registros, encontre o _Default bucket e verifique a coluna Análise de observabilidade.
    2. Se ele não estiver ativado, clique em Mais > Fazer upgrade para usar a Análise de observabilidade. O upgrade modifica _Default no local e não pode ser desfeito.
    3. Permitir a propagação inicial:depois de fazer upgrade de um bucket, o Cloud Logging leva de 30 a 60 minutos para atualizar os caches de roteamento de novas entradas de registro e várias horas para preencher os registros históricos (o preenchimento começa 1 hora após a conclusão do upgrade).

Como o registro de registro é estruturado

Cada chamada de inferência emite uma única entrada InferenceResponseLog para o registro businessaicode.googleapis.com%2Finference_response. A identidade do modelo é registrada em labels, e as contagens de tokens são registradas em jsonPayload.metadata:

{
  "logName": "projects/[PROJECT_ID]/logs/businessaicode.googleapis.com%2Finference_response",
  "timestamp": "2026-10-07T17:23:03.495323480Z",
  "labels": {
    "model": "claude-sonnet-5-5",
    "model_provider": "Anthropic",
    "client_name": "antigravity_cli",
    "user_id": "user:user@example.com",
    "trajectory_id": "25cd0b58-58ea-4beb-b2d7-42e0d3fdd96d",
    "request_id": "25cd0b58-58ea-4beb-b2d7-42e0d3fdd96d-19"
  },
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.businessaicode.logging.v1.InferenceResponseLog",
    "metadata": {
      "promptTokenCount": "70825",
      "cachedContentTokenCount": "69079",
      "candidatesTokenCount": "14215",
      "totalTokenCount": "85040"
    }
  }
}

Referência de campo e regras de contagem

Campo LogEntry (Análise de registros e métricas com base em registros) Expressão SQL (Análise de observabilidade) Descrição
labels.model JSON_VALUE(labels.model) Identificador do modelo (por exemplo, claude-sonnet-5-5 para Anthropic Claude Sonnet 5.5 ou claude-opus-5-5 para Anthropic Claude Opus 5.5).
labels.model_provider JSON_VALUE(labels.model_provider) Nome do provedor (por exemplo, Anthropic ou Google).
labels.user_id JSON_VALUE(labels.user_id) Principal autenticado (por exemplo, user:user@example.com).
labels.trajectory_id JSON_VALUE(labels.trajectory_id) ID da trajetória da conversa ou do agente. Um turno de usuário normalmente abrange várias chamadas request_id em um único trajectory_id.
jsonPayload.metadata.promptTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.promptTokenCount) AS INT64) Total de tokens de entrada para a chamada (inclui tokens armazenados em cache).
jsonPayload.metadata.cachedContentTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.cachedContentTokenCount) AS INT64) Subconjunto de promptTokenCount disponibilizado no cache de comandos. Omitido quando zero. Não adicione a promptTokenCount ou totalTokenCount.
jsonPayload.metadata.candidatesTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.candidatesTokenCount) AS INT64) Tokens de saída gerados pelo modelo.
jsonPayload.metadata.thoughtsTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.thoughtsTokenCount) AS INT64) Tokens de raciocínio, quando aplicável. Omitido para modelos da Anthropic.
jsonPayload.metadata.totalTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.totalTokenCount) AS INT64) Total autorizado para a chamada. É igual a promptTokenCount + candidatesTokenCount (+ thoughtsTokenCount quando presente).

Etapa 1: verificar os registros recebidos no Explorador de registros

Antes de executar consultas SQL, confirme se os registros inference_response com metadados de token estão chegando ao seu projeto:

  1. No Google Cloud console, abra Geração de registros > Análise de registros.
  2. Cole a consulta a seguir no editor de consultas, substituindo [PROJECT_ID] pelo ID do projeto:

    logName="projects/[PROJECT_ID]/logs/businessaicode.googleapis.com%2Finference_response"
    labels.model_provider="Anthropic"
    
  3. Clique em Executar consulta.

  4. No painel Campos de registro, clique em modelo para conferir a distribuição de solicitações em modelos da Anthropic. Essa visualização conta solicitações, não tokens.

Etapa 2: somar tokens por modelo na Análise de observabilidade

  1. No Google Cloud console, abra Logging > Análise de observabilidade.
  2. Defina o seletor de período como Últimos 30 dias (o seletor de período limita os resultados da consulta, além da cláusula WHERE do SQL).
  3. Cole e execute a consulta a seguir, substituindo [PROJECT_ID] pelo ID do projeto:

    SELECT
      JSON_VALUE(labels.model) AS model,
      COUNT(*) AS requests,
      SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.promptTokenCount) AS INT64)) AS input_tokens,
      SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.candidatesTokenCount) AS INT64)) AS output_tokens,
      IFNULL(SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.cachedContentTokenCount) AS INT64)), 0) AS cached_tokens,
      IFNULL(SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.thoughtsTokenCount) AS INT64)), 0) AS thoughts_tokens,
      SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.totalTokenCount) AS INT64)) AS total_tokens
    FROM
      `[PROJECT_ID].global._Default._Default`
    WHERE
      log_id = "businessaicode.googleapis.com/inference_response"
      AND JSON_VALUE(labels.model_provider) = "Anthropic"
      AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
    GROUP BY
      model
    ORDER BY
      total_tokens DESC
    

Etapa 3: receitas SQL comuns

Use as consultas SQL a seguir em Logging > Análise de observabilidade para analisar as tendências diárias de tokens e a atribuição de tokens por usuário.

Tendência diária de tokens por modelo

SELECT
  TIMESTAMP_TRUNC(timestamp, DAY) AS day,
  JSON_VALUE(labels.model) AS model,
  COUNT(*) AS requests,
  SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.totalTokenCount) AS INT64)) AS total_tokens
FROM
  `[PROJECT_ID].global._Default._Default`
WHERE
  log_id = "businessaicode.googleapis.com/inference_response"
  AND JSON_VALUE(labels.model_provider) = "Anthropic"
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY
  day, model
ORDER BY
  day DESC, total_tokens DESC

Atribuição por usuário e por modelo

SELECT
  JSON_VALUE(labels.user_id) AS user_id,
  JSON_VALUE(labels.model) AS model,
  COUNT(*) AS requests,
  SUM(SAFE_CAST(JSON_VALUE(json_payload.metadata.totalTokenCount) AS INT64)) AS total_tokens
FROM
  `[PROJECT_ID].global._Default._Default`
WHERE
  log_id = "businessaicode.googleapis.com/inference_response"
  AND JSON_VALUE(labels.model_provider) = "Anthropic"
  AND JSON_VALUE(labels.user_id) IS NOT NULL
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY
  user_id, model
ORDER BY
  total_tokens DESC

Etapa 4: fixar em um painel do Cloud Monitoring

Há duas opções de painel, dependendo se você precisa de detalhamentos históricos ou ad hoc do SQL ou de uma métrica contínua leve:

Abordagem Ideal para Retém o histórico por mais de 30 dias? Oferece suporte ao agrupamento user_id?
Opção A: salvar o gráfico SQL da Análise de observabilidade Tabelas e gráficos por modelo, diários e por usuário com configuração de métrica zero Limitado pela retenção do bucket de registros (padrão de 30 dias) Sim (sem limite de cardinalidade)
Opção B: métrica de distribuição com base em registros Série temporal de monitoramento contínuo e alertas em rótulos de baixa cardinalidade Sim (armazenado no Monitoring) Não (a alta cardinalidade esgota a cota de métricas)

Opção A: salvar diretamente da Análise de observabilidade

  1. Execute a consulta de etapa 2 ou a consulta de tendência diária de tokens por modelo na Análise de observabilidade.
  2. Mude o painel de resultados de Tabela para Gráfico se quiser uma série temporal visual ou um gráfico de barras.
  3. Na barra de ferramentas do painel de resultados, clique em Salvar no painel e escolha um painel do Monitoring ou crie um novo.

Opção B: criar uma métrica de distribuição com base em registros

  1. No Google Cloud console, acesse Logging > Métricas com base em registros e clique em Criar métrica.
  2. Selecione Distribuição como o tipo de métrica.
  3. Cole a consulta da etapa 1 no campo Filtro e defina Nome do campo como jsonPayload.metadata.totalTokenCount.
  4. Adicione dois rótulos:
    • model mapeado para labels.model
    • model_provider mapeado para labels.model_provider

A seguir