For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal

Engenharia de prompt

Melhore os resultados com estratégias de engenharia de prompt.

Com a API da OpenAI, você pode usar um modelo de linguagem de grande porte para gerar texto a partir de um prompt, assim como faria no ChatGPT. Os modelos podem gerar quase qualquer tipo de resposta em texto, como código, equações matemáticas, dados estruturados em JSON ou textos semelhantes aos escritos por pessoas.

Veja um exemplo simples usando a Responses API.

Gere texto a partir de um prompt simples
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-6-astra",
  input: "Write a one-sentence bedtime story about a unicorn.",
});

console.log(response.output_text);

A propriedade output da resposta contém um array com o conteúdo gerado pelo modelo. Neste exemplo simples, temos apenas uma saída, com este formato:

[
  {
    "id": "msg_67b73f697ba4819183a15cc17d011509",
    "type": "message",
    "role": "assistant",
    "content": [
      {
        "type": "output_text",
        "text": "Under the soft glow of the moon, Luna the unicorn danced through fields of twinkling stardust, leaving trails of dreams for every child asleep.",
        "annotations": []
      }
    ]
  }
]

O array output costuma ter mais de um item! Ele pode conter chamadas de ferramentas, dados sobre tokens de raciocínio gerados por modelos de raciocínio e outros itens. Não é seguro presumir que a saída de texto do modelo esteja em output[0].content[0].text.

Alguns dos nossos SDKs oficiais incluem, por conveniência, uma propriedade output_text nas respostas do modelo, que reúne todas as saídas de texto em uma única string. Ela pode ser útil como um atalho para acessar a saída de texto do modelo.

Além de texto simples, você também pode fazer o modelo retornar dados estruturados em formato JSON. Esse recurso se chama Saídas estruturadas.

Escolha de um modelo

Uma decisão importante ao gerar conteúdo pela API é qual modelo usar, definido pelo parâmetro model nos exemplos de código acima. Você encontra aqui a lista completa de modelos disponíveis. Veja alguns fatores a considerar ao escolher um modelo para geração de texto.

  • Modelos de raciocínio geram uma cadeia de pensamento interna para analisar o prompt de entrada e se destacam na compreensão de tarefas complexas e no planejamento de várias etapas. Em geral, também são mais lentos e mais caros de usar do que os modelos GPT.
  • Modelos GPT são rápidos, econômicos e altamente inteligentes, mas se beneficiam de instruções mais explícitas sobre como realizar as tarefas.
  • Modelos grandes e pequenos (mini ou nano) oferecem diferentes combinações de velocidade, custo e inteligência. Os modelos grandes são mais eficazes na compreensão de prompts e na resolução de problemas em diversas áreas, enquanto os modelos pequenos geralmente são mais rápidos e mais baratos de usar.

Em caso de dúvida, gpt-6-astra é uma boa escolha padrão para geração de texto de uso geral e refinamento de prompts.

Engenharia de prompt

Engenharia de prompt é o processo de escrever instruções eficazes para um modelo, de modo que ele gere, de forma consistente, conteúdo que atenda aos seus requisitos.

Como o conteúdo gerado por um modelo não é determinístico, criar prompts para obter a saída desejada é uma mistura de arte e ciência. Ainda assim, você pode aplicar técnicas e práticas recomendadas para obter bons resultados de forma consistente.

Algumas técnicas de engenharia de prompt funcionam com qualquer modelo, como o uso de papéis de mensagem. Porém, diferentes tipos de modelo, como os de raciocínio e os GPT, podem precisar de abordagens diferentes na criação de prompts para produzir os melhores resultados. Até mesmo snapshots diferentes de modelos da mesma família podem produzir resultados distintos. Por isso, à medida que você desenvolve aplicativos mais complexos, recomendamos fortemente:

  • Fixar snapshots específicos de modelos (como gpt-4.1-2025-04-14, por exemplo) nos seus aplicativos em produção para garantir um comportamento consistente
  • Criar testes e suítes de avaliação que meçam o comportamento dos prompts para acompanhar o desempenho à medida que você os refina ou quando troca ou atualiza as versões dos modelos

