00-04-01 — Tokens, Context Window e Temperatura
TL;DR
Token: a unidade mínima de texto que o modelo processa — palavras comuns são 1 token, palavras raras podem ser 2-4. Context window: o limite máximo de tokens que o modelo pode ver de uma vez (entrada + saída). Temperatura: controla aleatoriedade da geração (0 = determinístico, 1 = balanceado, 2 = caótico). Esses três parâmetros definem o que você pode fazer com um modelo e quanto vai custar.
A Unidade Básica: o Token
No tópico anterior, vimos que LLMs geram texto token a token. Mas o que é exatamente um token? Não é necessariamente uma palavra — é uma unidade de texto definida por um algoritmo de tokenização, geralmente BPE (Byte Pair Encoding).
A intuição: o tokenizador aprende quais sequências de caracteres aparecem com tanta frequência que vale tratar como unidade. Palavras comuns em inglês ("the", "and", "is") são um token cada. Palavras raras ou técnicas são quebradas em pedaços menores. "tokenization" pode virar "token" + "ization". Código-fonte tem tokenização diferente de prosa.
Regra prática para português: 1 token ≈ 0.75 palavras em inglês, mas português é geralmente menos eficiente — palavras longas com acentos e sufixos viram mais tokens. "Extraordinário" pode ser 3-4 tokens. Para estimativa: 1000 tokens ≈ 750 palavras em inglês, ~600 em português.
Context Window: a Memória de Trabalho do Modelo
A context window (janela de contexto) é o limite total de tokens que o modelo pode processar em uma única chamada — entrada mais saída combinadas. É a "memória de trabalho" do modelo: tudo que está na context window, o modelo pode usar; o que ficou de fora, não existe para ele.
Evolução recente: GPT-3 tinha 4.096 tokens de contexto. GPT-4 chegou a 128K. Claude 3 tem 200K. Gemini 1.5 Pro chegou a 1 milhão. Isso permitiu processar documentos inteiros, transcrições longas, e bases de código completas em uma única chamada.
Mas tamanho da context window não é o único fator. Modelos com contexto muito longo podem ter "lost in the middle" — perda de atenção para informação no meio do contexto. Atenção tende a ser mais forte para o início e fim da janela. Documentos críticos devem ficar no começo ou fim do prompt, não enterrados no meio.
Tokens de Entrada vs Saída: Assimetria de Custo
Uma distinção importante que afeta arquitetura de custo: tokens de entrada (input tokens) e tokens de saída (output tokens, também chamados de completion tokens) são cobrados em taxas diferentes — e output é tipicamente mais caro que input.
GPT-4o em abril/2026: $2.50/M input tokens, $10.00/M output tokens. A razão técnica: gerar um token exige um forward pass completo pela rede; processar tokens de entrada é mais paralelizável.
Implicação de design: RAG é economicamente eficiente porque você passa documentos como input (mais barato) e o modelo gera uma resposta concisa como output (mais caro, mas curto). Pedir ao modelo para copiar documentos inteiros na resposta é um anti-pattern caro.
Max Tokens: Controlando o Tamanho da Resposta
Além da context window (limite do modelo), você pode definir max_tokens por chamada — o máximo de tokens que a resposta pode ter. É uma proteção de custo e uma forma de controlar format.
Cuidado com o erro clássico: definir max_tokens muito baixo corta a resposta no meio da frase. Se você precisa de respostas estruturadas completas, estime o tamanho esperado e defina margem adequada. Para respostas abertas sem limite previsível, umas omita ou defina um limite generoso.
Top-p: Outra Forma de Controlar Aleatoriedade
Além de temperatura, existe o parâmetro top-p (nucleus sampling). Enquanto temperatura ajusta toda a distribuição de probabilidades, top-p define o mínimo de massa de probabilidade considerada — o modelo só considera os tokens que juntos somam a probabilidade p.
Top-p = 0.9: o modelo considera apenas os tokens que juntos cobrem 90% da probabilidade, excluindo os menos prováveis. Isso evita tokens muito aleatórios mesmo com temperatura alta. Na prática, recomendação: altere temperatura OU top-p, não os dois ao mesmo tempo. Use temperatura para controle fino.
Parâmetros em Contexto: Resumo Prático
// Azure OpenAI — parâmetros de inferência principais
var options = new ChatCompletionOptions
{
// Temperatura: 0 = determinístico, 1 = padrão, 2 = criativo
Temperature = 0.7f,
// TopP: alternativa à temperatura (use um ou outro)
// TopP = 0.9f,
// MaxOutputTokenCount: limite de tokens na resposta
MaxOutputTokenCount = 1000,
// Presença e frequência: penalizam repetição
// PresencePenalty = 0.1f, // penaliza tokens que já apareceram
// FrequencyPenalty = 0.1f, // penaliza tokens proporcionalmente à frequência
};
var response = await chatClient.CompleteChatAsync(messages, options);
// Verificar uso de tokens (para monitoramento de custo):
var usage = response.Value.Usage;
Console.WriteLine($"Input: {usage.InputTokenCount} tokens");
Console.WriteLine($"Output: {usage.OutputTokenCount} tokens");
Console.WriteLine($"Total: {usage.TotalTokenCount} tokens");
// Regra: monitore tokens de output em produção —
// são o maior componente de custo em aplicações conversacionais.