Você está criando aplicações com interfaces conversacionais? Sabia que o custo pode crescer quadraticamente com a quantidade de mensagens da conversa?

Essa é uma característica pouco comentada em discussões sobre aplicações com LLMs, apesar de ter implicações importantes para qualquer produto em escala.

Neste texto, explicamos qual é esse custo e por que ele existe, apresentando a matemática básica do fenômeno.

1. Caracterizando o Problema

Considere um chat com N interações, onde cada interação é um par:

(requisição do usuário → resposta do assistente)

Em alguns casos, uma mesma situação pode ser resolvida com N=3 interações ou com o dobro, N=6.

O que afirmo aqui é o seguinte: o custo não vai crescer nesta mesma proporção! (Não é linear!) Dobrando o tamanho da conversa, você terá algo em torno do quádruplo do valor total!

De modo geral, um chat com N interações terá um custo proporcional a .

Para entender o porquê, precisamos ver como funciona um chat baseado em modelos de linguagem.

2. Chat com Modelos Transformers

Aqui tratamos de aplicações de conversação baseadas em redes neurais Transformers Autorregressivas. Esta é a técnica por trás dos modelos mais conhecidos, sejam grandes (GPT, Gemini, Claude) ou menores (Gemma, LLaMA, Qwen).

Simplificadamente, esses modelos recebem um texto de entrada e retornam um texto de saída. Cada texto é subdividido em tokens, que você pode assumir que são “palavras” (na prática, podem ser partes de palavras, pontuações ou símbolos).

O loop de uma aplicação conversacional funciona assim:

LOOP DO CHAT 1. Usuário envia mensagem 2. Monta histórico completo [msg1][resp1]…[nova msg] 3. Histórico enviado ao modelo 4. Modelo gera a resposta histórico cresce ↺
Figura 1 — O loop de um chat com LLM. A cada rodada, o histórico enviado ao modelo fica maior.

Junte agora duas informações:

  1. A entrada enviada ao modelo cresce a cada interação (o histórico acumula)
  2. Modelos privados cobram (em dólar!) valores que dependem do tamanho da entrada, pelo menos.

A consequência direta dessas duas propriedades é o custo quadrático.

3. Modelo Matemático Simplificado

Para entender a matemática, vamos adotar algumas simplificações:

  • Cada mensagem (do usuário ou do assistente) tem o mesmo tamanho: m tokens
  • O custo pago ao provedor é igual ao número de tokens de entrada, em centavos
  • Ignoramos, por ora, a cobrança por tokens de saída e tokens separadores de mensagens

3.1 Custo por interação: T(i)

Definimos T(i) como a quantidade de tokens de entrada enviada na interação i.

Veja como o histórico cresce a cada rodada:

U = mensagem do usuário A = resposta do assistente i=1 i=2 i=3 i=4 U1 T(1) = 1 × m U1 A1 U2 T(2) = 3 × m U1 A1 U2 A2 U3 T(3) = 5 × m U1 A1 U2 A2 U3 A3 U4 T(4) = 7 × m
Figura 2 — A cada nova interação, o histórico enviado ao modelo cresce com 2 novas mensagens.

Note que os fatores seguem a sequência dos ímpares positivos: 1, 3, 5, 7, …

A fórmula geral é:

\[T(i) = (2i - 1) \times m\]

O custo de gerar cada resposta cresce linearmente com o número da interação, mas isso é apenas o custo de gerar uma resposta isolada. O que realmente importa é o custo acumulado.

3.2 Custo total da conversa: C(N)

O custo total de uma conversa com N interações é a soma dos custos de gerar cada resposta nas interações de 1 a N:

\[C(N) = T(1) + T(2) + T(3) + \cdots + T(N)\]

Substituindo pela fórmula de T(i):

\[C(N) = 1m + 3m + 5m + \cdots + (2N-1)m\]

Fatorando por m:

\[C(N) = m \times (1 + 3 + 5 + \cdots + (2N-1))\]

A soma dos N primeiros números ímpares é um resultado clássico da Matemática:

\[1 + 3 + 5 + \cdots + (2N-1) = N^2\]

Portanto:

\[\boxed{C(N) = m \times N^2}\]

Ou, em português claro:

O custo total de um chat cresce quadraticamente com o número de interações.

4. O Que Isso Significa na Prática

4.1 Custo de conversas longas cresce rápido demais

A relação quadrática produz situações que podem surpreender:

Interações Fator de crescimento do custo
3 → 6 (dobro) (quadruplica)
3 → 9 (triplo) (multiplica por 9)
3 → 12 (quádruplo) 16× (multiplica por 16)
0 25 50 75 100 125 1 2 3 4 5 6 7 8 9 10 11 12 I=3 I=6 custo × 4 C(I) = I² — custo total
Figura 3 — Crescimento quadrático do custo total. Dobrar o tamanho da conversa quadruplica o custo.

Chats longos são essencialmente caros, independente do modelo ou provedor. Além disso, históricos muito longos podem degradar a qualidade das respostas (fenômeno chamado de context rot).

Diante disso, vale perguntar:

Você quer mesmo deixar o seu usuário conversar livremente, sem nenhuma estratégia de controle de contexto?

4.2 Engenharia de Contexto se torna Essencial

Ok, você até pode deixar o usuário conversar livremente…

Mas, para não pagar caro, você precisa adotar técnicas de Engenharia de Contexto. Entenda, aqui, “contexto” como a entrada a ser enviada ao modelo.

O princípio central dessas técnicas é: usar o contexto mais relevante possível, com o menor tamanho possível.

Até aqui, assumimos que o contexto enviado ao modelo é o histórico completo. Mas você pode enviar um contexto menor. Uma técnica simples consiste em sumarizar interações antigas e deixar as mais recentes sem alteração.

4.3 Como Usuário

Talvez você seja um usuário que paga por conversa. (Isso pode acontecer, por exemplo, ao usar um assistente de codificação).

Neste caso, é uma boa ideia reiniciar o contexto de vez em quando. Como? Comece uma nova conversa, retomando o assunto de onde lhe interessa!

5. Conclusão

Na prática, o custo real pode diferir das fórmulas apresentadas por alguns motivos:

  • O valor por token varia conforme o modelo
  • É comum haver preços diferentes para tokens de entrada e de saída
  • Mecanismos de prompt caching (que variam por provedor) podem baratear

Mesmo levando esses fatores em consideração, a tendência quadrática permanece válida.

Se você está construindo uma aplicação conversacional, especialmente pensando em escala, com milhares ou milhões de conversas, precisa estar atento a essa “matemática” e às soluções da Engenharia de Contexto.