Agora, vamos examinar algumas ferramentas e técnicas disponíveis para criar prompts.

Papéis de mensagem e cumprimento de instruções

Você pode fornecer instruções ao modelo com diferentes níveis de autoridade usando o parâmetro instructions da API ou papéis de mensagem.

O parâmetro instructions fornece ao modelo instruções gerais sobre como ele deve se comportar ao gerar uma resposta, incluindo tom, objetivos e exemplos de respostas corretas. As instruções fornecidas dessa forma terão prioridade sobre um prompt no parâmetro input.

Gere texto com instruções
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-6-astra",
  reasoning: { effort: "low" },
  instructions: "Talk like a pirate.",
  input: "Are semicolons optional in JavaScript?",
});

console.log(response.output_text);

O exemplo acima é aproximadamente equivalente a usar as seguintes mensagens de entrada no array input:

Gere texto com mensagens de diferentes papéis
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-6-astra",
  reasoning: { effort: "low" },
  input: [
    {
      role: "developer",
      content: "Talk like a pirate.",
    },
    {
      role: "user",
      content: "Are semicolons optional in JavaScript?",
    },
  ],
});

console.log(response.output_text);

Observe que o parâmetro instructions se aplica apenas à solicitação atual de geração de resposta. Se você estiver gerenciando o estado da conversa com o parâmetro previous_response_id, as instruções de instructions usadas nas interações anteriores não estarão presentes no contexto.

A especificação do modelo da OpenAI descreve como nossos modelos atribuem diferentes níveis de prioridade a mensagens com papéis diferentes.

developeruserassistant
Mensagens developer são instruções fornecidas pelo desenvolvedor do aplicativo e têm prioridade sobre mensagens user.Mensagens user são instruções fornecidas por um usuário final e têm prioridade inferior à das mensagens developer.As mensagens geradas pelo modelo têm o papel assistant.

Uma conversa com várias interações pode conter diversas mensagens desses tipos, além de outros tipos de conteúdo fornecidos tanto por você quanto pelo modelo. Saiba mais sobre como gerenciar o estado da conversa aqui.

Você pode pensar nas mensagens developer e user como uma função e seus argumentos em uma linguagem de programação.

  • Mensagens developer fornecem as regras e a lógica de negócio do sistema, como a definição de uma função.
  • Mensagens user fornecem entradas e configurações às quais se aplicam as instruções da mensagem developer, como argumentos de uma função.

Versione prompts no código

Armazene os prompts de produção no código do seu aplicativo em vez de criar objetos de prompt reutilizáveis. Gerenciar prompts no código permite usar entradas tipadas, revisão de código, testes e seu processo habitual de implantação para alterar o comportamento do modelo.

A OpenAI está descontinuando os objetos de prompt reutilizáveis na API. A criação de prompts passará a ter menos destaque a partir de 3 de junho de 2026, e o encerramento de v1/prompts está previsto para 30 de novembro de 2026. Consulte a página de descontinuações para ver o cronograma atual.

Para novos trabalhos de engenharia de prompt:

  • Mantenha os construtores de prompts em um módulo pequeno, próximo à funcionalidade que atendem.
  • Use argumentos de função tipados ou esquemas para valores dinâmicos, como dados de clientes, arquivos ou opções de tarefas.
  • Passe os valores gerados de instructions e input diretamente para a Responses API.
  • Adicione dados de teste representativos, testes e verificações de avaliação antes de alterar os prompts de produção.
  • Disponibilize as alterações nos prompts pelo seu sistema de implantação, usando sinalizadores de funcionalidade ou configurações quando precisar de lançamentos em etapas.

