Prompt Engineering
A engenharia de prompts concebe as instruções, o contexto e os exemplos fornecidos a um modelo de IA para orientar a sua saída sem retreino, desde LLMs até visão.
A engenharia de prompts é a prática de conceber a entrada dada a um modelo generativo, incluindo instruções, contexto, exemplos e o formato de saída solicitado, para orientar o que o modelo produz sem alterar os seus pesos do modelo. Ganhou popularidade com o GPT-3: em Language Models are Few-Shot Learners (2020), a OpenAI mostrou que um modelo com 175 mil milhões de parâmetros podia executar novas tarefas sem atualizações de gradiente quando o prompt descrevia a tarefa e incluía alguns exemplos, uma capacidade a que o artigo chama aprendizagem em contexto. Atualmente, o prompt é a principal forma de controlar modelos de linguagem de grande porte (LLMs), modelos visão-linguagem (VLMs), geradores de texto para imagem e modelos de visão condicionáveis por prompts.
Técnicas principais#
- Instruções e funções: Um prompt de sistema define a função, as regras e o público-alvo do modelo, e delimitadores como cabeçalhos ou etiquetas ao estilo XML separam as instruções dos dados que estão a ser processados.
- Exemplos few-shot: Pares de entrada e saída resolvidos mostram a tarefa e o formato da resposta com mais precisão do que uma descrição. Um prompt sem exemplos é zero-shot.
- Formato de saída: O prompt indica o formato, como uma lista ou JSON com determinadas chaves. Quando o código tem de analisar o resultado, as saídas estruturadas impõem um esquema durante a descodificação, em vez de dependerem do pedido.
- Prompts de cadeia de pensamento: Pedir etapas intermédias de raciocínio antes da resposta, o que aumenta a precisão em problemas com várias etapas.
- Encadeamento de prompts: Dividir uma tarefa complexa em vários prompts, cada um com uma tarefa específica e limitada, ligados por código.
- Contexto recuperado: Inserir documentos ou dados encontrados por pesquisa para que o modelo responda com base nos factos fornecidos, em vez de recorrer à memória.
Os factos fornecidos reduzem as alucinações, e a sua posição é importante: o estudo Lost in the Middle concluiu que os modelos utilizam melhor a informação quando esta aparece no início ou no fim de uma janela de contexto longa, e pior quando fica enterrada no meio.
O efeito dos exemplos é mais fácil de observar num modelo base que nunca foi ajustado por instruções. Este excerto fornece ao GPT-2, carregado com Transformers da Hugging Face, a mesma instrução com e sem três exemplos:
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
# The same instruction, without and with three worked examples that show the answer format
instruction = "Convert each country to its capital city.\n"
prompts = {
"zero-shot": instruction + "Italy:",
"few-shot": instruction + "France: Paris\nJapan: Tokyo\nCanada: Ottawa\nItaly:",
}
for name, prompt in prompts.items():
inputs = tokenizer(prompt, return_tensors="pt")
output = model.generate(**inputs, max_new_tokens=4, do_sample=False, pad_token_id=tokenizer.eos_token_id)
completion = tokenizer.decode(output[0, inputs.input_ids.shape[1] :])
print(f"{name}: {completion!r}")Apresenta zero-shot: '\n\nItaly is' e few-shot: ' Rome\nSpain:'. A instrução, por si só, levou o GPT-2 a escrever prosa sobre Itália, enquanto os três exemplos o levaram a responder "Roma" no formato esperado e a continuar o padrão com o país seguinte.
A conceção de prompts é empírica#
Pequenas alterações na formulação ou na disposição podem mudar bastante os resultados. Melanie Sclar e colegas mediram diferenças de precisão de até 76 pontos no LLaMA-2-13B apenas com alterações de formatação, como separadores, uso de maiúsculas e espaçamento, e a sensibilidade manteve-se com modelos maiores, mais exemplos e ajuste por instruções. Por isso, os prompts são desenvolvidos como código: testados com um conjunto fixo de entradas e saídas corretas conhecidas, revistos com base nas falhas e sujeitos a controlo de versões, como parte habitual do LLMOps.
É possível automatizar o ciclo. O Automatic Prompt Engineer (APE), de Yongchao Zhou e colegas, utiliza um LLM para propor instruções candidatas e conserva as que obtêm melhor pontuação nos exemplos; em 19 das 24 tarefas, as instruções igualaram ou superaram as escritas por pessoas em Large Language Models Are Human-Level Prompt Engineers.
Prompts para modelos de visão#
Em visão computacional, os prompts assumem várias formas. Geradores de texto para imagem, como Stable Diffusion, respondem a descrições do tema, estilo, iluminação e composição, além de prompts negativos que indicam o que evitar. Modelos de segmentação condicionados por prompts aceitam prompts visuais, como pontos e caixas, e o SAM 3 da Meta também aceita frases nominais curtas e segmenta cada instância do conceito especificado, recurso que a Ultralytics Platform usa para a anotação automática guiada por texto.
Os detetores de vocabulário aberto transformam nomes de classes em prompts. O Ultralytics YOLOE deteta e segmenta as classes indicadas por set_classes(), como "empilhadora" ou "autocarro de dois andares", comparando as características das regiões com os embeddings de texto desses nomes, pelo que a formulação altera diretamente o que encontra. Como a correspondência se baseia na aparência, os prompts que dependem do estado, da posição ou de uma comparação, como "danificado", "mais à esquerda" ou "o que está a ser transportado", não têm uma referência visual fiável, e os nomes próximos das categorias do dia a dia funcionam melhor.
Engenharia de prompts vs. termos relacionados#
- Ajuste de prompts: Aprende vetores contínuos de prompt por descida do gradiente em dados etiquetados. A engenharia de prompts consiste em escrever o prompt manualmente, em linguagem natural.
- Ajuste fino: Altera os pesos do modelo através do treino com um conjunto de dados etiquetado. A engenharia de prompts não altera o modelo e é aplicada no momento da inferência.
- Engenharia de contexto: Abrange tudo o que entra no contexto do modelo numa aplicação, incluindo documentos recuperados, resultados de ferramentas e memória. A engenharia de prompts é a parte que se ocupa da redação das instruções e dos exemplos.
- Injeção de prompts: Um ataque que oculta instruções no texto ou nas imagens que o modelo lê, para que estas se sobreponham ao prompt do programador.










