Blog
Nossas últimas novidadesComo reduzir custo de IA generativa: caching, roteamento de modelos e limites por usuário
Custo de IA não explode “de repente”.
Ele explode quando você coloca em produção sem limites, sem cache e sem roteamento.
Aplicações com LLM têm um custo variável que assusta por dois motivos:
- cresce com uso (e isso é bom, mas precisa ser previsível)
- tem outliers (um usuário pode gerar custo de 1000 usuários)
Este guia reúne estratégias práticas para reduzir custo sem matar qualidade.
O que você vai encontrar aqui
- Principais drivers de custo (o que realmente pesa)
- Como reduzir tokens sem piorar a resposta
- Cache: exato e semântico (quando usar)
- Roteamento de modelos (pequeno vs grande)
- Budgets e rate limits por usuário/tenant
- Checklist final para controlar orçamento
Drivers de custo (o que mais pesa)
Normalmente, o custo vem de uma combinação de:
- tokens de entrada (prompt + histórico + contexto do RAG)
- tokens de saída (respostas longas demais)
- número de chamadas (retries, tools, múltiplas etapas)
- modelos “grandes” usados para tudo
- ausência de cache
1) Reduza tokens de entrada (sem perder contexto)
A maior alavanca costuma ser contexto.
Boas práticas:
- não envie o histórico inteiro: resuma e guarde estado estruturado
- evite “prompt enciclopédia”: separe instruções fixas e enxutas
- no RAG, use poucos trechos de alta qualidade (com reranking)
- aplique limites de tamanho no input do usuário (e trate mensagens gigantes)
Se você ainda não estruturou RAG, vale ler: RAG na prática.
2) Controle tokens de saída (resposta curta é feature)
Respostas longas custam mais e pioram UX.
Técnicas simples:
- defina “máximo de X linhas” para respostas padrão
- use formatos: lista, bullet points, tabela curta
- só gere texto longo quando o usuário pedir explicitamente
3) Cache exato (o “barato” que funciona)
Cache exato é quando você reaproveita a resposta para a mesma entrada e o mesmo contexto.
Funciona muito bem para:
- FAQs
- prompts internos repetidos
- respostas com baixa variabilidade
Cuidados:
- inclua no cache a versão do prompt/modelo e a configuração do RAG
- defina TTL e invalidação quando conteúdo muda
4) Cache semântico (quando muita gente pergunta “quase igual”)
Cache semântico reaproveita resposta quando a pergunta é parecida, não idêntica.
Exemplo:
- “Como trocar minha senha?”
- “Como redefinir senha?”
Dicas para não errar:
- só use cache semântico para assuntos estáveis e não sensíveis
- limite por categoria/tenant (não misture contextos)
- tenha fallback para gerar do zero quando confiança for baixa
5) Roteamento de modelos (não use canhão para matar formiga)
Nem toda tarefa precisa de um modelo caro.
Estratégia comum:
- usar um modelo mais barato para triagem/classificação
- usar o modelo mais forte só quando necessário
Exemplo de roteamento por complexidade:
- se a pergunta é curta e está no FAQ → modelo pequeno + cache
- se envolve múltiplas fontes → modelo forte + RAG
- se envolve ação → modelo forte + tool calling + validação
6) Limites por usuário/tenant (o que evita “unbounded consumption”)
Sem limites, um único usuário pode gerar custo infinito — e isso aparece como risco na OWASP (consumo ilimitado / DoS de modelo).
Práticas:
- rate limit por usuário (requests/minuto)
- budget por tenant (custo máximo/dia)
- limite de tokens por request
- bloqueio de padrões abusivos (mensagens enormes, loops, retries)
7) Evite loops e retries silenciosos
Um padrão de bug comum:
- tool falha → retry
- model “tenta de novo” → chama tool de novo
- vira loop e explode custo
Mitigação:
- limite de tentativas por etapa
- circuit breaker para tools instáveis
- fallback para resposta “não consegui completar agora”
8) Faça observabilidade de custo desde o dia 1
Sem visibilidade por rota/feature, você não sabe onde otimizar.
Mínimo viável:
- custo estimado por request
- custo por feature
- top 20 outliers por dia
- custo por usuário/tenant
Isso é LLMOps: LLMOps: métricas e logs.
Checklist final (controle de custo)
- Limites de input do usuário e de contexto enviado ao modelo
- Respostas com limite de tamanho (por padrão)
- Cache exato para FAQs e perguntas repetidas
- Cache semântico com regras (apenas temas estáveis e não sensíveis)
- Roteamento de modelos por complexidade
- Budgets e rate limits por usuário/tenant
- Limite de retries e prevenção de loops
- Dashboard com custo por request/feature + outliers