Se sua integração já chama um prompt salvo usando um ID ou uma versão de prompt, use o guia de migração de objetos de prompt para mover esse prompt para o código.

Formatação de mensagens com Markdown e XML

Ao escrever mensagens developer e user, você pode ajudar o modelo a entender os limites lógicos do prompt e dos dados de contexto combinando a formatação Markdown com tags XML.

Títulos e listas em Markdown podem ajudar a delimitar as diferentes seções de um prompt e a comunicar a hierarquia ao modelo. Também podem facilitar a leitura dos prompts durante o desenvolvimento. Tags XML podem ajudar a delimitar onde um conteúdo começa e termina, como um documento de apoio usado como referência. Atributos XML também podem definir metadados sobre o conteúdo do prompt que suas instruções podem referenciar.

Em geral, uma mensagem do desenvolvedor contém as seções a seguir, normalmente nesta ordem (embora o conteúdo e a ordem ideais possam variar conforme o modelo usado):

  • Identidade: Descreva a finalidade, o estilo de comunicação e os objetivos gerais do assistente.
  • Instruções: Oriente o modelo sobre como gerar a resposta desejada. Quais regras ele deve seguir? O que o modelo deve fazer e o que nunca deve fazer? Esta seção pode conter várias subseções relevantes para seu caso de uso, como orientações sobre como o modelo deve chamar funções personalizadas.
  • Exemplos: Forneça exemplos de entradas possíveis, acompanhados da saída desejada do modelo.
  • Contexto: Forneça ao modelo as informações adicionais de que ele possa precisar para gerar uma resposta, como dados privados ou proprietários que não façam parte dos dados de treinamento, ou quaisquer outros dados que você saiba serem especialmente relevantes. Em geral, é melhor posicionar esse conteúdo perto do fim do prompt, pois você pode incluir contextos diferentes em cada solicitação de geração.

Veja abaixo um exemplo de como usar Markdown e tags XML para criar uma mensagem developer com seções distintas e exemplos de apoio.

Uma mensagem do desenvolvedor para geração de código
# Identity

You are coding assistant that helps enforce the use of snake case
variables in JavaScript code, and writing code that will run in
Internet Explorer version 6.

# Instructions

* When defining variables, use snake case names (e.g. my_variable)
  instead of camel case names (e.g. myVariable).
* To support old browsers, declare variables using the older
  "var" keyword.
* Do not give responses with Markdown formatting, just return
  the code as requested.

# Examples

<user_query>
How do I declare a string variable for a first name?
</user_query>

<assistant_response>
var first_name = "Anna";
</assistant_response>

Reduza custos e latência com o cache de prompts

Ao criar uma mensagem, procure manter o conteúdo que você pretende reutilizar nas requisições à API no início do prompt e entre os primeiros parâmetros da API enviados no corpo JSON da requisição a Chat Completions ou Responses. Isso permite maximizar a redução de custos e latência proporcionada pelo cache de prompts.

Aprendizado few-shot

O aprendizado few-shot permite orientar um modelo de linguagem grande para uma nova tarefa incluindo alguns exemplos de entrada e saída no prompt, em vez de realizar o ajuste fino do modelo. O modelo assimila implicitamente o padrão desses exemplos e o aplica a um prompt. Ao fornecer exemplos, procure apresentar entradas variadas com as saídas desejadas.

Normalmente, você fornece exemplos como parte de uma mensagem developer na requisição à API. Veja uma mensagem developer com exemplos que mostram ao modelo como classificar avaliações de atendimento ao cliente como positivas ou negativas.

# Identity

You are a helpful assistant that labels short product reviews as
Positive, Negative, or Neutral.

# Instructions

* Only output a single word in your response with no additional formatting
  or commentary.
* Your response should only be one of the words "Positive", "Negative", or
  "Neutral" depending on the sentiment of the product review you are given.

# Examples

<product_review id="example-1">
I absolutely love this headphones — sound quality is amazing!
</product_review>

