O que é Amostragem e temperatura?
Amostragem e temperatura (Sampling and temperature) é um fundamento de engenharia de IA para quem trabalha com LLMs. De onde vem a variação nas respostas e quando você quer mais ou menos dela.
Mesmo mês, mesma empresa, duas reclamações. O time de marketing pediu ao modelo dez títulos de campanha e recebeu dez títulos quase iguais.
Enquanto isso, o time de dados extraía o CNPJ das notas fiscais. E a cada execução, o campo voltava num formato diferente.
Os dois times pediram a mesma coisa ao engenheiro: mexe na temperatura. Um queria mais variação. O outro queria menos.
Para saber se a temperatura é mesmo o botão certo, você precisa entender de onde vem a variação. É esta aula. E você vai ver por que, para um desses dois times, a resposta é outra ferramenta.
A cada passo, o modelo calcula uma probabilidade para cada próximo token possível. Amostragem é a regra que escolhe um token a partir dessas probabilidades.
Imagine um dado viciado. A palavra mais provável tem a face maior. Mas as outras faces continuam lá, e às vezes elas saem.
Vamos seguir um passo. O modelo olha tudo o que já está na sequência.
Ele produz uma distribuição. Digamos, Eletrônicos com 80%, Áudio com 15%, e dezenas de outras palavras dividindo o resto.
Aí os parâmetros de amostragem remodelam essa distribuição, antes do sorteio.
Um token é sorteado da distribuição ajustada.
E o token escolhido entra na sequência. Toda escolha seguinte depende dele.
Esse último passo pesa mais do que parece. Como cada token depende dos anteriores, uma escolha diferente no começo muda tudo depois. Duas respostas podem se afastar muito, mesmo quando cada passo varia só um pouco.
Foi o que o time de dados viu. O CNPJ veio com pontos e barra, depois só com dígitos, depois com um ponto final. Três caminhos, a poucos tokens de distância, e os três plausíveis.
São três botões clássicos. A temperatura afia ou achata a distribuição. Temperatura baixa sobe o pico, e o token da frente fica ainda mais na frente. Temperatura alta achata o gráfico, e o segundo e o terceiro lugar ganham chance de verdade.
O top p não estica o gráfico. Ele corta a cauda e sorteia só entre os tokens mais prováveis que somam uma certa probabilidade.
E o top k fica só com um número fixo dos tokens mais prováveis.
Um conselho. Mexer em mais de um ao mesmo tempo deixa o efeito impossível de ler. Se for usar esses botões, escolha um. Só a temperatura basta para um experimento.
De volta ao exemplo da categoria. Perto de temperatura zero, Eletrônicos sai quase sempre. Com temperatura alta, aparece Áudio, e até Informática. Mas repare no que nenhum desses sorteios faz. Nenhum transforma um CNPJ com pontuação em quatorze dígitos limpos. O formato não mora nesse botão.
Temperatura baixa reduz a variação. Ela não transforma o modelo numa função determinística.
Detalhes de como o provedor roda o modelo ainda podem mudar a saída.
Uma mudança mínima no prompt muda tudo o que vem depois.
E alguns provedores oferecem um parâmetro de seed, para tentar repetir o sorteio. Mesmo quando existe, a documentação costuma dizer que é melhor esforço. Então não monte um teste que depende de duas chamadas idênticas.
Uma pergunta para você. O extrator de CNPJ devolve pontos e barra numa execução, e só dígitos na outra. O time de dados quer temperatura zero. O que resolve o formato de verdade?
Um schema que pede uma string de quatorze dígitos, e validação no código antes de gravar o valor. Com temperatura zero, as três grafias continuam plausíveis, então nada no sorteio obriga os quatorze dígitos.
E escrever use sempre o mesmo formato, por favor, em maiúsculas, ajuda um pouco e não garante nada. O modelo ainda pode errar. É o seu código que se recusa a deixar o valor errado entrar. Esse é o trabalho da saída estruturada, não da temperatura.
Isso diz muito. Os modelos mais novos de vários provedores estão tirando esses botões. Nos modelos atuais da Anthropic, como o Claude Opus e o Sonnet 5.5, a API recusa qualquer temperatura diferente do padrão. Modelos mais antigos, como o Haiku 4.5, ainda aceitam.
O controle foi para outro lugar: o formato de saída, o esforço de raciocínio e o próprio prompt. E isso ensina algo útil. Mexer na amostragem nunca foi o jeito certo de garantir formato ou acerto. Os provedores só estão deixando isso explícito.
Então, se você migrar o extrator para um desses modelos e o time de dados entrar em pânico, a resposta é tranquila. Nada muda no contrato. O schema, a validação e o eval sempre foram o controle.
Agora, o lado do marketing. Na página tem um experimento, com um modelo que ainda aceita temperatura. Você gera cinco títulos com temperatura baixa e cinco com temperatura alta.
Compare a variedade entre os dois blocos. Depois, tente outro caminho.
Peça, numa única chamada, dez títulos diferentes entre si, com tons diferentes, para públicos diferentes. Variedade pedida no prompt costuma vencer variedade sorteada.
E aqui está a armadilha desse lado. Temperatura alta espalha os títulos, e espalha a qualidade junto. Um é certeiro, o seguinte é um slogan vazio. Leve ao extremo e você troca parecido por inútil. Dez opções numa chamada deixam você escolher com o seu critério, em vez de torcer para o sorteio acertar o tom.
Então, o que muda? Para extração, classificação e qualquer saída que o seu código lê, use saída estruturada mais validação. Não se apoie na temperatura.
Para criatividade, peça variedade explicitamente e gere várias opções numa chamada.
Para decisões importantes, pense onde a variação machuca. Um parecer de crédito com temperatura alta quer dizer que dois clientes parecidos podem receber respostas diferentes, sem motivo de negócio. Ali você quer menos variação, não mais. E rodar a mesma tarefa várias vezes e comparar é um padrão próprio, chamado voting.
E a variação está sempre lá. Se você roda o mesmo caso de teste três vezes e passa três, depois dois, depois três, isso é normal. O número que importa é a taxa em muitas execuções. Por isso todo sistema com modelo precisa de evals, e não de um teste que roda uma vez.
Então, de volta aos dois times. O marketing não precisava de um dado mais quente. Precisava pedir variedade. E o time de dados não precisava de um mais frio. Precisava de um schema e de uma checagem no código. A temperatura muda a largura do sorteio. Ela nunca garante o que sai.
Na próxima aula, vamos olhar o próprio prompt e tratá-lo como ele realmente é: uma interface, com contrato, versões e testes. Até lá.
Sampling and temperature
Amostragem e temperatura (Sampling and temperature) é um fundamento de engenharia de IA para quem trabalha com LLMs. De onde vem a variação nas respostas e quando você quer mais ou menos dela.
Um time de marketing pediu ao modelo dez sugestões de título para uma campanha e recebeu dez títulos quase iguais. No mesmo mês, o time de dados reclamou que a extração de CNPJ das notas devolvia o campo com formatos diferentes a cada execução. Os dois times pediram a mesma coisa ao engenheiro: “mexe na temperatura”.
Um queria mais variação. O outro queria menos. Para saber se a temperatura é o botão certo, você precisa entender de onde a variação vem.
A cada passo, o modelo calcula uma probabilidade para cada token possível. Amostragem é a regra que escolhe um token a partir dessas probabilidades.
flowchart LR
IN(["1. Contexto até aqui"]):::io --> P(["2. Probabilidades do próximo token"]):::llm
P --> A["3. Ajuste: temperatura, top_p"]:::tool
A --> S["4. Sorteio"]:::tool
S --> OUT(["5. Token escolhido"]):::io
Repare no passo 5: como cada token depende dos anteriores, uma escolha diferente no começo muda tudo que vem depois. Duas respostas podem divergir muito mesmo com variação pequena em cada passo. Foi o que o time de dados viu: 12.345.678/0001-90, 12345678000190 e 12.345.678/0001-90. são três caminhos a poucos tokens de distância.
| Parâmetro | O que faz | Valor baixo | Valor alto |
|---|---|---|---|
temperature |
Achata ou estica a distribuição | Quase sempre o token mais provável | Tokens menos prováveis ganham chance |
top_p |
Corta a cauda: só sorteia entre os tokens que somam p de probabilidade | Poucas opções | Muitas opções |
top_k |
Só sorteia entre os k tokens mais prováveis | Poucas opções | Muitas opções |
Temperatura baixa deixa o pico mais alto: o token líder fica ainda mais líder. Temperatura alta achata o gráfico: o segundo e o terceiro lugar ganham chance. top_p e top_k não esticam o gráfico; eles jogam fora a cauda e sorteiam só no que restou.
Mexer nos dois ao mesmo tempo deixa o efeito ilegível. Se você ainda usa esses botões, escolha um. Na prática, temperatura sozinha já basta para o experimento; o formato da saída resolve o resto.
Um exemplo concreto, ainda ilustrativo. No passo da categoria, o modelo atribui 0,80 a Eletrônicos, 0,15 a Áudio e o resto a dezenas de outras palavras. Com temperatura perto de zero, Eletrônicos sai quase sempre. Com temperatura alta, Áudio e até Informática aparecem. Nenhuma dessas escolhas produz 12.345.678/0001-90 no lugar de 14 dígitos: formato não mora nesse botão.
Temperatura baixa reduz a variação, mas não transforma o modelo numa função determinística. Detalhes de execução no servidor ainda podem mudar a saída, e uma mudança mínima no prompt muda tudo. Se o seu código precisa de formato fixo, a resposta é Saída Estruturada, não temperatura.
O CNPJ do time de dados é o exemplo clássico. Temperatura zero ainda pode devolver ponto, barra ou só dígitos, porque as três formas são plausíveis. O schema pede uma string de 14 dígitos. A validação no código rejeita o resto. Temperatura não faz esse trabalho.
Alguns provedores oferecem um parâmetro de semente (seed) para tentar repetir a amostragem. Mesmo quando existe, a documentação costuma tratar como melhor esforço, não como garantia. Não construa um teste que depende de duas chamadas idênticas.
Os modelos mais recentes de vários provedores estão tirando esses botões. Nos modelos atuais da Anthropic, como Claude Opus 5.5 e Claude Sonnet 5.5, a API rejeita temperature, top_p e top_k com valores fora do padrão. Modelos anteriores, como Claude Haiku 4.5, ainda aceitam. O controle passou para outros lugares: o formato da saída, o esforço de raciocínio e o próprio prompt.
Isso diz algo útil: ajustar amostragem nunca foi o jeito certo de garantir formato ou correção. Os provedores estão só tornando isso explícito.
Este experimento usa um modelo que ainda aceita temperature. Gere cinco títulos com temperatura baixa e cinco com temperatura alta.
import anthropic
client = anthropic.Anthropic()
for temperature in (0.0, 1.0):
print(f"--- temperature={temperature}")
for _ in range(5):
reply = client.messages.create(
model="claude-haiku-4-5",
max_tokens=60,
temperature=temperature,
messages=[{"role": "user", "content": "Um título curto para uma promoção de fones de ouvido."}],
)
print(next(b.text for b in reply.content if b.type == "text"))
Compare a variedade entre os dois blocos. Depois tente outro caminho para o time de marketing: peça “dez títulos diferentes entre si, em tons diferentes” numa chamada só. Diversidade pedida no prompt costuma funcionar melhor que diversidade sorteada.
A armadilha aqui é a inversa da extração. Temperatura alta espalha os títulos, e também espalha qualidade: um vira genial, o outro vira slogan vazio. Pedir dez opções numa chamada deixa você escolher com um critério seu (eval, regra, humano), em vez de torcer para o sorteio acertar o tom.
Responda as 6 perguntas para concluir a aula. Só assistir não conclui: a checagem é o que conta para a trilha e para o certificado.
Amostragem e temperatura (Sampling and temperature) é um fundamento de engenharia de IA para quem trabalha com LLMs. De onde vem a variação nas respostas e quando você quer mais ou menos dela.