Text Generation
A geração de texto é a forma como os modelos de linguagem escrevem: eles preveem um token de cada vez e escolhem cada token por decodificação gulosa, busca em feixe ou amostragem.
A geração de texto é a produção automática de linguagem escrita por um modelo, desde uma resposta de uma linha até um relatório ou programa completo. Atualmente, ela é feita sobretudo por grandes modelos de linguagem (LLMs) que operam de forma autorregressiva: dado um prompt, o modelo calcula uma probabilidade para cada token de seu vocabulário, escolhe um, acrescenta-o e repete o processo até decidir parar. O mesmo ciclo impulsiona assistentes de chat, preenchimento de código, tradução automática e resumo de texto. Sistemas anteriores preenchiam modelos predefinidos ou amostravam saídas de modelos de n-gramas e de redes neurais recorrentes, e o Transformer tornou práticas as saídas longas e coerentes, a partir do GPT-2 em 2019.
Como funciona a geração autorregressiva#
A tokenização converte o prompt em IDs de tokens, e o modelo processa todos eles em uma passagem paralela de pré-preenchimento, armazenando as chaves e os valores de atenção de cada token em um cache KV. Em cada etapa de decodificação, o modelo processa apenas o token mais recente, consulta o cache e produz logits, uma pontuação bruta por entrada do vocabulário, que uma softmax converte em probabilidades. Uma estratégia de decodificação escolhe o próximo token, que é transmitido ao usuário e acrescentado à sequência. A geração termina ao encontrar um token de fim de sequência, uma string de parada ou um limite de tokens; assim, o comprimento da saída é determinado durante a geração:
O pré-preenchimento exige muita computação e a decodificação é limitada pela largura de banda da memória, portanto os mecanismos de serviço agendam as duas etapas com cuidado, por exemplo, com pré-preenchimento em blocos. O streaming permite que as aplicações mostrem o texto à medida que ele aparece: a interface de LLM do Ultralytics encaminha stream=True para o SDK da OpenAI, para que uma aplicação YOLO26 possa exibir a descrição de uma cena detectada pelo modelo, token por token, à medida que cada evento response.output_text.delta chega.
Estratégias de decodificação#
A estratégia de decodificação molda a saída tanto quanto o próprio modelo. A decodificação gulosa sempre escolhe o token mais provável; é determinística, mas tende a se repetir. A busca em feixe mantém as k sequências parciais mais prováveis e retorna a melhor sequência completa, sendo adequada para tarefas com uma resposta correta, como a tradução. A amostragem extrai valores da distribuição, geralmente após remodelá-la: a temperatura divide os logits antes da softmax, a amostragem top-k mantém apenas os k tokens mais prováveis e a amostragem de núcleo (top-p), proposta em The Curious Case of Neural Text Degeneration por Holtzman et al. em 2019, mantém o menor conjunto de tokens cujas probabilidades somam p. Um vocabulário de cinco tokens em PyTorch mostra os dois efeitos:
import torch
# Next-token logits over a five-word vocabulary after the prompt "I took the"
vocab = ["bus", "train", "car", "stairs", "banana"]
logits = torch.tensor([3.0, 2.4, 1.8, 0.6, -2.0])
# Temperature divides the logits: low values sharpen the distribution, high values flatten it
for temperature in [0.5, 1.0, 1.5]:
probs = torch.softmax(logits / temperature, dim=-1)
print(f"T={temperature}:", ", ".join(f"{w} {p:.2f}" for w, p in zip(vocab, probs)))
# Top-p (nucleus) sampling keeps the smallest set of tokens whose probabilities reach p
probs, order = torch.softmax(logits, dim=-1).sort(descending=True)
keep = probs.cumsum(dim=-1) - probs < 0.9
print("Top-p 0.9 keeps:", [vocab[i] for i in order[keep]])
# Sample from the renormalized nucleus
torch.manual_seed(0)
picks = torch.multinomial(probs[keep] / probs[keep].sum(), num_samples=10, replacement=True)
print("Samples:", [vocab[order[i]] for i in picks])Com temperatura 0,5, "bus" recebe probabilidade 0,71; com 1,5, cai para 0,42 e "banana" sobe de 0,00 para 0,02. O top-p 0,9 mantém "bus", "train" e "car", que juntos somam 0,95 de probabilidade, portanto "stairs" e "banana" nunca podem ser amostrados; dez extrações produzem uma mistura variada dos três tokens restantes. Outros controles atuam sobre os mesmos logits: penalidades por repetição reduzem as pontuações dos tokens já usados, e a decodificação restrita mascara todos os tokens que violariam uma gramática ou um esquema JSON, permitindo que as APIs garantam saídas estruturadas. A decodificação especulativa acelera a geração ao permitir que um modelo preliminar pequeno proponha vários tokens que o modelo grande verifica em uma única passagem.
Geração de texto e termos relacionados#
- Modelagem de linguagem: Aprendizado da probabilidade do próximo token, o objetivo de treinamento que possibilita a geração. A geração é o uso desse modelo no momento da inferência.
- Modelos sequência a sequência: Modelos codificador-decodificador que geram um texto de saída a partir de uma entrada separada, como na tradução. LLMs somente com decodificador realizam as mesmas tarefas continuando um prompt.
- Modelos de linguagem por difusão: Geram uma passagem inteira refinando todas as posições em paralelo ao longo de várias etapas de remoção de ruído, em vez de um token por vez.
- Texto para imagem: Recebe texto como entrada e produz pixels.
Qualidade e riscos#
O texto gerado é fluente, esteja ou não correto; por isso, as alucinações são o principal risco em tarefas factuais, e a geração aumentada por recuperação (RAG) as reduz ao inserir documentos de origem no prompt. Temperaturas baixas tornam as respostas mais repetíveis, enquanto temperaturas altas aumentam a variedade e também a chance de escolher um token improvável e errado. Também é difícil identificar textos escritos por máquinas, o que impulsiona pesquisas sobre marcas-d'água de IA. No artigo sobre GPT-3 de 2020, as pessoas que tentaram distinguir artigos de notícias de 200 palavras escritos pelo modelo de 175 bilhões de parâmetros daqueles escritos por humanos acertaram apenas 52% das vezes.