<assistant_response id="example-1">
Positive
</assistant_response>

<product_review id="example-2">
Battery life is okay, but the ear pads feel cheap.
</product_review>

<assistant_response id="example-2">
Neutral
</assistant_response>

<product_review id="example-3">
Terrible customer service, I'll never buy from them again.
</product_review>

<assistant_response id="example-3">
Negative
</assistant_response>

Inclua informações de contexto relevantes

Muitas vezes, é útil incluir no prompt informações de contexto adicionais que o modelo possa usar para gerar uma resposta. Alguns motivos comuns para fazer isso são:

  • Dar ao modelo acesso a dados proprietários ou a quaisquer outros dados que não façam parte do conjunto usado em seu treinamento.
  • Restringir a resposta do modelo a um conjunto específico de recursos que você identificou como os mais úteis.

A técnica de adicionar contexto relevante à solicitação de geração do modelo às vezes é chamada de geração aumentada por recuperação (RAG). Você pode adicionar contexto ao prompt de várias maneiras, como consultar um banco de dados vetorial e incluir o texto retornado no prompt, ou usar a ferramenta integrada de pesquisa de arquivos da OpenAI para gerar conteúdo com base em documentos enviados.

Planeje o uso da janela de contexto

Os modelos só conseguem processar uma quantidade limitada de dados no contexto que consideram durante uma solicitação de geração. Esse limite de memória é chamado de janela de contexto e é definido em tokens (fragmentos dos dados que você fornece, de texto a imagens).

Os modelos têm janelas de contexto de tamanhos diferentes, que vão de pouco mais de 100 mil tokens até um milhão de tokens nos modelos GPT-4.1 mais recentes. Consulte a documentação dos modelos para saber o tamanho específico da janela de contexto de cada modelo.

Criação de prompts para os modelos atuais

Modelos GPT como gpt-6-astra se beneficiam de instruções precisas que forneçam explicitamente, no prompt, a lógica e os dados necessários para concluir a tarefa. Para aproveitar ao máximo o modelo mais recente, comece pelo guia atual de criação de prompts.

GPT-6 Astra prompting guide

Aproveite ao máximo a criação de prompts para o modelo mais recente com orientações atualizadas, exemplos práticos e notas de migração.

Práticas recomendadas de criação de prompts para o modelo mais recente

Para uma abordagem completa e atualizada, consulte as práticas recomendadas de criação de prompts para o modelo mais recente. Os lembretes práticos abaixo continuam válidos.

Criação de prompts para modelos de raciocínio

Há algumas diferenças a considerar ao criar prompts para um modelo de raciocínio em comparação com um modelo GPT. Em geral, os modelos de raciocínio apresentam melhores resultados em tarefas com apenas orientações gerais. Já os modelos GPT se beneficiam de instruções muito precisas.

Você pode pensar na diferença entre modelos de raciocínio e modelos GPT da seguinte forma.

  • Um modelo de raciocínio é como um colega de trabalho sênior. Você pode definir um objetivo e confiar que ele encontrará a melhor forma de alcançá-lo.
  • Um modelo GPT é como um colega de trabalho júnior. Ele terá um desempenho melhor com instruções explícitas para produzir um resultado específico.

Para saber mais sobre as práticas recomendadas ao usar modelos de raciocínio, consulte este guia.

Próximos passos

Agora que você conhece os conceitos básicos de entradas e saídas de texto, pode explorar um destes recursos.

Crie um prompt no Playground

Use o Playground para desenvolver e aprimorar prompts.

Gere dados JSON com saídas estruturadas

Garanta que os dados JSON gerados por um modelo estejam em conformidade com um esquema JSON.

Referência completa da API

Confira todas as opções de geração de texto na referência da API.

Outros recursos

Para mais inspiração, acesse o OpenAI Cookbook, que contém exemplos de código e links para recursos de terceiros, como: