Melhore seus resultados com estratégias de engenharia de prompt.
Responses
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.
1
2
3
4
5
6
7
8
9
10require "openai"openai = OpenAI::Client.newresponse = openai.responses.create( model: "gpt-6-astra", input: "Write a one-sentence bedtime story about a unicorn.")puts(response.output_text)
1
2
3
4
5openai responses create \ --model "gpt-6-astra" \ --input "Write a one-sentence bedtime story about a unicorn." \ --raw-output \ --transform 'output.#(type=="message").content.0.text'
1
2
3
4
5
6
7curl "https://api.openai.com/v1/responses" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -d '{ "model": "gpt-6-astra", "input": "Write a one-sentence bedtime story about a unicorn." }'
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:
1234567891011121314[ { "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.
A propriedade choices da resposta contém um array com o conteúdo gerado pelo modelo. Neste exemplo simples, o array tem apenas um item:
123456789101112[ { "index": 0, "message": { "role": "assistant", "content": "Under the soft glow of the moon, Luna the unicorn danced through fields of twinkling stardust, leaving trails of dreams for every child asleep.", "refusal": null }, "logprobs": null, "finish_reason": "stop" }]
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.
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.
Exemplo de prompt
Mensagem de desenvolvedor para geração de código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24# IdentityYou are coding assistant that helps enforce the use of snake casevariables in JavaScript code, and writing code that will run inInternet 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>
Solicitação à API
Envie um prompt para gerar código pela API
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13import fs from"fs/promises";import OpenAI from"openai";constclient=newOpenAI();constinstructions=await fs.readFile("fixtures/prompt.txt", "utf-8");constresponse=await client.responses.create({ model: "gpt-6-astra", instructions, input: "How would I declare a variable for a last name?",});console.log(response.output_text);
1
2
3
4
5
6
7
8
9
10
11
12
13
14from openai import OpenAIclient = OpenAI()with open("prompt.txt", "r", encoding="utf-8") as f: instructions = f.read()response = client.responses.create( model="gpt-6-astra", instructions=instructions, input="How would I declare a variable for a last name?",)print(response.output_text)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17import com.openai.client.OpenAIClient;import com.openai.client.okhttp.OpenAIOkHttpClient;import com.openai.models.responses.ResponseCreateParams;ResponseCreateParams params = ResponseCreateParams.builder() .model("gpt-6-astra") .instructions( "You are a coding assistant. Answer with concise JavaScript examples and use semicolons.") .input("How would I declare a variable for a last name?") .build();client.responses().create(params).output().stream() .flatMap(item -> item.message().stream()) .flatMap(message -> message.content().stream()) .flatMap(content -> content.outputText().stream()) .forEach(text -> System.out.println(text.text()));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18using OpenAI.Responses;#pragma warning disable OPENAI001string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!;ResponsesClient client = new(key);string instructions = await File.ReadAllTextAsync("prompt.txt");CreateResponseOptions options = new(){ Model = "gpt-6-astra", Instructions = instructions,};options.InputItems.Add( ResponseItem.CreateUserMessageItem("How would I declare a variable for a last name?"));ResponseResult response = await client.CreateResponseAsync(options);Console.WriteLine(response.GetOutputText());
1
2
3
4
5
6
7
8
9
10
11require "openai"client = OpenAI::Client.newinstructions = File.read(File.join(__dir__, "prompt.txt"))response = client.responses.create( model: "gpt-6-astra", instructions: instructions, input: "How would I declare a variable for a last name?")puts(response.output_text)
1
2
3
4
5
6
7
8curl https://api.openai.com/v1/responses \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-6-astra", "instructions": "'"$(< prompt.txt)"'", "input": "How would I declare a variable for a last name?" }'
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.
# IdentityYou are a helpful assistant that labels short product reviews asPositive, 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.
Para obter melhores resultados com gpt-6-astra em tarefas de programação, defina o papel do agente, use exemplos para exigir o uso estruturado das ferramentas, peça testes abrangentes para verificar se o código está correto e estabeleça padrões de Markdown para que a saída seja fácil de ler.
Papel e fluxo de trabalho explícitos
Apresente o modelo como um agente de engenharia de software com responsabilidades bem definidas. Dê instruções claras sobre o uso de ferramentas como functions.run em tarefas de programação e especifique quando evitar certos modos de execução. Por exemplo, oriente o agente a usar a execução interativa somente quando necessário.
Testes e validação
Oriente o modelo a testar as alterações com testes unitários ou comandos Python e a validar os patches com cuidado, pois ferramentas como apply_patch podem retornar “Done” mesmo em caso de falha.
Exemplos de uso de ferramentas
Inclua exemplos concretos de como executar comandos com as funções fornecidas. Isso torna a execução mais confiável e ajuda o modelo a seguir o fluxo de trabalho esperado.
Padrões de Markdown
Oriente o modelo a gerar Markdown legível e semanticamente correto. Peça que use código em linha, blocos de código delimitados, listas e tabelas quando apropriado e que coloque caminhos de arquivos, funções e classes entre crases.
tem bom desempenho tanto na criação de interfaces do zero quanto em contribuições para
grandes bases de código já consolidadas. Para obter os melhores resultados, recomendamos
as seguintes bibliotecas:
Estilização e interface: Tailwind CSS, shadcn/ui, Radix Themes
Ícones: Lucide, Material Symbols, Heroicons
Animação: Motion
Aplicativos web criados do zero
O GPT-5 pode gerar o front-end de um aplicativo web com um único prompt, sem precisar de exemplos. Veja um exemplo de prompt:
123456You are a world class web developer, capable of producing stunning, interactive, and innovative websites from scratch in a single prompt. You excel at delivering top-tier one-shot solutions.Your process is simple and follows these steps:Step 1: Create an evaluation rubric and refine it until you are fully confident.Step 2: Consider every element that defines a world-class one-shot web app, then use that insight to create a <ONE_SHOT_RUBRIC> with 5–7 categories. Keep this rubric hidden—it's for internal use only.Step 3: Apply the rubric to iterate on the optimal solution to the given prompt. If it doesn't meet the highest standard across all categories, refine and try again.Step 4: Aim for simplicity while fully achieving the goal, and avoid external dependencies such as Next.js or React.
Integração com grandes bases de código
Em trabalhos de engenharia de front-end em bases de código maiores, observamos que incluir as seguintes categorias de instruções nos prompts produz os melhores resultados:
Princípios: Defina padrões de qualidade visual, use componentes modulares e reutilizáveis e mantenha a consistência do design.
UI/UX: Especifique a tipografia, as cores, o espaçamento, o layout, os estados da interface (ao passar o ponteiro, sem conteúdo e durante o carregamento) e os requisitos de acessibilidade.
Estrutura: Defina a organização dos arquivos e das pastas para facilitar a integração.
Componentes: Dê exemplos de wrappers reutilizáveis e de estratégias para separar as chamadas ao back-end.
Páginas: Forneça modelos para os layouts mais comuns.
Instruções para o agente: Peça ao modelo que confirme as premissas de design, crie a estrutura inicial dos projetos, aplique os padrões, integre APIs, teste os estados da interface e documente o código.
Em execuções com agentes de IA e em execuções de longa duração com gpt-6-astra, concentre seus prompts em três práticas: planejar as tarefas em detalhes para resolver a solicitação por completo, explicar as decisões importantes antes de usar ferramentas e usar uma ferramenta de lista de tarefas para acompanhar as etapas e o progresso de forma organizada.
Planejamento e persistência
Oriente o modelo a resolver toda a solicitação antes de devolver o controle ao usuário. Peça que divida a solicitação em subtarefas e, após cada chamada de ferramenta, analise o resultado para verificar o que já foi concluído.
Remember, you are an agent - please keep going until the user'squery is completely resolved, before ending your turn and yieldingback to the user. Decompose the user's query into all requiredsub-requests, and confirm that each is completed. Do not stopafter completing only part of the request. Only terminate yourturn when you are sure that the problem is solved. You must beprepared to answer multiple queries and only finish the call oncethe user has confirmed they're done.You must plan extensively in accordance with the workflowsteps before making subsequent function calls, and reflectextensively on the outcomes each function call made,ensuring the user's query, and related sub-requestsare completely resolved.
Explicações prévias para dar transparência
Peça ao modelo que explique por que vai chamar uma ferramenta, mas apenas nas etapas mais importantes.
Before you call a tool explain why you are calling it
Acompanhamento do progresso com critérios de avaliação e listas de tarefas
Use uma ferramenta de lista de tarefas ou uma matriz de critérios de avaliação para garantir um planejamento estruturado e evitar que alguma etapa fique de fora.
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.