A temperatura é um número que controla quanto de aleatoriedade um modelo de linguagem usa ao escolher a próxima palavra. Com uma temperatura baixa, o modelo pega a palavra mais provável quase sempre, então as respostas são focadas e repetíveis. Com uma temperatura alta, as chances se espalham, então as respostas variam mais e às vezes se perdem. A temperatura muda como o modelo escolhe entre palavras que ele já considera; ela não muda o que o modelo sabe.
Como um modelo escolhe a próxima palavra
Um modelo escreve um token por vez, e um token é uma palavra ou um pedaço de palavra (veja tokens e janela de contexto). Em cada passo, ele dá uma pontuação a cada token do vocabulário, chamada logit. Uma função chamada softmax transforma essas pontuações em probabilidades: cada pontuação passa por uma exponencial e é dividida pela soma de todas elas, então pontuações maiores ficam com fatias maiores e todas as fatias somam 1. Depois o modelo sorteia um token de acordo com essas fatias.
A temperatura entra logo antes do softmax. Cada pontuação é dividida pela temperatura T:
probabilidade(palavra) = exp(pontuação / T) / soma de exp(pontuação / T) de todos os candidatos
Com T abaixo de 1, as diferenças entre as pontuações aumentam, então o líder se distancia ainda mais. Com T acima de 1, as diferenças diminuem, então os azarões se aproximam. Em T = 1 você tem as probabilidades do próprio modelo. Em T = 0 a divisão fica indefinida, então as APIs tratam isso como "sempre pegue o primeiro token", o que se chama decodificação gulosa (greedy decoding).
Teste: o slider de temperatura
A demonstração abaixo continua a frase "Minha linguagem de programação favorita é" com seis palavras candidatas. As pontuações são ilustrativas, escolhidas para esta demonstração; um modelo real pontua um vocabulário de dezenas de milhares de tokens ou mais, e o nome de uma linguagem pode ser dividido em vários tokens. A matemática é a real: as barras são o softmax dessas pontuações na temperatura que você escolher, e o botão de amostragem sorteia dez palavras a partir delas.
Em 1,0, o Python fica com cerca de 46% e o COBOL com menos de 1%. Arraste para 0,5 e o Python sobe para cerca de 67%, enquanto o COBOL praticamente some. Arraste para 2,0 e o Python cai para cerca de 32%, enquanto o COBOL sobe para cerca de 4%, então mais ou menos uma rodada de dez sorteios em cada três vai incluí-lo pelo menos uma vez. Repare no que nunca acontece: a ordem das palavras continua a mesma em qualquer ajuste. A temperatura não consegue deixar o COBOL mais provável que o Python; ela só aumenta ou diminui as diferenças.
Uma resposta real é feita de centenas dessas escolhas seguidas, e cada escolha passa a fazer parte do contexto da seguinte. Uma palavra incomum logo no início muda tudo o que vem depois, e é por isso que uma resposta com temperatura alta se desvia muito mais do que uma única palavra nesta demonstração sugere.
Quando usar temperatura baixa ou alta
| Tarefa | Ponto de partida | Por quê |
|---|---|---|
| Código, correção de bugs, SQL | Baixa, de 0 a 0,3 | Costuma haver uma continuação melhor, e você quer o mesmo resultado a cada execução |
| Extração, classificação, JSON | 0 | Qualquer variação é ruído, e um programa precisa ler a saída |
| Explicações, perguntas do dia a dia | O padrão do fornecedor | Os padrões são escolhidos para uso geral |
| Brainstorming, nomes, ideias de histórias | Padrão ou um pouco mais alta | Você quer opções diferentes entre si |
Dois cuidados. Primeiro, uma temperatura baixa não torna uma resposta verdadeira. Se a resposta mais provável do modelo estiver errada, a temperatura 0 dá essa resposta errada toda vez, só que de forma consistente; veja alucinação de IA. Segundo, valores muito altos (bem acima de 1, em APIs cuja escala vai até 2) muitas vezes produzem um texto que perde o fio ou deixa de fazer sentido, porque tokens improváveis passam a ser escolhidos cada vez mais.
Às vezes a aleatoriedade é justamente o objetivo. O prompt de autoconsistência roda a mesma pergunta de raciocínio várias vezes, de propósito, com temperatura acima de zero, e depois fica com a resposta em que a maioria das execuções concorda.
Temperatura, top_p e top_k
Dois outros ajustes também controlam a amostragem, e as APIs muitas vezes os mostram ao lado da temperatura.
top_p (nucleus sampling) mantém só os tokens mais prováveis cujas probabilidades somam p e sorteia entre eles. Usando os números da demonstração com temperatura 1: Python, JavaScript e Rust somam cerca de 88%, e acrescentar o C passa de 90%. Então, com top_p = 0.9, o modelo só sorteia entre esses quatro; Haskell e COBOL nunca aparecem. Ao contrário da temperatura, o top_p se adapta: quando o modelo está confiante, poucos tokens passam no corte, e quando está em dúvida, muitos passam.
top_k mantém um número fixo dos tokens mais prováveis, como os 40 primeiros. Algumas APIs oferecem esse ajuste e outras não.
Os fornecedores geralmente recomendam mudar a temperatura ou o top_p, não os dois, porque os efeitos se somam de um jeito difícil de prever.
Como definir a temperatura na API
Os apps de chat escondem o ajuste, mas as APIs o recebem como parâmetro. A faixa depende do fornecedor: a API Chat Completions da OpenAI aceita de 0 a 2, e a API Messages da Anthropic aceita de 0 a 1. Alguns modelos de raciocínio só aceitam o valor padrão.
from openai import OpenAI
client = OpenAI()
MODEL = "your-model-id" # e.g. from your provider's model list
response = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": "Write a SQL query that counts orders per customer."}],
temperature=0.2,
)
print(response.choices[0].message.content)
import anthropic
client = anthropic.Anthropic()
MODEL = "your-model-id" # e.g. from your provider's model list
message = client.messages.create(
model=MODEL,
max_tokens=500,
temperature=0.2,
messages=[{"role": "user", "content": "Write a SQL query that counts orders per customer."}],
)
print(message.content[0].text)
Por que os apps de chat escondem o ajuste, e o que fazer no lugar
Os apps do ChatGPT, do Claude e do Gemini escolhem os ajustes de amostragem por você e não mostram nenhum slider. Isso mantém os apps simples e, na maioria dos pedidos, reescrever o prompt muda a resposta muito mais do que um ajuste de amostragem mudaria.
Então, em um app de chat, o seu controle é o prompt. Pedir uma resposta traz algo próximo da primeira escolha do modelo. Pedir muitas respostas diferentes entre si traz variedade em qualquer temperatura, porque agora o modelo tem um motivo para evitar a primeira escolha. Alterne entre as abas e mude o produto para ver a diferença.
Streakly. É curto, fácil de lembrar e remete às sequências diárias (streaks) que fazem as pessoas voltarem.
O botão de gerar de novo em um app de chat sorteia uma nova resposta a partir do mesmo prompt, o que é um jeito rápido de ver quanto as respostas variam. Se elas variam mais do que você quer, a solução costuma ser um prompt mais específico: uma tarefa precisa estreita o leque de boas respostas, e isso deixa as execuções mais parecidas. O guia de como escrever um prompt mostra o que acrescentar.
Perguntas frequentes
O que é temperatura em um LLM?
Temperatura é um ajuste de amostragem que controla quão aleatória é a escolha de cada próximo token. O modelo dá uma pontuação a cada token possível, e as pontuações são divididas pela temperatura antes de virarem probabilidades. Valores baixos deixam a primeira opção dominar; valores altos achatam as chances, então tokens menos prováveis são escolhidos com mais frequência.
Que temperatura devo usar para programação?
Um valor baixo, entre 0 e 0,3, é um ponto de partida comum para código, extração de dados e qualquer tarefa com uma única resposta certa, porque você quer a continuação mais provável e resultados repetíveis. Aumente quando quiser variedade, como para criar nomes ou alternativas de design. Alguns modelos de raciocínio só aceitam o valor padrão, então confira a documentação do fornecedor.
Qual é a diferença entre temperatura e top_p?
A temperatura muda o formato da distribuição de probabilidades inteira. O top_p, também chamado de nucleus sampling, corta a distribuição: o modelo só sorteia entre o menor grupo de tokens cujas probabilidades somam p, então top_p = 0.9 descarta a cauda longa de tokens improváveis. Os fornecedores geralmente recomendam ajustar um dos dois e deixar o outro no padrão.
Temperatura 0 deixa a saída determinística?
Quase, mas não totalmente. Em 0, o modelo pega o token mais provável em cada passo, então execuções repetidas costumam ser idênticas ou muito parecidas. Pequenas diferenças numéricas nos servidores do fornecedor ainda podem trocar um token de vez em quando, e quando um token muda, o resto da resposta pode seguir outro caminho.
Dá para mudar a temperatura no ChatGPT ou no Claude?
Nos apps de chat, não: eles escolhem os ajustes de amostragem por você e não mostram nenhum controle de temperatura. Você pode defini-la pelas APIs e em ferramentas para desenvolvedores, como o Playground da OpenAI, o Anthropic Console e o Google AI Studio. Em um app de chat, peça variedade ou consistência no próprio prompt.