0Pricing
AI Prompt Engineering · Aula

Como a IA gera respostas

Predição de tokens, probabilidade e por que a IA não “pensa” como os seres humanos.

Como a IA gera respostas é uma aula grátis de AI Prompt Engineering no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Prompt Engineering, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Prompt Engineering inclui 4 aulas no total.

Texto como um problema de probabilidade

Em sua essência, um modelo de linguagem faz uma única coisa: prevê o próximo token com base em todos os tokens anteriores.

Um token é uma pequena unidade de texto — aproximadamente uma palavra ou um fragmento de palavra. O modelo atribui uma probabilidade a cada token do seu vocabulário e escolhe um. Em seguida, repete o processo, token por token, até gerar uma resposta completa.

O que é um token

Os tokens são os átomos do processamento de texto por LLM. Em inglês, a tokenização funciona aproximadamente assim:

  • Palavras comuns → 1 token cada (the, run)
  • Palavras menos comuns → divididas em 2 ou 3 tokens (running → run + ning)
  • Sinais de pontuação e espaços → geralmente são tokens próprios

Modelos como o GPT-4o e o Claude usam tokenizadores que lidam com mais de 100 mil entradas de vocabulário, incluindo subpalavras de muitos idiomas.

import tiktoken

encoding = tiktoken.encoding_for_model('gpt-4o')

sentence = 'The temperature parameter controls randomness in token selection.'
tokens = encoding.encode(sentence)
token_strings = [encoding.decode([t]) for t in tokens]

print(f'Sentence: {sentence}')
print(f'Token count: {len(tokens)}')
print(f'Tokens: {token_strings}')

Geração autorregressiva

A geração é autorregressiva: cada novo token é adicionado à entrada antes da previsão do próximo.

Assim, ao gerar “The sky is blue”, o modelo:

  • Vê “The” → prevê “sky”
  • Vê “The sky” → prevê “is”
  • Vê “The sky is” → prevê “blue”
  • Vê “The sky is blue” → prevê o fim da sequência

É por isso que a geração fica mais lenta em saídas muito longas — cada token exige uma passagem completa para frente.

# Simulated autoregressive token-by-token output via streaming
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

stream = client.chat.completions.create(
    model='gpt-4o',
    stream=True,     # receive tokens as they are generated
    messages=[{'role': 'user', 'content': 'Name five planets in our solar system.'}]
)

print('Tokens arriving one by one:')
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end='', flush=True)
print()  # newline at end

Temperatura: controle da aleatoriedade

Temperatura é um número entre 0 e 2 que ajusta a distribuição de probabilidades antes da amostragem:

  • Temperatura 0: sempre escolher o token mais provável — determinístico e repetitivo
  • Temperatura 1: fazer a amostragem de acordo com as probabilidades originais — equilibrado
  • Temperatura 2: achatar as probabilidades — muito aleatório e às vezes incoerente

Use uma temperatura baixa para tarefas factuais e uma temperatura mais alta para trabalhos criativos.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

prompt = 'Continue this sentence with one word: The ocean is'

for temp in [0.0, 0.7, 1.5]:
    response = client.chat.completions.create(
        model='gpt-4o',
        temperature=temp,
        max_tokens=5,
        messages=[{'role': 'user', 'content': prompt}]
    )
    word = response.choices[0].message.content.strip()
    print(f'Temperature {temp}: "{word}"')

Por que as respostas variam entre execuções

Mesmo com a mesma instrução, duas execuções do mesmo modelo podem produzir saídas diferentes. Isso acontece porque:

  • A amostragem é probabilística — o modelo extrai valores de uma distribuição, não de uma tabela de consulta
  • Pequenas diferenças numéricas na aritmética de ponto flutuante podem se acumular
  • O paralelismo do hardware introduz não determinismo

Defina temperature=0 e seed (se houver suporte) para maximizar a reprodutibilidade.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

prompt = 'Give me a one-word color that feels calm.'

