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
Theme

Engenharia de prompt

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

Com a API da OpenAI, você pode usar um grande modelo de linguagem para gerar texto a partir de um prompt, como faria no ChatGPT. Os modelos podem gerar praticamente qualquer tipo de resposta em texto, como código, equações matemáticas, dados estruturados em JSON ou textos que soam como se tivessem sido escritos por uma pessoa.

Veja um exemplo simples com a API Responses.

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, o array tem apenas um item:

[
  {
    "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 os tokens de raciocínio gerados por modelos de raciocínio e outros itens. Não é seguro presumir que o texto gerado pelo modelo esteja em output[0].content[0].text.

Para facilitar o acesso ao texto, alguns dos nossos SDKs oficiais incluem nas respostas do modelo a propriedade output_text, que reúne todas as saídas de texto em uma única string. Você pode usar essa propriedade como atalho para acessar o texto gerado pelo modelo.

Além de texto simples, o modelo também pode retornar dados estruturados no formato JSON. Esse recurso se chama saídas estruturadas.

Como escolher um modelo

Ao gerar conteúdo pela API, uma das principais decisões é qual modelo usar. Nos exemplos de código acima, você faz essa escolha com o parâmetro model. Consulte a lista completa de modelos disponíveis. Considere os seguintes fatores 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. Eles se destacam na compreensão de tarefas complexas e no planejamento em várias etapas. Em geral, também são mais lentos e custam mais que os modelos GPT.
  • Modelos GPT são rápidos, têm boa relação custo-benefício e são altamente inteligentes, mas produzem resultados melhores quando recebem 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 interpretação de prompts e na resolução de problemas em diversas áreas. Os pequenos geralmente são mais rápidos e baratos.

Na dúvida, gpt-6-astra é uma boa escolha para gerar textos de uso geral e refinar prompts.

Engenharia de prompt

Engenharia de prompt é a prática de escrever instruções eficazes para que um modelo gere, de forma consistente, conteúdo que atenda aos seus requisitos.

Como a geração de conteúdo pelo modelo não é determinística, formular um prompt para obter o resultado desejado envolve tanto técnica quanto criatividade. Ainda assim, há técnicas e boas práticas que ajudam a obter bons resultados de forma consistente.

Algumas técnicas de engenharia de prompt funcionam com qualquer modelo, como o uso de papéis nas mensagens. Mas modelos de tipos diferentes, como os de raciocínio e os GPT, podem exigir prompts diferentes para produzir os melhores resultados. Até versões específicas de modelos da mesma família podem produzir resultados distintos. Por isso, ao desenvolver aplicativos mais complexos, recomendamos enfaticamente que você:

  • Configure seus aplicativos em produção para usar versões específicas dos modelos (como gpt-4.1-2025-04-14) para garantir um comportamento consistente.
  • Crie testes e conjuntos de avaliações que meçam o comportamento dos prompts. Assim, você pode acompanhar o desempenho ao refiná-los ou ao trocar ou atualizar a versão do modelo.

Veja a seguir algumas ferramentas e técnicas para criar prompts.

Papéis das mensagens e prioridade das instruções

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

O parâmetro instructions define orientações gerais sobre como o modelo deve se comportar ao gerar uma resposta, incluindo o tom, os objetivos e exemplos de respostas corretas. As instruções fornecidas dessa forma têm prioridade sobre o prompt do 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 equivale, em linhas gerais, 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);

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, o contexto não incluirá o conteúdo de instructions usado nos turnos anteriores.

A especificação do modelo da OpenAI descreve como nossos modelos atribuem prioridade às mensagens de acordo com o papel de cada uma.

developer user assistant
As mensagens developer contêm instruções de quem desenvolve o aplicativo e têm prioridade sobre as mensagens user. As mensagens user contêm instruções do usuário final e têm prioridade menor que as mensagens developer. As mensagens geradas pelo modelo têm o papel assistant.

Uma conversa com vários turnos pode incluir diversas mensagens desses tipos, além de outros tipos de conteúdo fornecidos por você e pelo modelo. Saiba mais sobre como gerenciar o estado da conversa.

Pense nas mensagens developer e user como uma função e seus argumentos em uma linguagem de programação.

  • As mensagens developer estabelecem as regras do sistema e a lógica de negócio, como a definição de uma função.
  • As mensagens user fornecem os dados de entrada e as configurações aos quais se aplicam as instruções da mensagem developer, como os argumentos de uma função.

Versione os prompts no código

Armazene os prompts de produção no código do aplicativo em vez de criar objetos de prompt reutilizáveis. Ao gerenciar os prompts no código, você pode 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 perderá destaque a partir de 3 de junho de 2026, e a desativação de v1/prompts está prevista para 30 de novembro de 2026. Consulte a página de descontinuações para conferir o cronograma atualizado.

Ao iniciar um novo trabalho de engenharia de prompt:

  • Mantenha as funções que montam os prompts em um módulo pequeno, próximo ao código do recurso que elas atendem.
  • Use argumentos de função tipados ou schemas para valores dinâmicos, como dados de clientes, arquivos ou opções da tarefa.
  • Passe os valores gerados de instructions e input diretamente para a API Responses.
  • Adicione dados de teste representativos, testes e verificações de avaliação antes de alterar os prompts de produção.
  • Publique as alterações nos prompts pelo seu sistema de implantação. Use sinalizadores de recursos ou opções de configuração quando precisar fazer a liberação em etapas.

Se a sua integração já chama um prompt salvo pelo ID ou pela versão, siga 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 combinar a formatação em Markdown com tags XML para ajudar o modelo a distinguir as partes do prompt e os dados de contexto.

Títulos e listas em Markdown ajudam a delimitar as seções do prompt e a indicar sua hierarquia ao modelo. Também podem facilitar a leitura dos prompts durante o desenvolvimento. As tags XML ajudam a indicar onde começa e termina cada trecho de conteúdo, como um documento de apoio usado como referência. Com os atributos XML, você também pode definir metadados sobre o conteúdo do prompt e fazer referência a eles nas instruções.

Em geral, uma mensagem de desenvolvedor contém as seções abaixo, normalmente nesta ordem. O conteúdo e a ordem ideais podem variar conforme o modelo:

  • 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 deve fazer e o que nunca deve fazer? Inclua as subseções relevantes para o seu caso de uso, como orientações para o modelo chamar funções personalizadas.
  • Exemplos: Forneça exemplos de entradas possíveis e, para cada uma, a saída que você espera do modelo.
  • Contexto: Forneça as informações adicionais de que o modelo possa precisar para gerar uma resposta, como dados privados ou proprietários que não façam parte do conjunto de treinamento, ou outros dados que você saiba serem especialmente relevantes. Em geral, é melhor colocar esse conteúdo perto do fim do prompt, já que o contexto pode variar de uma solicitação de geração para outra.

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

Mensagem de 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 montar uma mensagem, procure colocar o conteúdo que pretende reutilizar nas solicitações à API no início do prompt e entre os primeiros parâmetros enviados no corpo JSON da solicitação a Chat Completions ou Responses. Assim, você aproveita ao máximo a redução de custos e latência proporcionada pelo cache de prompts.

Aprendizado few-shot

O aprendizado few-shot permite orientar um grande modelo de linguagem a realizar uma nova tarefa incluindo no prompt alguns exemplos de entrada e saída, sem precisar fazer o ajuste fino do modelo. O modelo identifica implicitamente o padrão nos exemplos e o aplica ao prompt. Procure apresentar entradas variadas e indicar a saída desejada para cada uma.

Em geral, os exemplos fazem parte de uma mensagem developer na solicitação à API. A mensagem developer abaixo contém exemplos que mostram ao modelo como classificar avaliações positivas ou negativas sobre o atendimento ao cliente.

# 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, vale a pena incluir no prompt informações adicionais que o modelo possa usar para gerar a resposta. Há alguns motivos comuns para fazer isso:

  • Dar ao modelo acesso a dados proprietários ou a outros dados que não façam parte do conjunto usado no treinamento.
  • Restringir a resposta do modelo a um conjunto específico de fontes que você identificou como as mais úteis para a tarefa.

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

Planeje o uso da janela de contexto

Em cada solicitação de geração, há um limite para a quantidade de dados que o modelo consegue considerar como contexto. Esse limite de memória é chamado de janela de contexto e é medido em tokens, que representam partes dos dados enviados, de textos a imagens.

O tamanho da janela de contexto varia conforme o modelo, de pouco mais de 100 mil tokens a um milhão nos modelos GPT-4.1 mais recentes. Consulte a documentação dos modelos para conferir o tamanho da janela de contexto de cada um.

Como criar prompts para os modelos atuais

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

GPT-6 Astra prompting guide

Aproveite melhor os prompts para o modelo mais recente com orientações atualizadas, exemplos práticos e notas sobre migração.

Boas práticas de criação de prompts para o modelo mais recente

Para orientações completas e atualizadas, consulte as boas práticas de criação de prompts para o modelo mais recente. As recomendações práticas abaixo continuam válidas.

Como criar prompts para modelos de raciocínio

Ao criar prompts para um modelo de raciocínio, leve em conta algumas diferenças em relação aos modelos GPT. Em geral, os modelos de raciocínio produzem resultados melhores quando recebem apenas orientações gerais sobre a tarefa. Já os modelos GPT se beneficiam de instruções muito precisas.

Uma forma de entender a diferença entre modelos de raciocínio e modelos GPT é pensar nos colegas de uma equipe.

  • Um modelo de raciocínio é como um colega sênior. Você pode indicar o objetivo e confiar que ele saberá definir os detalhes para alcançá-lo.
  • Um modelo GPT é como um colega júnior. Ele terá um desempenho melhor se receber instruções explícitas para produzir um resultado específico.

Para saber mais sobre as boas práticas de uso de modelos de raciocínio, consulte este guia.

Próximos passos

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

Crie um prompt no Playground

Use o Playground para criar e refinar prompts.

Gere dados JSON com saídas estruturadas

Garanta que os dados JSON gerados pelo modelo sigam um schema JSON.

Referência completa da API

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

Outros recursos

Para encontrar mais ideias, visite o OpenAI Cookbook, que reúne exemplos de código e links para recursos de terceiros, como: