Pular para o conteúdo
,

Token budget por agente: o rate limiter que protege o seu orçamento

Token budget por agente: rate limit de provedor controla taxa, não gasto. Como impor teto de custo por request, sessão, agente e tenant.

Avatar de DK
DKTrabalha com Linux e Unix a mais de 23 anos e possui as certificações LPI 3, RHCE, AIX e VIO.

01 ago, 2026
6 min de leitura

Rate limiter é problema resolvido em backend: cada requisição consome tokens de um balde que enche a taxa fixa; sem saldo, o servidor rejeita. O padrão segura picos e limita consumo excessivo por cliente. Com agentes de LLM, ele continua necessário, mas deixou de ser suficiente. Rate limit controla velocidade; token budget controla o total gasto. Um agente em loop abaixo do rate limit pode queimar caixa a noite inteira sem ver um único 429.

O mesmo algoritmo dos dois lados

Aqui a analogia nem precisa de esforço. A documentação da Anthropic declara que a API usa o algoritmo de token bucket, com capacidade reposta de forma contínua até o limite máximo. O mesmo mecanismo que times de backend implementam no gateway roda do lado de lá.

Os três provedores principais medem limites em eixos parecidos:

Provedor Eixos de rate limit Sinal de estouro
Anthropic RPM, ITPM e OTPM por classe de modelo 429 + header retry-after
OpenAI RPM, TPM e limites diários (RPD, TPD) por tier 429 + header Retry-After
Google RPM, TPM de input e RPD; gasto por 10 min em algumas contas 429 RESOURCE_EXHAUSTED

ITPM e OTPM, na nomenclatura da Anthropic, separam tokens de input e de output por minuto; no Gemini, o TPM conta input. Anthropic e OpenAI expõem headers com o estado atual (anthropic-ratelimit-*, x-ratelimit-*). E o playbook clássico funciona: ler os headers, aplicar backoff exponencial e respeitar o retry-after quando ele vier. Até aqui, o conhecimento de sistemas distribuídos transfere direto.

Onde a analogia quebra

Três pontos.

Taxa não é total. Rate limit limita tokens por minuto. Não limita tokens por tarefa, por cliente ou por mês. Um agente preso em loop a 50% dos limites de taxa passa em todos os checks do provedor. E ainda assim pode consumir o orçamento do mês em dias.

A chamada que custa é a que funciona. Em microserviço, 429 é backpressure saudável: a requisição rejeitada normalmente não gera cobrança e o retry costuma resolver. Com agente, o gasto perigoso vem das chamadas que dão certo. Cada iteração do loop devolve resposta bem formada, confiante e paga. Não existe erro pra tratar; existe fatura pra descobrir.

A granularidade é da conta, não do agente. A Anthropic declara que os limites existem pra reduzir overspend acidental e distribuir capacidade entre usuários. Só que o teto vale pra organização inteira, por modelo. Seu produto tem vários agentes e vários tenants dividindo o mesmo teto. O provedor não sabe qual agente gastou, e um agente descontrolado ainda rouba a banda dos outros. Atribuir gasto e repartir capacidade entre os seus agentes é problema seu.

Token budget: limite de estoque, não de taxa

Token budget é um teto de consumo acumulado, em tokens ou em dólares, por unidade que importa pro negócio: request, sessão, agente, tenant. O rate limiter repõe capacidade de forma contínua; o token budget só acumula, até cruzar o teto e bloquear a chamada seguinte. Um limita vazão; o outro, o acumulado.

As camadas, de dentro pra fora:

Camada Mecanismo Limita o quê
Request max_tokens (o nome varia por API) output de uma chamada
Sessão teto de iterações + budget por trace loop de uma tarefa
Agente/chave max_budget + budget_duration gasto acumulado da chave
Time/tenant team budgets no gateway (um team por tenant) gasto por cliente
Organização spend limit no console do provedor a conta inteira

max_tokens é a camada mais barata e a mais esquecida. Na API da Anthropic, ele nem entra no cálculo de OTPM, que conta só os tokens de fato gerados. Ou seja: como controle de rate limit ele não ajuda, mas como teto do custo de output por chamada ele é o primeiro freio.

Na camada de sessão, o LiteLLM oferece teto de iterações e de gasto por sessão, amarrados a um trace ID. É o controle que mira exatamente o loop descontrolado: a sessão estoura o teto e o gateway rejeita as chamadas seguintes. Parar de verdade depende do agente tratar esse 429 como fim de tarefa, não como convite pra retry.

Na camada de chave, o token budget por chave virtual fecha o caso do agente: uma chave por agente, cada uma com teto próprio. Exemplo adaptado da doc do LiteLLM:

curl 'http://0.0.0.0:4000/key/generate' \
  --header 'Authorization: Bearer {master-key}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "team_id": "whatsapp-bot",
    "max_budget": 10,
    "budget_duration": "30d"
  }'

Quando a chave cruza o max_budget, medido em dólares, as chamadas seguintes falham. O budget_duration reseta o acumulado no fim do período. Detalhe que morde: o default de max_budget é null, sem verificação nenhuma. O budget que ninguém configurou não existe.

Na ponta do provedor, a rede de segurança final. O console da Anthropic aceita spend limit configurável, com teto dado pelo seu tier. O Gemini aplica limite de gasto automático em janela móvel de 10 minutos, conforme o tier e o histórico de billing da conta. Útil, mas com a granularidade errada pro nosso problema: é freio de conta, não de agente.

Um post de abril de 2026 do AI Security Gateway propõe cinco estratégias no mesmo espírito, incluindo roteamento por classe de modelo e circuit breaker. E defende aplicar todas no gateway. O argumento central: enforcement no gateway independe de framework e o agente não consegue contornar. O agente que decide o próprio limite é o mesmo que entrou em loop.

Cache muda a conta

Um detalhe da doc da Anthropic conecta este artigo ao resto da série: pra maioria dos modelos Claude, só o input não cacheado conta no ITPM. Cache bem usado aumenta o throughput efetivo dentro do mesmo limite e reduz o custo do input repetido. O artigo sobre prompt caching, mais adiante na série, desce nesse detalhe.

Fechando

No vocabulário do artigo dos quatro eixos: rate limit do provedor administra a capacidade do lado de lá; token budget protege o seu eixo de custo. E budget estourado vira decisão de produto que a infra executa: falhar a chamada, degradar pra um modelo mais barato ou escalar pra um humano. Essas três saídas rendem artigos próprios nesta série, do LLM gateway ao kill switch de agente.

Comece pelo mínimo: max_tokens em toda chamada, uma chave por agente com max_budget definido, spend limit no console. São três controles. O runaway agent que eles seguram não avisa antes de acontecer.

Fontes

Avatar de DK

Comentários

Deixe um comentário

Seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Ir para