for run in range(3):
    response = client.chat.completions.create(
        model='gpt-4o',
        temperature=1.0,   # randomness ON
        max_tokens=5,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print(f'Run {run + 1}: {response.choices[0].message.content.strip()}')

# For reproducible outputs use seed + temperature=0
response = client.chat.completions.create(
    model='gpt-4o',
    temperature=0,
    seed=42,
    max_tokens=5,
    messages=[{'role': 'user', 'content': prompt}]
)
print(f'Deterministic: {response.choices[0].message.content.strip()}')

Amostragem Top-p

Top-p (amostragem por núcleo) é outra forma de controlar a aleatoriedade. Em vez de ajustar todas as probabilidades, ela restringe a amostragem ao menor conjunto de tokens cuja probabilidade acumulada ultrapassa p.

  • top_p=0.1: apenas os tokens no topo (conservador)
  • top_p=0.9: conjunto mais amplo (criativo)
  • top_p=1.0: todos os tokens (distribuição completa)

Na prática, a maioria das equipes ajusta a temperatura e mantém top-p em 1.0.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Conservative generation: top_p=0.1 restricts to high-confidence tokens
response_conservative = client.chat.completions.create(
    model='gpt-4o',
    top_p=0.1,
    max_tokens=30,
    messages=[{'role': 'user', 'content': 'What is the capital of Japan?'}]
)

# Creative generation: top_p=0.95 allows broader token pool
response_creative = client.chat.completions.create(
    model='gpt-4o',
    top_p=0.95,
    max_tokens=30,
    messages=[{'role': 'user', 'content': 'Write a poetic one-liner about the moon.'}]
)

print('Conservative:', response_conservative.choices[0].message.content)
print('Creative:    ', response_creative.choices[0].message.content)

Nenhuma compreensão verdadeira — correspondência de padrões

Os LLMs não compreendem a linguagem da mesma forma que os seres humanos. Eles são sistemas extremamente sofisticados de correspondência de padrões, treinados com enormes corpora de textos.

Quando o modelo responde a 'O que é fotossíntese?', ele não recupera um fato armazenado — ele gera a sequência de tokens que, estatisticamente, segue o padrão da pergunta, com base nos milhões de documentos semelhantes que viu durante o treinamento.

# Demonstration: the model can produce plausible-sounding but wrong answers
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# Asking about something nonsensical — model may still try to answer
response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=128,
    messages=[{
        'role': 'user',
        'content': (
            'What is the boiling point of happiness in degrees Celsius? '
            'Please just say "I cannot answer this" if the question makes no sense.'
        )
    }]
)
print(response.content[0].text)

Treinamento versus inferência

O 'conhecimento' do modelo foi congelado durante o treinamento com um grande corpus de textos. Na inferência (quando você envia um prompt), o modelo gera texto com base nesse conhecimento congelado — ele não está aprendendo nem pesquisando na internet.

Isso significa que ele não pode conhecer eventos ocorridos após a data de corte do treinamento, não pode acessar URLs e não pode verificar se um fato mudou desde o treinamento.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# Asking the model about its own knowledge cutoff
response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=128,
    messages=[{
        'role': 'user',
        'content': (
            'What is your knowledge cutoff date? '
            'And can you access the internet right now to look up today\'s news?'
        )
    }]
)
print(response.content[0].text)

O que acontece durante uma passagem direta

Em alto nível, cada previsão de token envolve:

  1. Converter todos os tokens de entrada em representações numéricas
  2. Passá-los por muitas camadas transformadoras (atenção + alimentação direta)
  3. Produzir uma distribuição de probabilidade sobre todo o vocabulário
  4. Selecionar um token dessa distribuição por amostragem

Os modelos modernos têm bilhões de parâmetros que moldam essa transformação — todos aprendidos durante o treinamento a partir de textos humanos.

# You can inspect logprobs (token probabilities) to see the model's confidence
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    max_tokens=5,
    logprobs=True,
    top_logprobs=3,
    messages=[{'role': 'user', 'content': 'The opposite of hot is'}]
)

