01
Um número agregado não é diagnosticável
A latência de ponta a ponta de uma resposta de agente é uma soma de coisas muito diferentes: espera em fila, resolução de intenção, geração de embedding, busca vetorial, reranking, montagem de prompt, tempo até o primeiro token do modelo, geração completa, validação de saída, execução de ferramentas e envio pelo canal. Cada uma dessas etapas tem uma causa de lentidão distinta, uma técnica de correção distinta e um custo de correção distinto. Ver só a soma é como receber a fatura do cartão sem a lista de compras: você sabe que gastou demais e não sabe onde cortar.
O primeiro passo é declarar um orçamento antes de medir. Isso parece invertido, mas é deliberado: se você mede primeiro e só depois define os tetos, os tetos vão nascer ancorados no que o sistema já faz, e o orçamento vira uma descrição do presente em vez de um contrato. Declarar antes força a conversa certa, que é sobre quanto tempo cada etapa merece dado o valor que ela entrega, não sobre quanto tempo ela leva hoje.
| Etapa | Teto sugerido (p95) | Causa típica de estouro | Ação quando estoura |
|---|---|---|---|
| Espera em fila | 50 ms | Concorrência limitada por conexões ou trabalhadores | Aumentar paralelismo ou aplicar prioridade por tipo de tráfego |
| Classificação de intenção | 150 ms | Chamada a um segundo LLM para uma decisão binária | Trocar por classificador leve ou por regra explícita |
| Embedding da consulta | 120 ms | Modelo remoto sem pool de conexões | Pool com keep-alive e cache de consultas repetidas |
| Busca vetorial | 200 ms | topK alto demais ou índice frio | Reduzir topK e aquecer o índice antes de receber tráfego |
| Reranking | 300 ms | Reranquear vinte candidatos quando cinco bastam | Cortar a lista de entrada antes do reranker |
| Tempo até o primeiro token | 900 ms | Prompt gigante sem cache de prefixo | Estabilizar o prefixo e ativar cache de prompt |
| Geração completa | 2500 ms | Resposta longa demais para o canal | Limitar tokens de saída e instruir concisão |
| Validação e guardrails | 150 ms | Validação que chama outro modelo em série | Validar por esquema e reservar o modelo para o caso duvidoso |
| Ferramentas externas | 800 ms | Chamada a ERP ou CRM sem timeout próprio | Timeout por ferramenta e resposta parcial quando estoura |
Os números da segunda coluna não são universais e não devem ser copiados: eles são um ponto de partida para um agente de atendimento em texto, com resposta esperada em torno de cinco segundos. Um agente de voz precisa de tetos radicalmente menores porque o silêncio é insuportável ao telefone; um agente que gera relatório assíncrono pode ter tetos dez vezes maiores. O que importa é que os tetos existam, sejam escritos em algum lugar versionado e sejam revisados quando o produto muda de expectativa.