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 para desenvolvedores de IA, como o Anthropic Claude Opus 5.5 e o Anthropic Claude Sonnet 5.5, usando o Cloud Logging e o 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 seguinte consulta em Logging > Análise de Observabilidade (substituindo [PROJECT_ID] pelo ID do projeto Google Cloud ) para receber o uso de tokens de 30 dias em modelos de terceiros da Anthropic:

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:

  • O registro de metadados está ativado. Os controles do administrador das ferramentas para desenvolvedores de IA precisam ter o registro de metadados ativado para que os registros do inference_response incluam o bloco de token jsonPayload.metadata.
  • Você tem pelo menos o papel de 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. Para consultar a visualização _Default._AllLogs, é necessário ter roles/logging.privateLogViewer ou roles/logging.viewAccessor.
  • O bucket de registros _Default foi atualizado para a Análise de observabilidade.
    1. No console Google Cloud , acesse Logging > Armazenamento de registros, encontre o bucket _Default e verifique a coluna Análise de observabilidade.
    2. Se 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. Aguarde 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 uma hora após a conclusão do upgrade.

Como o registro de log é estruturado

Cada chamada de inferência emite uma única entrada InferenceResponseLog no 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 em cache).
jsonPayload.metadata.cachedContentTokenCount SAFE_CAST(JSON_VALUE(json_payload.metadata.cachedContentTokenCount) AS INT64) Subconjunto de promptTokenCount veiculados do 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 da 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 console Google Cloud , 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 model para ver a distribuição de solicitações entre os 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 console do Google Cloud , abra Logging > Análise de observabilidade.
  2. Defina o seletor de período como Últimos 30 dias. Ele 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 comuns de SQL

Use as seguintes consultas SQL em Geração de registros > 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 painéis, dependendo se você precisa de detalhamentos históricos ou ad hoc de SQL ou de uma métrica contínua leve:

Abordagem Ideal para Retém o histórico por mais de 30 dias? Tem suporte para agrupamento de user_id?
Opção A: salvar o gráfico SQL da Análise de observabilidade Tabelas e gráficos diários, por modelo e por usuário sem configuração de métricas 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 da Etapa 2 ou a consulta 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 ou um gráfico de barras visual.
  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 console do Google Cloud , 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