for token_info in response.choices[0].logprobs.content:
    print(f'Chosen token: "{token_info.token}"')
    for alt in token_info.top_logprobs:
        import math
        prob = round(math.exp(alt.logprob) * 100, 1)
        print(f'  Option "{alt.token}": {prob}% probability')

Sequências de parada

As sequências de parada informam ao modelo que ele deve interromper a geração quando produzir uma sequência específica. Isso é útil para:

  • Impedir que o modelo gere mais de uma resposta em uma lista
  • Parar em um delimitador como ### ou ---END---
  • Impor saídas de uma única linha

Sem sequências de parada, o modelo gera texto até atingir max_tokens ou prever um token de fim de sequência.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Stop after the first item in a numbered list
response = client.chat.completions.create(
    model='gpt-4o',
    max_tokens=64,
    stop=['2.'],   # halt as soon as '2.' appears
    messages=[{
        'role': 'user',
        'content': 'List 5 programming languages, numbered 1 through 5.'
    }]
)
print(response.choices[0].message.content)
print('Stop reason:', response.choices[0].finish_reason)

Implicações práticas para quem escreve prompts

Compreender os mecanismos de geração ajuda a escrever prompts melhores:

  • Use temperatura 0 para tarefas que exigem saídas consistentes e factuais
  • Use temperatura de 0,7 a 1,0 para escrita criativa
  • Verifique os fatos — o modelo gera texto plausível, não uma verdade garantida
  • Use sequências de parada para controlar precisamente o tamanho da saída
  • Prompts curtos → saídas mais criativas, mas menos controladas
  • Prompts detalhados → saídas mais restritas e focadas
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# Low temperature for factual classification
fact_response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=8,
    temperature=0,   # deterministic
    messages=[{'role': 'user', 'content': 'Is Paris the capital of France? Answer YES or NO only.'}]
)
print('Factual (temp=0):', fact_response.content[0].text.strip())

# Higher temperature for creative tasks
creative_response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=64,
    temperature=1.0,
    messages=[{'role': 'user', 'content': 'Write a surprising one-line poem about code.'}]
)
print('Creative (temp=1):', creative_response.content[0].text.strip())

Verificação de conhecimentos

Você aprendeu como os LLMs geram texto token por token. Vamos verificar sua compreensão da temperatura.

Um desenvolvedor está criando um chatbot de suporte ao cliente que precisa fornecer respostas consistentes e precisas a perguntas sobre cobrança. Qual configuração de temperatura é mais adequada?

Como a IA gera respostas — revisão

Agora você compreende os mecanismos por trás de cada resposta de IA:

  • Os modelos preveem o próximo token um de cada vez — geração autorregressiva
  • A temperatura controla quanta aleatoriedade é introduzida na seleção de tokens
  • Top-p restringe a amostragem a um núcleo de tokens com alta probabilidade
  • O modelo não compreende — ele identifica padrões em uma escala gigantesca
  • O conhecimento fica congelado no treinamento — sem dados em tempo real e sem acesso à internet
  • As sequências de parada permitem controlar exatamente onde a saída termina

Perguntas Frequentes

A aula “Como a IA gera respostas” é grátis?

Sim — o texto completo de “Como a IA gera respostas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Prompt Engineering, atualize para CoddyKit PRO. O curso de AI Prompt Engineering inclui 4 aulas no total.

O que vou aprender em “Como a IA gera respostas”?

Predição de tokens, probabilidade e por que a IA não “pensa” como os seres humanos. Você pratica AI Prompt Engineering com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar AI Prompt Engineering?

Nenhuma experiência prévia é necessária. AI Prompt Engineering no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Como a IA gera respostas”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de AI Prompt Engineering?

Sim. Cada aula de AI Prompt Engineering inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Entendendo a interface de conversa
  2. Tipos de solicitações que a IA pode atender
  3. Como a IA gera respostas
  4. O que a IA não pode fazer
← Voltar para AI Prompt Engineering