Como usar o GPT-6 Astra
Conheça as práticas recomendadas, os recursos e as orientações de migração para o GPT-6 Astra.
Introdução
O GPT-6 Astra é nosso modelo mais inteligente até agora, com desempenho de ponta em uso do computador, navegação, engenharia de software, ciência e trabalho profissional. Ele se destaca na execução de fluxos de trabalho com várias etapas que envolvem código, navegadores e software profissional. Em diversas avaliações, o Astra alcança resultados melhores usando substancialmente menos tokens de saída, o que resulta em um custo estimado de API por tarefa menor que o dos modelos anteriores, apesar do preço mais alto por token.
O GPT-6 Astra também é nosso modelo mais alinhado até agora. Ele se destaca por agir com cuidado, respeitar os limites da tarefa e se comunicar com transparência. Quando as instruções deixam margem para interpretação, ele usa o contexto disponível para preencher lacunas rotineiras e faz perguntas específicas quando a resposta pode mudar o resultado. Ele incorpora novos requisitos, muda de rumo quando solicitado e responde a perguntas paralelas sem perder de vista a tarefa como um todo.
Para desenvolver com o Astra, defina model como gpt-6-astra em uma requisição à Responses API.
Novidades
- Chamada assíncrona de ferramentas: O GPT-6 Astra pode continuar raciocinando, chamar outras ferramentas ou responder a partes independentes de uma solicitação enquanto seu aplicativo executa uma ferramenta. Defina
async: trueem uma função ou ferramenta personalizada e retorne o resultado quando estiver pronto, usando ocall_idoriginal. Seu aplicativo continua responsável por executar a ferramenta e gerenciar o trabalho pendente. Consulte Chamada assíncrona de ferramentas para ver o uso básico e um padrão de ferramenta de espera definido pelo desenvolvedor. - Orientação durante o turno: Envie instruções adicionais do usuário enquanto o GPT-6 Astra trabalha, como uma correção ou uma mudança nos requisitos. Por meio de uma conexão WebSocket, a Responses API preserva o trabalho concluído e inclui a atualização em uma continuação. Consulte Orientação durante o turno para saber mais sobre o fluxo de eventos e o tratamento dos resultados das ferramentas.
- Altere o raciocínio durante a conversa preservando o cache: Adicione um item de entrada
configuration_updatepara aumentar o esforço de raciocínio em trabalhos difíceis ou reduzi-lo em solicitações rotineiras de acompanhamento, sem reescrever o prefixo original do prompt. O esforço de raciocínio atualizado se aplica até que outro item de entradaconfiguration_updateo substitua. Consulte Altere o raciocínio durante a conversa para ver exemplos e informações de compatibilidade. - Monitoramento de desalinhamento: Como parte das nossas salvaguardas reforçadas para o GPT-6 Astra, nossos sistemas monitoram o desalinhamento de forma assíncrona e disparam alertas quando necessário. Consulte Monitoramento de desalinhamento para mais informações.
- Limitações: O GPT-6 Astra não oferece suporte ao esforço de raciocínio
none. O modo Fast não está disponível para o GPT-6 Astra com residência de dados na UE.
O GPT-6 Astra também oferece suporte aos recursos de API já disponíveis no GPT-5.6, incluindo uso do computador, Saídas estruturadas, streaming, Chamada programática de ferramentas, orquestração de múltiplos agentes, cache de prompts, raciocínio persistido, compactação e modo Pro.
Práticas recomendadas para criação de prompts
O GPT-6 Astra é mais inteligente e capaz que modelos anteriores, como o GPT-5.6 Sol, e também apresenta padrões de comportamento que podem ser otimizados com prompts voltados ao seu caso de uso.
Comportamento do GPT-6 Astra
- Iniciativa e persistência – O modelo foi projetado para colaborar de forma mais eficaz e, por isso, tem maior propensão a fazer perguntas ao usuário quando informações adicionais podem mudar significativamente o resultado. Isso pode levá-lo a parar quando o usuário espera que ele faça suposições razoáveis e continue trabalhando.
- Seguimento de instruções – O GPT-6 Astra segue instruções em geral melhor que nossos modelos anteriores, dando a você maior controle sobre seu comportamento. Ele pode ser mais sensível a instruções contidas em habilidades e outros arquivos, como
AGENTS.md. Recomendamos fortemente auditar as habilidades e os outros arquivos acessíveis ao modelo em busca de instruções que possam influenciar seu comportamento. - Personalidade e estilo de escrita – O modelo tende a produzir respostas detalhadas e formatadas e pode usar expressões recorrentes em diferentes sessões. Especifique o estilo de escrita e a estrutura de que seu aplicativo precisa.
- Delegação a subagentes – O modelo pode delegar com menos frequência do que seria desejável para seu fluxo de trabalho. Especifique quando e em que medida ele deve usar subagentes para trabalhar em paralelo.
- Testes e verificação – Em tarefas de programação, o modelo tende a testar minuciosamente antes de considerar uma tarefa concluída. Em tarefas menores, isso pode resultar em testes mais abrangentes do que o necessário.
Iniciativa e persistência
O GPT-6 Astra geralmente mantém a coerência durante tarefas longas melhor que o GPT-5.6 Sol e os modelos anteriores. Ele também tem maior propensão a pedir esclarecimentos em situações nas quais os modelos anteriores fariam suposições.
Para incentivar um trabalho mais autônomo, comece com este prompt:
You should infer the user's intent and task scope from the instructions and prior conversation context. Your job is to bias towards action and carry the user's intended task to completion.
When the user expresses intent to perform new work or fix an existing issue, persist until the user's intended goal is complete. Progress autonomously towards the user's goal (e.g. creating isolated worktrees / checkouts if needed, resolving merge conflicts, read-only actions, creating draft PRs etc.) unless they are clearly destructive or irreversible.
Quando a intenção do usuário não está clara, o modelo tem maior propensão a pedir esclarecimentos para prosseguir. Instrua o modelo a continuar quando o prompt do usuário implicar autorização:
When the user's prompt indicates a request for action, such as "can you...", "I want to...", "help me..." and similar expressions, treat these as instructions to do the work and take action. Do not stop at acknowledging capability (e.g. "Yes…"), proposing a plan, or offering to continue. Do not settle for a partial or "helpful enough" solution that does not fully satisfy the user's task to save time, effort or tokens. If a task requires sustained work, complete all the necessary work until the intended outcome is fulfilled.
Instrua o modelo a pedir aprovação somente depois de preparar um resultado concreto que possa ser revisado. Isso evita que a tarefa seja bloqueada antes de o modelo fazer o trabalho que está ao seu alcance e costuma acelerar a conclusão da tarefa.
Before asking the user clarifying questions, you should complete the work that is already authorized from context and necessary to make the proposed action concrete and reviewable. The user should be approving a concrete, reviewable result. For example, before deploying a change, writing to an external application, merging a PR or publishing a site, do all the required work first so that user approval is the final step. You don't need user permission for reversible tasks, read-only actions, reviews or fixes, or anything for which authorization is provided earlier in the session or strongly implied from the task instruction.
Do not introduce unsolicited warnings, disclaimers, approval flows, or safety/compliance checklists due to hypothetical risk.
Por padrão, o modelo também tende a fazer perguntas que não interrompem o trabalho enquanto ele avança. Ajuste esses prompts ao nível de autonomia de que seu aplicativo precisa.
Seguimento de instruções
O GPT-6 Astra tem mais facilidade para seguir instruções longas, mas também pode ser mais sensível às informações presentes no contexto. Por exemplo, orientações pouco claras ou conflitantes em um arquivo de habilidade podem levar o modelo a pausar e bloquear o trabalho prematuramente. Deixe explícita a prioridade das instruções do usuário e das habilidades.
The user's instructions take precedence over guidelines provided in a skill. If explicit user instructions conflict with a skill's instructions, prioritize the user's instructions.
Pedir ao modelo que identifique a habilidade e a instrução que o levaram a pausar ou mudar de rumo também pode ser uma forma eficaz de dar transparência ao seu comportamento.
If a skill causes you to ask for permission or confirmation, pause, leave requested work unfinished, or diverge from the user's intent, name and link to the exact SKILL.md file you read, quote the relevant instruction, and briefly explain how it applies. Distinguish explicit skill requirements from your interpretation of guidelines.
Use este prompt para encontrar orientações que influenciam o comportamento sem serem mencionadas ou que entram em conflito quando seu aplicativo carrega muitas habilidades e arquivos de instruções, como AGENTS.md.
Personalidade e estilo de escrita
O GPT-6 Astra tende a usar listas, tabelas e Markdown para facilitar a leitura rápida das respostas. Se seu aplicativo precisa de texto corrido com menos formatação, especifique essa preferência.
Default to using clear, concise paragraphs, each developing one main idea. Use lists only when the information is genuinely parallel, sequential, or easier to compare, and avoid nested lists unless the hierarchy cannot be expressed clearly in prose. Use plain, simple language: familiar words, concrete examples, and precise verbs. Prefer active voice and direct statements.
Make sure to state the main point clearly and early, then develop it with the explanation and detail the reader needs. Let each sentence build on what came before. Develop the points that matter and provide enough support to be useful.
Para comunicação técnica, o prompt a seguir ajuda a equilibrar uma linguagem clara e coerente com a adequação à área de conhecimento:
Use plain language over jargon, and reference technical details only to the degree that it helps illustrate an idea or your work to the user. Communicate complex concepts in a clear and cohesive manner, and calibrate your writing to the level of background knowledge assumed from the user's prompt and context.
Para reduzir o uso de jargões e frases feitas na escrita, comece com este prompt:
Avoid using slop words or phrases like "Bottom Line:" in conclusions, "delve," "foster," "leverage," "it's worth noting," "importantly," "Question? Answer." or "This isn't about X. It's about Y.", "genuinely" or hyphenated compound descriptions and adjectives. Do not use concluding summary statements such as "In short:..", "The simplest mental model is:...".
State the intended action directly. Avoid adding what you won't do, what will remain unchanged, or how you'll separate or categorize results. Do not use contrastive framing such as "X, not Y" or "X—not Y" that introduces an unprompted alternative that the user didn't ask about. Avoid invented compound labels like "exact-head checks" and "editorial-row layouts", vague qualifiers, and canned transitions; use plain verbs and prepositions to state the actual relationship directly.
Delegação a subagentes
O GPT-6 Astra é treinado para dividir e delegar trabalho a subagentes que atuam em paralelo. Se você está implementando um sistema de múltiplos agentes no seu harness, use o prompt a seguir para ajustar quanto trabalho o GPT-6 Astra deve delegar:
If at any point you can parallelize work by delegating tasks to another agent (no matter if you are the root or subagent), you should do so using collaboration tools if it could save time or improve quality.
Mensagens entre agentes podem conter erros de gramática ou espaçamento. Use este prompt para facilitar a leitura dessas mensagens:
Messages that you send to other agents and your final answer may be read by a human, so ensure they are legible. Always put proper spaces between words and/or numbers.
O modelo tende a responder bem a prompts que indicam como e quando delegar trabalho a subagentes. Ajuste esse comportamento ao seu harness e à sua implementação de múltiplos agentes.
Testes e verificação
Em tarefas de programação, ajuste a quantidade de testes e verificações ao que a alteração exige. Isso pode ajudar a evitar testes desnecessários ou verificações repetidas em pequenas alterações.
Do not write tests for reversible, low-impact changes that mirror the implementation. If you do choose to verify your work with tests, make sure that the tests are meaningful and necessary to verify implementation.
Run tests appropriate to the change and complete required checks. Once those pass, broaden or repeat testing only when new changes, failures, or unresolved concerns justify it; otherwise, continue toward completing the task.
Início rápido de migração
Migre com o Codex
O Codex pode aplicar as alterações recomendadas neste guia com a habilidade de Documentação da OpenAI.
$openai-docs migrate this project to GPT-6 Astra
Para usar essa habilidade em outros agentes de programação, baixe-a do repositório do Codex.
Atualize os parâmetros da API e do modelo
Defina model como gpt-6-astra e verifique os seguintes pontos:
- Esforço de raciocínio: Se você usa
noneouminimalatualmente, comece comlowe compare os resultados. Caso contrário, mantenha o esforço de raciocínio efetivamente em uso. Usereasoning.effortem Responses oureasoning_effortem Chat Completions. - Chamada de ferramentas: Use a Responses API. O GPT-6 Astra oferece suporte a Chat Completions, mas a chamada de ferramentas exige Responses.
- Parâmetros sem suporte: Remova
temperature,top_petop_logprobs. Para Chat Completions, remova tambémlogprobs. Para Responses, removamessage.output_text.logprobsdeinclude. - Modo Fast: Para residência de dados na UE, use o processamento Padrão. O GPT-6 Astra não oferece suporte a
service_tier: "fast"ouservice_tier: "priority"com residência de dados na UE. O modo Fast para o GPT-6 Astra não inclui um SLA de latência. Consulte Compatibilidade do modo Fast. - Alteração do esforço de raciocínio: Se seu aplicativo altera o esforço entre respostas, use itens
configuration_updateem requisições padrão com um único agente. Mantenhareasoning.effortinalterado no nível da requisição para preservar o prefixo do prompt para uso do cache. Verifique os limites de compatibilidade antes de adotar esse recurso. - Cache de prompts: Ao migrar do GPT-5.5 ou de versões anteriores, substitua
prompt_cache_retentionporprompt_cache_options.ttldefinido como"30m". Confira as mudanças no cache de prompts, incluindo os pontos de delimitação do cache e a cobrança por gravação no cache. - Pausas desnecessárias para aprovação: Se o modelo pedir aprovação repetidamente antes de prosseguir, use as orientações sobre iniciativa e persistência para solicitar uma execução mais autônoma. Consulte o restante de Práticas recomendadas para criação de prompts para ver orientações sobre seguimento de instruções, estilo de escrita, delegação a subagentes e testes.
Como usar o GPT-5.6
Conheça as práticas recomendadas, os recursos e as orientações de migração para o GPT-5.6 e a família de modelos GPT-5.6.
Introdução
O GPT-5.6 estabelece um novo patamar de qualidade e eficiência para fluxos de trabalho complexos em produção. O GPT-5.6 é especialmente eficiente no uso de tokens e aprimora a estética do frontend, incluindo layout, hierarquia visual e decisões de design.
O GPT-5.6 também apresenta uma nova nomenclatura. O alias gpt-5.6 direciona as solicitações para gpt-5.6-sol, o modelo com a capacidade do modelo principal. Use gpt-5.6-terra para obter alto desempenho a um preço menor e gpt-5.6-luna para processar grandes volumes de trabalho com eficiência.
Ao migrar do GPT-5.5 ou do GPT-5.4, comece com a configuração de raciocínio que você usa atualmente nesses modelos. Em seguida, teste essa mesma configuração e um nível abaixo em tarefas representativas. O GPT-5.6 muitas vezes consegue manter ou melhorar a qualidade com menos tokens, mas a melhor configuração depende da sua carga de trabalho.
Novidades
- Chamada programática de ferramentas: o GPT-5.6 pode escrever JavaScript para chamar ferramentas elegíveis, passar resultados entre chamadas e processar saídas intermediárias em um ambiente de execução hospedado. Use a chamada programática de ferramentas em fluxos de trabalho de escopo delimitado que usam muitas ferramentas e não exigem uma nova decisão do modelo entre as etapas. A chamada programática de ferramentas é compatível com ZDR e não tem custos adicionais de contêiner.
- Múltiplos agentes [beta]: o recurso de múltiplos agentes permite que uma instância do GPT-5.6 coordene vários subagentes em paralelo e sintetize seus resultados. Assim como o modo Ultra no Codex, isso pode reduzir o tempo total de execução e melhorar o desempenho em tarefas complexas que podem ser claramente divididas em frentes de trabalho independentes. O recurso de múltiplos agentes está disponível em versão beta na Responses API enquanto o aprimoramos com base no feedback dos desenvolvedores.
- Cache explícito de prompts: o GPT-5.6 permite marcar exatamente quais prefixos reutilizáveis de prompts a OpenAI armazena em cache. Você ainda pode usar o cache automático no modo implícito. A OpenAI cobra pelas gravações em cache 1,25× o preço da entrada sem cache, enquanto as leituras do cache continuam com desconto. Saiba como configurar o cache de prompts.
- Raciocínio persistido: o GPT-5.6 pode reutilizar itens de raciocínio disponíveis entre turnos para melhorar a qualidade em conversas com vários turnos e a eficiência do cache. Use
reasoning.contextpara selecionar o comportamento. Saiba como preservar o raciocínio entre chamadas. - Esforço de raciocínio Max: o GPT-5.6 oferece suporte ao esforço de raciocínio
maxpara tarefas exigentes que precisam de mais exploração e verificação. Se você usaxhighatualmente, compare as duas configurações em cargas de trabalho representativas. - Modo Pro: o GPT-5.6 pode realizar mais processamento para melhorar a confiabilidade em tarefas difíceis e retornar uma única resposta final. Ative esse modo com
reasoning.mode: "pro"quando a qualidade for mais importante do que a latência e o uso de tokens. Saiba como usar o modo Pro. - Eficiência no uso de tokens: o GPT-5.6 alcança desempenho de modelo principal com menos tokens de saída.
- Design de frontend: o GPT-5.6 cria sites e aplicativos mais bem-acabados e fáceis de usar, com melhorias no layout, na hierarquia visual e nas decisões de design.
- Compreensão da intenção: o GPT-5.6 consegue inferir melhor, a partir do contexto, o objetivo por trás da solicitação do usuário e o nível de trabalho esperado, de modo que muitas vezes você não precisa prescrever cada etapa. Continue fornecendo o contexto do domínio, as restrições obrigatórias, os limites de aprovação e os critérios de sucesso. Informe ao modelo quando uma ambiguidade importante deve motivar uma pergunta.
- Nível de detalhe original da imagem: o GPT-5.6 preserva as dimensões da imagem com o nível de detalhe
originalouauto, exceto quando uma das dimensões ultrapassa 65.535 pixels; nesse caso, a imagem é reduzida para respeitar esse limite. A API rejeita imagens que ainda excedam o limite de 30.000 patches, em vez de redimensioná-las para se adequar a ele. Imagens grandes podem usar mais tokens de entrada e aumentar a latência. Saiba como escolher um nível de detalhe da imagem.
Salvaguardas
Ao usar modelos GPT-5.6, os usuários podem se deparar com salvaguardas que bloqueiam ou recusam algumas solicitações com base em classificadores de uso indevido nas áreas cibernética e biológica, executados em tempo real durante a geração das saídas do modelo. Outras solicitações podem levar mais tempo porque a geração é pausada por vários segundos durante a transmissão enquanto esses classificadores revisam as saídas de forma síncrona. Ocasionalmente, as salvaguardas podem intervir em trabalhos legítimos, principalmente em áreas de uso duplo, nas quais atividades defensivas e ofensivas podem parecer semelhantes à primeira vista.
Se o seu aplicativo atende usuários finais individuais, envie um safety_identifier estável e que preserve a privacidade em cada solicitação. Consulte Implementar identificadores de segurança para obter orientações.
Aprimoramos continuamente essas salvaguardas para que sejam robustas e eficazes diante de tentativas adversariais, preservando o acesso a trabalhos legítimos, como revisão de código, pesquisa de vulnerabilidades, desenvolvimento de patches, depuração, educação em segurança e testes defensivos.
Início rápido da migração
Migre com o Codex
O Codex pode aplicar as alterações recomendadas neste guia com a habilidade OpenAI Docs.
$openai-docs migrate this project to the GPT-5.6 model family
Para usar essa habilidade em outros agentes de programação, baixe-a do repositório de habilidades da OpenAI.
Atualize os parâmetros da API e do modelo
- Escolha o modelo de destino para a carga de trabalho. Use
gpt-5.6-solpara obter a capacidade do modelo principal,gpt-5.6-terrapara equilibrar inteligência e custo ougpt-5.6-lunapara processar grandes volumes de trabalho com eficiência. O aliasgpt-5.6direciona as solicitações paragpt-5.6-sol. - Use a Responses API para fluxos de trabalho com raciocínio, chamadas de ferramentas e vários turnos.
- Defina
reasoning.effortde forma deliberada. O GPT-5.6 oferece suporte anone,low,medium,high,xhighemax.- Se estiver migrando do GPT-5.5 ou do GPT-5.4, mantenha o esforço de raciocínio atual como referência e depois compare com um nível abaixo.
- Se você usa
none, mantenha essa configuração como referência de latência e teste tambémlowquando o fluxo de trabalho se beneficiar do raciocínio ou do uso de ferramentas. - Use
mediumcomo ponto de partida equilibrado elowpara cargas de trabalho sensíveis à latência. - Use
highouxhighquando mais raciocínio produzir um ganho de qualidade comprovado por medições. - Reserve
maxpara as cargas de trabalho mais difíceis que priorizam a qualidade. Comparemaxexhighpara encontrar o melhor equilíbrio entre qualidade, latência e custo para seu caso de uso.
- Para usar o modo Pro, mantenha o modelo GPT-5.6 selecionado e defina
reasoning.modecomoprona Responses API; não mude para um slug de modelo Pro separado. Escolhareasoning.effortde forma independente. Se você omitir esse parâmetro, o GPT-5.6 usarámediumpor padrão nos modos padrão e Pro. Consulte modo de raciocínio para ver um exemplo de solicitação e detalhes de cobrança. - Configure o raciocínio persistido com base em quanto do raciocínio anterior ainda é relevante. Os modelos GPT-5.6 usam
all_turnspor padrão; os modelos anteriores usamcurrent_turn.- Omita
reasoning.contextou defina-o comoautopara usarall_turns, o padrão do GPT-5.6. Verifique o camporeasoning.contextda resposta para confirmar o modo efetivamente usado. - Defina
reasoning.contextcomoall_turnsquando os objetivos, as premissas e as prioridades da tarefa permanecerem estáveis entre os turnos. - Com
all_turns, continue usandoprevious_response_idpara disponibilizar ao modelo o raciocínio das respostas anteriores. - Ao gerenciar o histórico manualmente, preserve e reenvie as entradas anteriores do usuário e todos os itens de saída das respostas. Para
store: falseou zero retenção de dados, reenvie os itens de raciocínio criptografados que a API retorna por padrão. - Defina
reasoning.contextcomocurrent_turnquando o raciocínio anterior não for mais relevante.
- Omita
- Revise o cache de prompts. Não é necessário alterar o código para continuar usando o cache implícito. Como as gravações em cache do GPT-5.6 custam 1,25× o preço da entrada sem cache, monitore
cached_tokensecache_write_tokenspara entender o custo líquido. Use pontos de interrupção explícitos ouprompt_cache_options.mode: "explicit"para evitar gravações desnecessárias e substituaprompt_cache_retentionporprompt_cache_options.ttl. - Para usar a chamada programática de ferramentas, adicione a ferramenta
programmatic_tool_callinge habilite as ferramentas elegíveis comallowed_callers. Atualize seu aplicativo para lidar com itensprogram, chamadas de função feitas pelo programa e itensprogram_output, preservando ocall_ide o vínculo decallerde cada chamada. Consulte o guia de chamada programática de ferramentas para ver exemplos de solicitações e de continuação.- Avalie o desempenho do fluxo de trabalho com PTC habilitado em tarefas representativas. Compare o sucesso das tarefas, a completude da resposta final, as evidências exigidas, o total de tokens, a latência e o custo. Reduzir chamadas, turnos ou saídas intermediárias só representa uma melhoria quando a resposta final continua atendendo ao padrão de qualidade exigido.
Práticas recomendadas para criação de prompts
Prefira prompts mais enxutos
Remover instruções e exemplos repetidos e simplificar as descrições das ferramentas pode melhorar o desempenho nas tarefas e a eficiência no uso de tokens. Em uma amostra de execuções de avaliações internas de agentes de programação, configurações com prompts de sistema mais enxutos melhoraram as pontuações das avaliações em cerca de 10–15%, reduzindo o total de tokens em 41–66% e o custo em 33–67%. Os resultados variam conforme a carga de trabalho, portanto, considere essas faixas como indicativas e valide as alterações em tarefas representativas do seu próprio aplicativo.
Para simplificar os prompts sem perder orientações importantes:
- Comece com um prompt e um conjunto de ferramentas que já funcionem. Remova um grupo de instruções, exemplos ou ferramentas por vez e execute novamente as mesmas avaliações.
- Declare cada instrução uma única vez.
- Disponibilize apenas as ferramentas relevantes para a tarefa e mantenha suas descrições concisas e precisas.
- Mantenha exemplos e orientações de estilo quando eles expressarem um requisito do produto ou corrigirem uma lacuna identificada por medições.
- Monitore o contexto tanto no início de uma execução quanto à medida que a conversa cresce. Sessões longas podem amplificar o conteúdo repetido de prompts e ferramentas.
Defina os limites de autonomia e aprovação
O GPT-5.6 pode ser proativo e persistente ao executar tarefas com várias etapas. Defina o nível de ação que cada solicitação autoriza para que o modelo possa continuar realizando trabalho seguro e dentro do escopo sem pausas desnecessárias, mas pare antes de ações externas, destrutivas, custosas ou que ampliem o escopo.
Uma política sucinta costuma ser suficiente:
For requests to answer, explain, review, diagnose, or plan, inspect the relevant
materials and report the result. Do not implement changes unless the request also
asks for them.
For requests to change, build, or fix, make the requested in-scope local changes
and run relevant non-destructive validation without asking first.
Require confirmation for external writes, destructive actions, purchases, or a
material expansion of scope.
Nomeie explicitamente as ações locais seguras, como ler arquivos, inspecionar logs, editar código dentro do escopo e executar testes. Mantenha a política em um só lugar e declare cada regra uma única vez. Repetir instruções como “pergunte primeiro”, “não faça alterações” ou “aguarde aprovação” pode causar pedidos de aprovação desnecessários para ações seguras e esperadas.
Defina o tamanho e o estilo das respostas
Por padrão, o GPT-5.6 tende a ser mais conciso que o GPT-5.5. Ao migrar, verifique se instruções genéricas de brevidade, como “Seja conciso” ou “Responda de forma breve”, ainda são úteis. Elas podem ser desnecessárias para algumas tarefas e, às vezes, tornar as respostas curtas demais. Mantenha-as quando produzirem de forma consistente a saída de que seu aplicativo precisa.
Para ter um controle mais consistente entre solicitações, use text.verbosity para definir o nível de detalhe padrão e, em seguida, use o prompt para os requisitos específicos da tarefa.
Defina um padrão com text.verbosity
Escolha low, medium ou high como nível de detalhe padrão de uma solicitação. No prompt, especifique o tamanho, a estrutura ou o conteúdo obrigatório para a tarefa. Consulte Configurar text.verbosity para ver um exemplo de uso da API.
Especifique o que uma resposta curta deve incluir
Quando uma tarefa pedir uma resposta mais curta, identifique as informações que o modelo deve preservar e os detalhes que pode omitir. Por exemplo:
Lead with the conclusion. Include the evidence needed to support it, any material
caveat, and the next action. Omit secondary detail and repetition.
Keep all required facts, decisions, caveats, and next steps. Trim introductions,
repetition, generic reassurance, and optional background first.
Isso dá ao modelo uma ordem clara de prioridades: preservar o conteúdo necessário para concluir a tarefa e, depois, remover os detalhes menos relevantes.
Defina o tom
Descrições genéricas como “amigável” ou “empático” podem ser ambíguas. Descreva as escolhas de escrita que definem o tom do seu produto, como o grau de objetividade da resposta, quando reconhecer um problema e se cabe tranquilizar o usuário ou incluir uma despedida.
State the answer directly. If the user reports a problem, acknowledge the
specific issue before giving the next step. Use reassurance only when it is
relevant. Omit generic praise and unnecessary sign-offs.
Modo Pro
Escolha o modo Pro quando a qualidade for a prioridade
O modo Pro é um modo de execução da Responses API em que o modelo realiza mais trabalho em uma solicitação antes de retornar uma única resposta final. Ele pode aumentar a confiabilidade em tarefas difíceis, mas aumenta a latência e soma os tokens desse trabalho ao uso informado. Esses tokens são cobrados pelas tarifas padrão de tokens do modelo selecionado.
Use o modo Pro quando uma pequena melhoria de qualidade fizer uma diferença relevante no resultado e a tarefa for difícil o suficiente para se beneficiar, como otimização complexa, programação ou revisão de alto valor, ou análise aprofundada com critérios claros de avaliação. Prefira o modo padrão para tarefas rotineiras, sensíveis à latência ou de alto volume, e sempre que suas avaliações não mostrarem um ganho significativo com o modo Pro.
O modo de raciocínio e o esforço de raciocínio são independentes. O modo Pro funciona com qualquer modelo GPT-5.6 e os níveis de esforço de raciocínio que ele suporta. Comece com o mesmo modelo e nível de esforço usados como referência no modo padrão e compare as configurações em tarefas representativas, em vez de presumir que o maior esforço sempre oferece o melhor equilíbrio.
Configure o modo Pro na API
Ative o modo Pro na solicitação à API. Mantenha o mesmo prompt focado no resultado que você usa no modo padrão: informe o objetivo, o contexto relevante, as restrições, as evidências necessárias, os critérios de sucesso e o formato de saída. Você não precisa pedir ao modelo que “use o modo Pro”, “pense mais” ou gere várias respostas candidatas.
Por exemplo:
Review this database migration plan for failure modes that could cause data loss
or extended downtime. For each finding, cite the relevant step, estimate impact
and likelihood, and recommend a specific mitigation. Return the five most
important risks in severity order.
Compare qualidade e custo
Compare os modos padrão e Pro nas mesmas tarefas representativas. Meça o sucesso das tarefas, a completude das respostas, as evidências necessárias, o total de tokens, a latência e o custo. Use o modo Pro de forma seletiva, quando o ganho de qualidade ou confiabilidade justificar o trabalho adicional do modelo.
Saiba mais no guia de modo de raciocínio.
Chamada programática de ferramentas
Escolha a chamada programática de ferramentas conforme as características da tarefa
A chamada programática de ferramentas (PTC) funciona melhor em fluxos de trabalho de escopo delimitado, nos quais o código pode processar vários resultados de ferramentas ou grandes saídas intermediárias e retornar um resultado estruturado muito menor. Use-a para filtragem, junção, classificação, deduplicação, agregação, validação ou outros tipos de processamento previsível.
Chamadas múltiplas, paralelas ou dependentes, por si só, não justificam o uso da chamada programática de ferramentas. Prefira chamadas diretas de ferramentas, sem PTC, quando:
- Uma única chamada for suficiente
- As saídas intermediárias já forem pequenas
- Cada resultado puder mudar a próxima decisão do modelo
- Uma ação exigir aprovação
- A saída final precisar preservar citações ou artefatos nativos
Adapte as instruções de roteamento à tarefa
Não conte apenas com a disponibilidade de ferramentas ou com instruções genéricas como “use a chamada programática de ferramentas com eficiência” para que o modelo escolha o caminho correto. Quando tanto as chamadas diretas quanto as programáticas estiverem disponíveis, informe explicitamente:
- Qual etapa de escopo delimitado deve usar a chamada programática de ferramentas.
- Quais ferramentas ela pode chamar.
- O esquema exato de saída e as evidências necessárias.
- Os limites de concorrência, novas tentativas e interrupção.
- Quais tarefas devem continuar usando chamadas diretas.
As descrições das ferramentas devem documentar os campos e tipos de retorno esperados e o comportamento em caso de erro. Se o modelo não conseguir determinar a estrutura do retorno antes de escrever o programa, prefira chamadas diretas de ferramentas para que ele possa inspecionar o resultado antes de decidir como usá-lo.
Se os dois caminhos forem necessários, defina um único ponto claro de transição e instrua o modelo a não alternar entre os caminhos nem repetir tarefas já concluídas.
Por exemplo:
<tool_orchestration>
Use Programmatic Tool Calling for [bounded stage] using only [eligible tools].
Run independent calls concurrently when safe. Use only documented tool input
and output fields.
Process and reduce the intermediate results, then emit exactly [output schema],
including the evidence needed for the final answer.
Stop when [condition] is met. Retry transient failures at most [R] times.
Do not repeat completed calls or perform side-effecting actions. If a required
result is still missing, return a clear structured failure.
Use direct tool calls for [semantic judgment, approval, or final validation].
</tool_orchestration>
Avalie a resposta final
O item program_output e a message final do assistente são saídas distintas; teste ambos. Em teoria, um programa pode retornar os registros corretos enquanto a mensagem omite um campo obrigatório, uma citação ou uma ressalva.
Compare as chamadas diretas e programáticas nas mesmas tarefas representativas. Verifique se a resposta final está correta, completa e inclui as evidências necessárias. Depois, compare o total de tokens, a latência, o custo, as chamadas, os turnos e as novas tentativas. Considere a redução no uso de recursos uma melhoria somente se a resposta continuar passando nas suas avaliações existentes.
Saiba mais no guia de chamada programática de ferramentas.
Como usar o GPT-5.5
Conheça as práticas recomendadas, os recursos e as orientações de migração para o GPT-5.5.
Introdução
O GPT-5.5 eleva o padrão dos fluxos de trabalho complexos em produção. É uma ótima opção para casos de uso de programação, agentes que usam ferramentas intensivamente, assistentes com respostas fundamentadas, recuperação em contextos longos, fluxos que transformam especificações de produto em planos e fluxos voltados ao cliente nos quais a qualidade da execução e o refinamento das respostas são essenciais.
Para aproveitar ao máximo o GPT-5.5, trate-o como uma nova família de modelos que exige ajustes, e não como um substituto direto do gpt-5.2 ou do gpt-5.4. Comece a migração com uma nova base, em vez de reaproveitar todas as instruções de um conjunto antigo de prompts. Comece com o menor prompt que preserve o contrato do produto e, depois, ajuste o esforço de raciocínio, a verbosidade, as descrições das ferramentas e o formato de saída com base em exemplos representativos.
O GPT-5.5 oferece suporte a todos os recursos da API que já estavam disponíveis no GPT-5.4, incluindo cache de prompts, ferramentas hospedadas, pesquisa de ferramentas, compactação e tratamento de phase para itens do assistente reenviados manualmente.
Consulte Práticas recomendadas para criação de prompts para ver exemplos de padrões eficazes de criação de prompts.
Novidades
- Raciocínio mais eficiente: o GPT-5.5 alcança bons resultados com menos tokens de raciocínio do que os modelos anteriores, mesmo com o mesmo esforço de raciocínio. Isso é especialmente útil em fluxos de trabalho complexos, com uso intensivo de ferramentas ou várias etapas, nos quais a economia de tokens se acumula.
- Melhor execução de tarefas com prompts focados no resultado: o GPT-5.5 é melhor em trabalhar a partir de um objetivo claro, respeitar restrições e transformar a intenção do produto em próximos passos concretos. Descreva o resultado esperado, os critérios de sucesso, os efeitos colaterais permitidos, as regras sobre evidências e a estrutura da saída. Evite orientar o processo passo a passo, a menos que o caminho exato seja importante.
- Uso de ferramentas mais eficaz e preciso: o GPT-5.5 é especialmente útil em ambientes com muitas ferramentas, fluxos de serviço com várias etapas e tarefas de longa duração executadas por agentes. Ele tende a ser mais preciso na seleção de ferramentas e no uso de argumentos.
- O tom costuma ser mais refinado, mas pode ser mais direto: o GPT-5.5 costuma produzir respostas mais acolhedoras e fáceis de ler, com menos instruções auxiliares no prompt.
Mudanças de comportamento
-
O esforço de raciocínio agora usa
mediumpor padrão: o GPT-5.5 usa o esforço de raciocíniomediumpor padrão. Consideremediumo ponto de partida recomendado para equilibrar qualidade, confiabilidade, latência e custo. Em fluxos de trabalho sensíveis à latência, avalielowantes denonequando o uso de ferramentas, o planejamento, a pesquisa ou a tomada de decisões em várias etapas ainda forem importantes. Reservenonepara tarefas nas quais a latência é crítica e que não exigem raciocínio nem várias chamadas de ferramentas encadeadas, como interações simples por voz, recuperação rápida de informações e classificação. Aumente parahighouxhighsomente quando as avaliações mostrarem um ganho mensurável de qualidade que justifique a latência e o custo adicionais. Consulte a documentação de modelos de raciocínio para saber mais sobre as configurações recomendadas.Um esforço de raciocínio maior não é automaticamente melhor. Se a tarefa tiver instruções conflitantes, critérios de parada pouco definidos ou acesso a ferramentas sem limites claros, um esforço maior pode levar a raciocínio excessivo, pesquisas desnecessárias ou queda na qualidade da saída. Aumente o esforço somente quando as avaliações mostrarem um ganho mensurável de qualidade.
-
As entradas de imagem preservam mais detalhes visuais por padrão: o GPT-5.5 atualiza o tratamento padrão das entradas de imagem para preservar mais detalhes visuais e melhorar o desempenho do uso do computador. Quando
image_detailnão é definido ou está definido comoauto, o modelo agora usa o comportamentooriginal, preservando as imagens sem redimensionamento até 10.240.000 pixels ou um limite de 6.000 pixels por dimensão. Parahigh, especifique o valor diretamente; ele preserva as imagens sem redimensionamento até 2.500.000 pixels ou um limite de 2.048 pixels por dimensão. Agora,lowprioriza o uso eficiente do contexto e redimensiona de forma mais agressiva do que os modelos anteriores as imagens que ultrapassam o limite de 512 pixels por dimensão. Consulte a documentação de imagens e visão. -
Melhor cumprimento de instruções: o GPT-5.5 interpreta os prompts de forma literal e minuciosa, permitindo instruções específicas e descritivas quando o produto as exige. Defina critérios de sucesso e regras de parada, especialmente para fluxos de trabalho de longa duração, com uso intensivo de ferramentas ou coleta de evidências. Consulte Escreva prompts focados no resultado e Mantenha o nível adequado de especificidade.
-
O estilo padrão é mais conciso e direto: o GPT-5.5 tende a ser eficiente, direto e orientado a tarefas por padrão. Isso é útil para muitos fluxos de trabalho em produção, mas experiências voltadas ao cliente ou de conversação podem precisar de orientações explícitas sobre personalidade, cordialidade, justificativas e formatação. Use
text.verbosityde forma deliberada:mediumé o padrão, elowcostuma ser um ponto de partida melhor para respostas concisas. Consulte Práticas recomendadas para criação de prompts. -
Fluxos de trabalho de programação precisam de uma orquestração mais robusta: o GPT-5.5 é mais adequado a tarefas complexas de programação que exigem planejamento, uso de ferramentas, navegação pela base de código, verificação e execução em várias etapas. Para agentes de programação, seja explícito sobre reutilização, delegação a subagentes, expectativas de testes, critérios de aceitação e quando continuar ou pedir ajuda.
Início rápido da migração
Migração automatizada com o Codex
O Codex pode aplicar as mudanças recomendadas neste guia com a habilidade OpenAI Docs.
$openai-docs migrate this project to gpt-5.5
Para usar essa habilidade em outros agentes de programação, baixe-a do repositório de habilidades da OpenAI.
Parâmetros da API e do modelo
- Atualize o slug do modelo para
gpt-5.5. - Use a Responses API para qualquer caso de uso que envolva raciocínio, chamadas de ferramentas ou múltiplos turnos.
- Ajuste
reasoning.effort. Uselowpara um raciocínio eficiente,mediumpara um ponto de equilíbrio na curva de latência e desempenho,highpara tarefas agênticas complexas que exigem raciocínio difícil e nas quais a latência é menos importante, exhighpara as tarefas agênticas assíncronas mais difíceis ou avaliações que testam os limites da inteligência do modelo. Consulte a documentação de modelos de raciocínio. - Para configurar respostas mais concisas, defina
text.verbositycomolow. No GPT-5.5, isso resultará em respostas proporcionalmente mais concisas do que a verbosidadelowno GPT-5.4. - Para fluxos de trabalho com uso intensivo de ferramentas ou de longa duração, verifique se o aplicativo trata corretamente
phase, os preâmbulos e o reenvio de itens do assistente. - Compare com outros modelos a precisão, o consumo de tokens e a latência de ponta a ponta.
Criação de prompts
- Declare o resultado esperado e os critérios de sucesso.
- Reduza ou remova as orientações detalhadas sobre o processo passo a passo. Deixe o GPT-5.5 escolher o caminho, a menos que o produto exija um caminho específico.
- Remova as definições de esquema de saída do prompt sempre que possível. Use Saídas estruturadas em seu lugar.
- Otimize o prompt para o uso de cache: partes estáticas primeiro, partes dinâmicas por último.
- Remova a data atual. O modelo já sabe a data atual em UTC.
- Revise e otimize seus prompts com as Práticas recomendadas para criação de prompts.
Como usar modelos de raciocínio
Estas orientações se aplicam aos modelos da série GPT-5 e vale retomá-las sempre que as equipes migrarem cargas de trabalho para modelos de raciocínio. O GPT-5.5 mantém muitas capacidades que surgiram em modelos anteriores, mas ainda vale revisá-las se você estiver migrando de um modelo GPT-5 anterior, do GPT-4.1 ou de um modelo de raciocínio como o o3.
As equipes podem deixar esses recursos passar despercebidos porque eles estão, em parte, na configuração e na orquestração da API, e não no próprio prompt. Em conjunto, a Responses API, os controles de raciocínio, a verbosidade, as saídas estruturadas, o cache de prompts, o design das ferramentas, as ferramentas hospedadas e o gerenciamento de estado ajudam os modelos de raciocínio a oferecer seu melhor desempenho em inteligência, confiabilidade, latência e custo.
- Responses API: o GPT-5.5 funciona melhor na Responses API. Use
previous_response_idpara gerenciar o estado em múltiplos turnos. Em fluxos sem estado ou com zero retenção de dados, reenvie a cada turno os itens de saída relevantes que foram retornados. Consulte Como passar o contexto da resposta anterior para mais detalhes. - Esforço de raciocínio: use
reasoning.effortpara escolher entrelow,medium,highouxhigh. O padrão émedium, mas muitas cargas de trabalho terão bom desempenho comlow. Reservenonepara casos de uso nos quais a baixa latência é mais importante do que a inteligência. Consulte Modelos de raciocínio para recomendações detalhadas. - Verbosidade: use
text.verbositypara controlar o tamanho da saída. Trate o tamanho da resposta final separadamente da qualidade do raciocínio; especifique limites de palavras, quantidades de seções, larguras de tabelas ou saída somente em JSON quando necessário. - Saídas estruturadas: evite descrever no prompt o esquema de saída esperado. Use Saídas estruturadas para obter validação automática e maior precisão.
- Cache de prompts: o cache de prompts funciona automaticamente para prompts longos elegíveis e pode reduzir a latência e o custo dos tokens de entrada. Para maximizar os acertos de cache, mantenha o conteúdo estável no início da solicitação. Coloque o contexto dinâmico específico do usuário perto do final. Monitore
usage.prompt_tokens_details.cached_tokenspara medir a reutilização. Use um valor estável deprompt_cache_keypara solicitações que compartilham um prefixo reutilizável. A chave ajuda a direcionar solicitações relacionadas para o mesmo cache e é importante para otimizar as taxas de acerto de cache no GPT-5.5. Para grupos com tráfego intenso, siga as orientações para distribuir o tráfego entre mais chaves. - Chamadas de ferramentas: o GPT-5.5 oferece suporte aos mesmos padrões de chamadas de ferramentas do GPT-5.4, incluindo ferramentas de função e fluxos de trabalho de agentes com uso intensivo de ferramentas. Coloque a maior parte das orientações específicas de cada ferramenta na própria descrição: o que ela faz, quando usá-la, entradas obrigatórias, efeitos colaterais, segurança de novas tentativas e tipos de erro comuns. Adicione contexto específico de ferramentas às instruções de sistema somente quando ele se aplicar a várias ferramentas ou alterar de forma relevante a política de operação do agente.
- Ferramentas hospedadas e pesquisa de ferramentas: dê preferência às ferramentas hospedadas pela OpenAI quando forem adequadas ao fluxo de trabalho, como pesquisa na Web, pesquisa de arquivos, Code Interpreter, geração de imagens e uso do computador. As ferramentas hospedadas reduzem o esforço de orquestração personalizada e mantêm os padrões comuns de uso de ferramentas alinhados à Responses API e ao Agents SDK. Use ferramentas de função personalizadas quando precisar chamar seus próprios sistemas, aplicar efeitos colaterais específicos do domínio ou disponibilizar fluxos de trabalho internos de negócio. Para catálogos grandes de ferramentas, considere usar a pesquisa de ferramentas para adiar o carregamento das definições de ferramentas e carregar apenas o subconjunto relevante.
- Preâmbulos de ferramentas: os preâmbulos podem melhorar a experiência do usuário no chat, pois ele vê uma atualização inicial útil sobre o andamento antes de o modelo gerar a resposta final. Eles também facilitam acompanhar o uso de ferramentas: o modelo pode informar o que está prestes a verificar ou fazer e, depois, continuar a partir desse mesmo estado do assistente quando os resultados das ferramentas chegarem.
- Tratamento de
phase: se o aplicativo gerencia manualmente o estado da Responses API, reenviando itens de saída a cada turno em vez de usarprevious_response_id, preserve o parâmetrophasenos itens de saída retornados pelo assistente e reenvie-o sem alterações. Isso é especialmente importante ao usar esforço de raciocínio, preâmbulos ou chamadas repetidas de ferramentas. Consulte Parâmetro de fase. - Compactação: para agentes de longa duração, use a compactação da conversa e do estado de forma deliberada. Preserve as ações concluídas, as premissas em vigor, os IDs, os resultados das ferramentas, os impedimentos não resolvidos e o próximo objetivo concreto.
- Agents SDK: para novos sistemas agênticos, use os padrões mais recentes do Agents SDK para orquestração de ferramentas, rastreamento, transferências de controle e gerenciamento de estado, em vez de reconstruir a orquestração do zero.
- Data atual: o GPT-5.5 sabe a data atual em UTC. Você não precisa adicionar a data atual às instruções de sistema. Adicione contexto explícito de data ou fuso horário somente quando o aplicativo precisar de um fuso horário específico do negócio, uma data de entrada em vigor de uma política, a data local do usuário ou outro ponto de referência diferente de UTC.
Práticas recomendadas para criação de prompts
O GPT-5.5 funciona melhor quando os prompts definem o resultado e dão ao modelo espaço para escolher um caminho eficiente até a solução. Em comparação com modelos anteriores, muitas vezes é possível usar prompts mais curtos e mais orientados a resultados: descreva o que caracteriza um bom resultado, quais restrições importam, quais evidências estão disponíveis e o que a resposta final deve conter.
Evite reaproveitar todas as instruções de um conjunto antigo de prompts. Prompts legados costumam especificar o processo em excesso porque os modelos anteriores precisavam de mais ajuda para manter o foco. Com o GPT-5.5, isso pode acrescentar ruído, restringir o espaço de busca do modelo ou levar a respostas excessivamente mecânicas.
Os padrões apresentados aqui são pontos de partida. Adapte-os à interface do seu produto, às ferramentas, às avaliações e aos objetivos de experiência do usuário.
Personalidade e comportamento
O estilo padrão do GPT-5.5 é eficiente, direto e orientado a tarefas. Isso é útil para sistemas em produção: as respostas mantêm o foco, o comportamento é mais fácil de orientar e o modelo evita prolongar a conversa sem necessidade.
Para assistentes voltados ao cliente, fluxos de suporte, experiências de orientação e outros produtos de conversação, defina tanto a personalidade quanto o estilo de colaboração.
- A personalidade controla como o assistente se expressa: tom, cordialidade, objetividade, formalidade, humor, empatia e nível de refinamento.
- O estilo de colaboração controla como o assistente trabalha: quando faz perguntas, quando adota premissas, quão proativo deve ser, quanto contexto fornece, quando verifica o trabalho e como lida com incertezas ou riscos.
Mantenha ambos breves. As instruções de personalidade devem moldar a experiência do usuário. As instruções de colaboração devem moldar o comportamento na execução das tarefas. Nenhuma delas deve substituir objetivos claros, critérios de sucesso, regras de uso de ferramentas ou condições de parada.
Exemplo de bloco de personalidade para um assistente estável e focado em tarefas:
# Personality
You are a capable collaborator: approachable, steady, and direct. Assume the user is competent and acting in good faith, and respond with patience, respect, and practical helpfulness.
Prefer making progress over stopping for clarification when the request is already clear enough to attempt. Use context and reasonable assumptions to move forward. Ask for clarification only when the missing information would materially change the answer or create meaningful risk, and keep any question narrow.
Stay concise without becoming curt. Give enough context for the user to understand and trust the answer, then stop. Use examples, comparisons, or simple analogies when they make the point easier to grasp. When correcting the user or disagreeing, be candid but constructive. When an error is pointed out, acknowledge it plainly and focus on fixing it.
Match the user's tone within professional bounds. Avoid emojis and profanity by default, unless the user explicitly asks for that style or has clearly established it as appropriate for the conversation.
Exemplo de bloco de personalidade para um assistente expressivo e colaborativo:
# Personality
Adopt a vivid conversational presence: intelligent, curious, playful when appropriate, and attentive to the user's thinking. Ask good questions when the problem is blurry, then become decisive once there is enough context.
Be warm, collaborative, and polished. Conversation should feel easy and alive, but not chatty for its own sake. Offer a real point of view rather than merely mirroring the user, while staying responsive to their goals and constraints.
Be thoughtful and grounded when the task calls for synthesis or advice. State a clear recommendation when you have enough context, explain important tradeoffs, and name uncertainty without becoming evasive.
Para produtos mais expressivos, inclua explicitamente cordialidade, curiosidade, humor ou um ponto de vista, mas mantenha o bloco curto. Use a personalidade para moldar a experiência, não para compensar objetivos pouco claros ou a falta de instruções sobre a tarefa.
Reduza o tempo até o primeiro token visível com um preâmbulo
Em aplicativos com streaming, os usuários percebem quanto tempo leva para a primeira resposta visível aparecer. O GPT-5.5 pode dedicar tempo ao raciocínio, ao planejamento ou à preparação de chamadas de ferramentas antes de emitir texto visível.
Para tarefas mais longas ou que fazem uso intenso de ferramentas, instrua o modelo a começar com um preâmbulo curto: uma breve atualização visível que reconheça a solicitação e indique o primeiro passo. Isso pode melhorar a percepção de agilidade sem alterar a tarefa em si.
Use esse padrão quando a tarefa puder exigir mais de uma etapa, precisar de chamadas de ferramentas ou envolver um fluxo de trabalho de agente de longa duração.
Before any tool calls for a multi-step task, send a short user-visible update that acknowledges the request and states the first step. Keep it to one or two sentences.
Para agentes de programação que disponibilizam fases distintas de mensagem, você pode ser mais explícito:
You must always start with an intermediary update before any content in the analysis channel if the task will require calling tools. The user update should acknowledge the request and explain your first step.
Prompts focados no resultado e condições de parada
O GPT-5.5 tem seu melhor desempenho quando o prompt define o resultado desejado, os critérios de sucesso, as restrições e o contexto disponível, e então deixa o modelo escolher o caminho.
Para muitas tarefas, descreva aonde quer chegar em vez de detalhar cada etapa. Isso dá ao modelo espaço para escolher a pesquisa, a ferramenta ou a estratégia de raciocínio adequada à tarefa.
Prefira esta abordagem:
Resolve the customer's issue end to end.
Success means:
- the eligibility decision is made from the available policy and account data
- any allowed action is completed before responding
- the final answer includes completed_actions, customer_message, and blockers
- if evidence is missing, ask for the smallest missing field
Evite regras absolutas desnecessárias. Prompts antigos costumam usar instruções rígidas como ALWAYS, NEVER, must e only para controlar o comportamento do modelo. Use essas palavras para requisitos realmente invariáveis, como regras de segurança, campos obrigatórios de saída ou ações que nunca devem acontecer. Para decisões que exigem discernimento, como quando pesquisar, pedir esclarecimentos, usar uma ferramenta ou continuar iterando, prefira regras de decisão.
Evite esse estilo de instrução, a menos que todas as etapas sejam realmente necessárias:
First inspect A, then inspect B, then compare every field, then think through
all possible exceptions, then decide which tool to call, then call the tool,
then explain the entire process to the user.
Adicione condições de parada explícitas:
Resolve the user query in the fewest useful tool loops, but do not let loop minimization outrank correctness, accessible fallback evidence, calculations, or required citation tags for factual claims.
After each result, ask: "Can I answer the user's core request now with useful evidence and citations for the factual claims?" If yes, answer.
Defina como agir na falta de evidências:
Use the minimum evidence sufficient to answer correctly, cite it precisely, then stop.
Formatação
O GPT-5.5 permite um alto grau de controle sobre o formato e a estrutura da saída. Use esse controle quando ele melhorar a compreensão ou a adequação ao produto.
Configure text.verbosity, descreva o formato de saída esperado e reserve estruturas mais elaboradas para os casos em que elas melhoram a compreensão ou em que a interface do produto precisa de um artefato estável. O valor padrão de text.verbosity na API é medium; use low quando preferir respostas mais curtas e concisas.
Formatação simples e conversacional:
Let formatting serve comprehension. Use plain paragraphs as the default format for normal conversation, explanations, reports, documentation, and technical writeups. Keep the presentation clean and readable without making the structure feel heavier than the content.
Use headers, bold text, bullets, and numbered lists sparingly. Reach for them when the user requests them, when the answer needs clear comparison or ranking, or when the information would be harder to scan as prose. Otherwise, favor short paragraphs and natural transitions.
Respect formatting preferences from the user. If they ask for a terse answer, minimal formatting, no bullets, no headers, or a specific structure, follow that preference unless there is a strong reason not to.
Adicione orientações explícitas sobre o público e a extensão do texto:
Write for a senior business audience. Keep the answer under 400 words. Use short paragraphs and only include bullets when they improve scannability. Prioritize the conclusion first, then the reasoning, then caveats.
Para edição, reescrita, resumos ou mensagens voltadas a clientes, diga ao modelo o que preservar antes de pedir que ele melhore o estilo. Esse padrão é útil quando você quer refinar o texto sem torná-lo mais longo.
Preserve the requested artifact, length, structure, and genre first. Quietly improve clarity, flow, and correctness. Do not add new claims, extra sections, or a more promotional tone unless explicitly requested.
Fundamentação, citações e limites de recuperação
Para obter respostas fundamentadas, as orientações sobre citações devem fazer parte do prompt. Defina o que precisa de respaldo, o que constitui evidência suficiente e como o modelo deve agir quando faltarem evidências. A ausência de evidências não deve se transformar automaticamente em um “não” apresentado como fato. Para mais detalhes e exemplos, consulte o guia de formatação de citações.
Adicione um limite explícito de recuperação
Os limites de recuperação são regras para encerrar a pesquisa. Eles indicam ao modelo quando já há evidências suficientes.
For ordinary Q&A, start with one broad search using short, discriminative keywords. If the top results contain enough citable support for the core request, answer from those results instead of searching again.
Make another retrieval call only when:
- The top results do not answer the core question.
- A required fact, parameter, owner, date, ID, or source is missing.
- The user asked for exhaustive coverage, a comparison, or a comprehensive list.
- A specific document, URL, email, meeting, record, or code artifact must be read.
- The answer would otherwise contain an important unsupported factual claim.
Do not search again to improve phrasing, add examples, cite nonessential details, or support wording that can safely be made more generic.
Mecanismos de proteção para a redação criativa
Para tarefas de redação, diga ao modelo quais afirmações devem vir de fontes e quais partes podem ser escritas com liberdade criativa. Isso é especialmente importante para slides, textos de lançamento, resumos para clientes, roteiros de fala, textos breves para a liderança e construção de narrativas.
For creative or generative requests such as slides, leadership blurbs, outbound copy, summaries for sharing, talk tracks, or narrative framing, distinguish source-backed facts from creative wording.
- Use retrieved or provided facts for concrete product, customer, metric, roadmap, date, capability, and competitive claims, and cite those claims.
- Do not invent specific names, first-party data claims, metrics, roadmap status, customer outcomes, or product capabilities to make the draft sound stronger.
- If there is little or no citable support, write a useful generic draft with placeholders or clearly labeled assumptions rather than unsupported specifics.
Engenharia de frontend e senso estético
Para trabalhos de frontend, consulte as instruções de exemplo para conhecer formas práticas de orientar a qualidade da interface. Elas abordam o contexto do produto e do usuário, o alinhamento com o sistema de design, a usabilidade da primeira tela, controles familiares, estados esperados, comportamento responsivo e padrões comuns de interfaces geradas que devem ser evitados, como seções de destaque genéricas, cartões aninhados, gradientes decorativos, textos de instrução visíveis e layouts quebrados.
Instrua o modelo a verificar o próprio trabalho
Dê ao GPT-5.5 acesso a ferramentas que permitam verificar as saídas quando a validação for possível.
Para agentes de programação, peça comandos concretos de validação:
After making changes, run the most relevant validation available:
- targeted unit tests for changed behavior
- type checks or lint checks when applicable
- build checks for affected packages
- a minimal smoke test when full validation is too expensive
If validation cannot be run, explain why and describe the next best check.
Para artefatos visuais, peça uma inspeção após a renderização:
Render the artifact before finalizing. Inspect the rendered output for layout, clipping, spacing, missing content, and visual consistency. Revise until the rendered output matches the requirements.
Para tarefas de engenharia e planejamento, torne os planos de implementação rastreáveis:
For implementation plans, include:
- requirements and where each is addressed
- named resources, files, APIs, or systems involved
- state transitions or data flow where relevant
- validation commands or checks
- failure behavior
- privacy and security considerations
- open questions that materially affect implementation
Parâmetro de fase
A partir do GPT-5.4, fluxos de trabalho da Responses de longa duração ou que fazem uso intenso de ferramentas podem usar os valores de phase dos itens do assistente para distinguir atualizações intermediárias de respostas finais. O GPT-5.5 usa o mesmo padrão.
Se você usar previous_response_id, a API preservará automaticamente o estado anterior do assistente. Se o aplicativo reenviar manualmente os itens de saída do assistente na próxima solicitação, preserve cada valor original de phase e reenvie-o sem alterações. Isso é especialmente importante quando uma resposta inclui preâmbulos, chamadas repetidas de ferramentas ou uma resposta final após atualizações intermediárias do assistente.
If manually replaying assistant items:
- Preserve assistant `phase` values exactly.
- Use `phase: "commentary"` for intermediate user-visible updates.
- Use `phase: "final_answer"` for the completed answer.
- Do not add `phase` to user messages.
Estrutura sugerida para o prompt
Use esta estrutura como ponto de partida para prompts complexos. Mantenha cada seção curta. Adicione detalhes apenas quando eles mudarem o comportamento.
Role: [1-2 sentences defining the model's function, context, and job]
# Personality
[tone, demeanor, and collaboration style]
# Goal
[user-visible outcome]
# Success criteria
[what must be true before the final answer]
# Constraints
[policy, safety, business, evidence, and side-effect limits]
# Output
[sections, length, and tone]
# Stop rules
[when to retry, fallback, abstain, ask, or stop]
Como usar o GPT-5.4
Conheça as práticas recomendadas, os recursos e as orientações de migração para o GPT-5.4 e a família de modelos GPT-5.4.
Introdução
O GPT-5.4 foi lançado como um modelo de fronteira para uso profissional na API e no Codex. Ele ajuda desenvolvedores a analisar informações complexas, criar software para produção e automatizar fluxos de trabalho com várias etapas.
Na geração GPT-5.4, o gpt-5.4 é o modelo de uso geral para fluxos de trabalho que alternam entre engenharia de software, raciocínio, escrita e uso de ferramentas.
Este guia apresenta os principais recursos da família de modelos GPT-5 e mostra como aproveitar ao máximo o GPT-5.4.
Novidades
Em comparação com o modelo anterior, GPT-5.2, o GPT-5.4 apresenta melhorias em:
- Programação, compreensão de documentos, uso de ferramentas e cumprimento de instruções
- Percepção de imagens e tarefas multimodais
- Execução de tarefas de longa duração e fluxos de trabalho de agentes com várias etapas
- Eficiência no uso de tokens e desempenho de ponta a ponta em cargas de trabalho com uso intensivo de ferramentas
- Pesquisa na Web e síntese de várias fontes para informações difíceis de encontrar
- Fluxos de trabalho empresariais com uso intensivo de documentos e planilhas nas áreas de atendimento ao cliente, análise de dados e finanças
O GPT-5.4 traz as capacidades de programação do GPT-5.3-Codex para nosso principal modelo de fronteira. Desenvolvedores podem gerar código com qualidade de produção, criar interfaces de front-end refinadas, seguir padrões específicos do repositório e lidar com alterações em vários arquivos com menos novas tentativas. Ele também já vem com uma personalidade bem definida para programação, reduzindo o tempo que as equipes gastam ajustando prompts.
Em cargas de trabalho agênticas, o GPT-5.4 reduz o tempo total de execução de trajetórias com várias etapas e frequentemente conclui tarefas com menos tokens e chamadas de ferramentas. Isso torna os agentes mais ágeis e reduz o custo de operar fluxos de trabalho complexos em escala na API e no Codex.
Novos recursos do GPT-5.4
Assim como os modelos GPT-5 anteriores, o GPT-5.4 oferece suporte a ferramentas personalizadas, parâmetros para controlar a verbosidade e o raciocínio e uma lista de ferramentas permitidas. O GPT-5.4 também introduz várias capacidades que facilitam a criação de sistemas de agentes poderosos, o trabalho com volumes maiores de informações e a execução de fluxos de trabalho automatizados mais confiáveis:
tool_searchna API: O GPT-5.4 aprimora a pesquisa de ferramentas em ecossistemas maiores com o carregamento adiado de ferramentas. Isso permite pesquisar ferramentas, carrega apenas as definições relevantes, reduz o uso de tokens e melhora a precisão da seleção de ferramentas em implantações reais. Saiba mais no guia de pesquisa de ferramentas.- Janela de contexto de 1M de tokens: O GPT-5.4 oferece suporte a uma janela de contexto de até 1M de tokens, facilitando a análise de bases de código inteiras, extensas coleções de documentos ou trajetórias prolongadas de agentes em uma única solicitação. Saiba mais na seção Janela de contexto de 1M.
- Uso do computador integrado: O GPT-5.4 é o primeiro modelo da linha principal com capacidades integradas de uso do computador, permitindo que agentes interajam diretamente com software para concluir, verificar e corrigir tarefas em um ciclo de criação, execução, verificação e correção. Saiba mais no guia de uso do computador.
- Suporte nativo à compactação: O GPT-5.4 é o primeiro modelo da linha principal treinado para oferecer suporte à compactação, permitindo trajetórias mais longas de agentes e preservando o contexto essencial.
Atualizações de modelos, API e recursos
Nesta geração de modelos, o gpt-5.4 é o modelo de uso geral tanto para tarefas variadas quanto para programação. Para problemas mais difíceis, o gpt-5.4-pro usa mais recursos computacionais para pensar por mais tempo e fornecer respostas mais consistentes.
Para variantes menores e mais rápidas, comece com o gpt-5.4-mini ou o gpt-5.4-nano.
Para escolher o modelo mais adequado ao seu caso de uso, considere estas vantagens e limitações:
| Variante | Ideal para |
|---|---|
gpt-5.4 | Trabalho de uso geral, incluindo raciocínio complexo, amplo conhecimento de mundo e tarefas agênticas com uso intensivo de código ou várias etapas |
gpt-5.4-pro | Problemas difíceis que podem levar mais tempo para resolver e exigem raciocínio mais profundo |
gpt-5.4-mini | Programação, uso do computador e fluxos de trabalho de agentes em alto volume que ainda exigem raciocínio robusto |
gpt-5.4-nano | Tarefas com alta taxa de processamento em que velocidade e custo são as principais prioridades |
Menor esforço de raciocínio
O parâmetro reasoning.effort controla quantos tokens de raciocínio o modelo gera antes de produzir uma resposta. Modelos de raciocínio anteriores, como o o3, ofereciam suporte apenas a low, medium e high: low priorizava a velocidade e o uso de menos tokens, enquanto high priorizava um raciocínio mais aprofundado.
O GPT-5.2 e o GPT-5.4 oferecem suporte a none como o menor esforço de raciocínio para interações com menor latência. Essa é a configuração padrão de ambos os modelos. Se precisar de mais raciocínio, aumente gradualmente até medium e avalie os resultados.
Com o esforço de raciocínio definido como none, a criação de prompts é importante. Para melhorar a qualidade do raciocínio do modelo, mesmo com as configurações padrão, incentive-o a “pensar” ou a descrever as etapas que seguirá antes de responder.
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5.4",
input="Think carefully and outline your steps before answering. How much gold would it take to coat the Statue of Liberty in a 1mm layer?",
reasoning={"effort": "none"},
)
print(response)Verbosidade
A verbosidade determina quantos tokens de saída são gerados. Reduzir o número de tokens diminui a latência geral. Embora a abordagem de raciocínio do modelo permaneça praticamente a mesma, ele encontra maneiras de responder de forma mais concisa, o que pode melhorar ou piorar a qualidade da resposta, dependendo do seu caso de uso. Veja alguns cenários para os dois extremos de verbosidade:
- Alta verbosidade: Use quando precisar que o modelo forneça explicações detalhadas de documentos ou faça uma refatoração extensa de código.
- Baixa verbosidade: Ideal para situações em que você quer respostas concisas ou geração de código com foco específico, como consultas SQL.
O GPT-5 passou a permitir configurar essa opção como high, medium ou low. No GPT-5.4, a verbosidade continua configurável e o padrão é medium.
Ao gerar código com o GPT-5.4, os níveis de verbosidade medium e high produzem código mais longo e estruturado, com explicações no próprio código, enquanto a verbosidade low produz código mais curto e conciso, com o mínimo de comentários.
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5.4",
input="What is the answer to the ultimate question of life, the universe, and everything?",
text={"verbosity": "low"},
)
print(response)Você ainda pode orientar a verbosidade por meio de prompts depois de defini-la como low na API. O parâmetro de verbosidade define uma faixa geral de tokens no nível do prompt do sistema, mas, dentro dessa faixa, a saída se adapta tanto aos prompts do desenvolvedor quanto aos do usuário.
Janela de contexto de 1M
A janela de contexto de 1M de tokens foi introduzida com o GPT-5.4, facilitando a análise de bases de código inteiras, extensas coleções de documentos ou trajetórias prolongadas de agentes em uma única solicitação.
Temos preços padrão distintos para solicitações com menos de 272K e com mais de 272K tokens, disponíveis na documentação de preços. Se você usar o modo Fast, qualquer prompt com mais de 272K tokens será processado automaticamente com as tarifas padrão.
Os preços de contexto longo se aplicam em conjunto com outros ajustes de preço, como os de residência de dados e processamento em lote.
Temos limites de taxa diferentes para solicitações com menos de 272K tokens e com mais de 272K tokens; essas informações estão disponíveis na página do modelo GPT-5.4.
Como usar ferramentas com o GPT-5.4
O GPT-5.4 foi pós-treinado para usar ferramentas específicas. Consulte a documentação de ferramentas para orientações mais específicas.
Ferramenta de uso do computador
O uso do computador permite que o GPT-5.4 opere software pela interface do usuário, analisando capturas de tela e retornando ações estruturadas para o seu harness executar. É uma boa opção para fluxos de trabalho no navegador ou no desktop em que uma pessoa poderia concluir a tarefa pela interface, como navegar em um site, preencher formulários ou validar se uma alteração realmente funcionou.
Use a ferramenta em um navegador isolado ou em uma VM e mantenha a supervisão humana em ações de alto impacto. O guia completo aborda o ciclo integrado da Responses API, padrões de harness personalizados e configurações baseadas em execução de código.
Aprenda a executar a ferramenta integrada de uso do computador com segurança e a integrá-la ao seu próprio harness.
Ferramenta de pesquisa de ferramentas
A pesquisa de ferramentas permite que o GPT-5.4 adie o carregamento de grandes conjuntos de ferramentas até o momento da execução, carregando apenas as definições necessárias. Isso é especialmente útil quando você tem muitas funções, namespaces ou ferramentas MCP e quer reduzir o uso de tokens, preservar o desempenho do cache e diminuir a latência sem expor todos os esquemas logo de início.
Use a pesquisa de ferramentas hospedada quando as ferramentas candidatas já forem conhecidas no momento da requisição, ou a pesquisa de ferramentas executada pelo cliente quando seu aplicativo precisar decidir dinamicamente o que carregar. O guia completo também aborda práticas recomendadas para namespaces, servidores MCP e carregamento adiado.
Saiba como adiar o carregamento das definições de ferramentas e carregar o subconjunto adequado em tempo de execução.
Ferramentas personalizadas
Quando a família de modelos GPT-5 foi lançada, introduzimos um novo recurso chamado ferramentas personalizadas, que permite aos modelos enviar qualquer texto bruto como entrada de uma chamada de ferramenta, mantendo a possibilidade de restringir as saídas, se desejado. Esse comportamento das ferramentas continua no GPT-5.4.
Saiba mais sobre ferramentas personalizadas no guia de chamada de função.
Entradas em formato livre
Defina sua ferramenta com type: custom para permitir que os modelos enviem entradas de texto simples diretamente às suas ferramentas, sem se limitar ao JSON estruturado. O modelo pode enviar qualquer texto bruto, como código, consultas SQL, comandos de shell, arquivos de configuração ou textos longos em prosa, diretamente à sua ferramenta.
{
"type": "custom",
"name": "code_exec",
"description": "Executes arbitrary python code"
}
Restringindo as saídas
O GPT-5.4 oferece suporte a gramáticas livres de contexto (CFGs) para ferramentas personalizadas, permitindo que você forneça uma gramática Lark para restringir as saídas a uma sintaxe ou DSL específica. Anexar uma CFG, por exemplo, uma gramática SQL ou de uma DSL, garante que o texto do assistente siga sua gramática.
Isso permite chamadas de ferramenta precisas e restritas ou respostas estruturadas, além de impor formatos sintáticos rigorosos ou específicos de um domínio diretamente na chamada de função do GPT-5.4, melhorando o controle e a confiabilidade em domínios complexos ou com restrições.
Práticas recomendadas para ferramentas personalizadas
- Escreva descrições de ferramentas concisas e explícitas. O modelo escolhe o que enviar com base na sua descrição; indique explicitamente se quiser que ele sempre chame a ferramenta.
- Valide as saídas no servidor. Strings em formato livre são poderosas, mas exigem proteções contra injeção ou comandos inseguros.
Ferramentas permitidas
O parâmetro allowed_tools em tool_choice permite passar N definições de ferramentas, mas restringir o modelo a apenas M (< N) delas. Liste seu conjunto completo de ferramentas em tools e, em seguida, use um bloco allowed_tools para indicar o subconjunto e especificar um modo: auto (o modelo pode escolher qualquer uma delas) ou required (o modelo deve chamar uma delas).
Saiba mais sobre a opção de ferramentas permitidas no guia de chamada de função.
Ao separar todas as ferramentas possíveis do subconjunto que pode ser usado agora, você ganha mais segurança, previsibilidade e um cache de prompts mais eficiente. Também evita soluções frágeis de engenharia de prompt, como uma ordem de chamadas fixa no código. O GPT-5.4 chama ou exige funções específicas dinamicamente durante a conversa, reduzindo o risco de uso não intencional de ferramentas em contextos longos.
| Ferramentas padrão | Ferramentas permitidas | |
|---|---|---|
| Universo do modelo | Todas as ferramentas listadas em "tools": […] | Apenas o subconjunto em "tools": […] dentro de tool_choice |
| Chamada de ferramenta | O modelo pode chamar qualquer ferramenta ou não chamar nenhuma | O modelo fica restrito às ferramentas escolhidas (ou é obrigado a chamá-las) |
| Finalidade | Declarar as capacidades disponíveis | Restringir quais capacidades são efetivamente usadas |
{
"tool_choice": {
"type": "allowed_tools",
"mode": "auto",
"tools": [
{ "type": "function", "name": "get_weather" },
{ "type": "function", "name": "search_docs" }
]
}
}
Para uma visão geral mais detalhada de todos esses novos recursos, consulte as orientações de criação de prompts para o GPT-5.4.
Preâmbulos
Preâmbulos são explicações breves e visíveis para o usuário que o GPT-5.4 gera antes de chamar qualquer ferramenta ou função, descrevendo sua intenção ou seu plano, por exemplo, “por que estou chamando esta ferramenta”. Eles aparecem após a cadeia de pensamento e antes da chamada de ferramenta em si, facilitando a compreensão e a depuração do raciocínio do modelo e permitindo orientá-lo com precisão.
Ao permitir que o GPT-5.4 “pense em voz alta” antes de cada chamada de ferramenta, os preâmbulos aumentam a precisão das chamadas (e o sucesso geral das tarefas) sem aumentar excessivamente a sobrecarga de raciocínio. Para habilitar preâmbulos, adicione uma instrução de sistema ou de desenvolvedor, por exemplo: “Antes de chamar uma ferramenta, explique por que está chamando-a.” O GPT-5.4 adiciona uma justificativa concisa a cada chamada de ferramenta especificada. O modelo também pode gerar várias mensagens entre chamadas de ferramentas, o que pode melhorar a experiência de interação, especialmente em casos de uso com raciocínio mínimo ou sensíveis à latência.
Para saber mais sobre o uso de preâmbulos, consulte o cookbook de criação de prompts para o GPT-5.
Início rápido de migração
O GPT-5.4 funciona melhor com a Responses API, que permite preservar o contexto de raciocínio entre turnos para melhorar o desempenho. Veja abaixo como migrar do seu modelo ou API atual.
Migrando de outros modelos para o GPT-5.4
Use a habilidade OpenAI Docs ao migrar prompts ou fluxos de trabalho existentes para o GPT-5.4. Ela está disponível no nosso repositório público de habilidades e no aplicativo Codex para desktop.
Embora o modelo deva substituir o GPT-5.2 praticamente sem ajustes, há algumas mudanças importantes a destacar. Consulte as orientações de criação de prompts para o GPT-5.4 para saber quais atualizações específicas fazer nos seus prompts.
Usar modelos GPT-5 com a Responses API proporciona maior inteligência graças ao design da API. A Responses API pode passar a CoT do turno anterior ao modelo. Isso resulta em menos tokens de raciocínio gerados, taxas de acerto de cache mais altas e menor latência. Para saber mais, consulte um guia aprofundado sobre os benefícios da Responses API.
Ao migrar de um modelo mais antigo da OpenAI para o GPT-5.4, comece experimentando níveis de raciocínio e estratégias de criação de prompts. Use o otimizador de prompts para atualizar seus prompts para o GPT-5.4 com base nas práticas recomendadas atuais e, depois, siga estas orientações específicas para cada modelo:
gpt-5.2:gpt-5.4com as configurações padrão foi projetado para substituí-lo sem ajustes.- o3:
gpt-5.4com raciocíniomediumouhigh. Comece com raciocíniomediume ajuste os prompts; depois, aumente parahighse não estiver obtendo os resultados desejados. gpt-4.1:gpt-5.4com raciocínionone. Comece comnonee ajuste seus prompts; aumente o nível se precisar de melhor desempenho.o4-miniougpt-4.1-mini:gpt-5.4-minicom ajustes nos prompts é uma ótima opção de substituição.gpt-4.1-nano:gpt-5.4-nanocom ajustes nos prompts é uma ótima opção de substituição.
Novo parâmetro phase
Para fluxos de longa duração ou com uso intensivo de ferramentas do GPT-5.4 na Responses API, use o campo phase da mensagem do assistente para evitar encerramentos prematuros e outros comportamentos incorretos.
phase é opcional na API, mas recomendamos fortemente seu uso. Use phase: "commentary" para atualizações intermediárias do assistente (como preâmbulos antes de chamadas de ferramentas) e phase: "final_answer" para a resposta concluída. Não adicione phase às mensagens do usuário.
Usar previous_response_id costuma ser o caminho mais simples, pois
o estado anterior do assistente é preservado. Se você reenviar o histórico do assistente manualmente,
preserve cada valor original de phase.
A ausência ou a perda de phase pode fazer com que preâmbulos sejam tratados como respostas finais
nesses fluxos de trabalho. Para mais orientações e exemplos, consulte o guia de criação de prompts
para o GPT-5.4.
import OpenAI from "openai";
const client = new OpenAI();
const response = await client.responses.create({
model: "gpt-5.4",
input: [
{
role: "assistant",
phase: "commentary",
content:
"I’ll inspect the logs and then summarize root cause and remediation.",
},
{
role: "assistant",
phase: "final_answer",
content: "Root cause: cache invalidation race.",
},
{
role: "user",
content: "Great—now give me a rollout-safe fix plan.",
},
],
});
console.log(response.output_text);Compatibilidade de parâmetros do GPT-5.4
Os parâmetros a seguir só são compatíveis com o GPT-5.4 quando o esforço de raciocínio está definido como none:
temperaturetop_plogprobs
Requisições que incluam esses campos gerarão um erro no GPT-5.4 ou GPT-5.2 com qualquer outra configuração de esforço de raciocínio, ou em modelos GPT-5 mais antigos, como gpt-5, gpt-5-mini ou gpt-5-nano.
Para obter resultados semelhantes com um esforço de raciocínio mais alto ou com outro modelo da família GPT-5, experimente estes parâmetros alternativos:
- Profundidade do raciocínio:
reasoning: { effort: "none" | "low" | "medium" | "high" | "xhigh" } - Verbosidade da saída:
text: { verbosity: "low" | "medium" | "high" } - Tamanho da saída:
max_output_tokens
Migrando de Chat Completions para a Responses API
A maior diferença, e o principal motivo para migrar de Chat Completions para a Responses API ao usar o GPT-5.4, é o suporte à passagem da cadeia de pensamento (CoT) entre turnos. Veja uma comparação completa das APIs.
A passagem de CoT está disponível apenas na Responses API, e observamos que ela resulta em maior inteligência, menos tokens de raciocínio gerados, maiores taxas de acerto do cache e menor latência. A maioria dos outros parâmetros permanece equivalente, embora a formatação seja diferente. Veja como os novos parâmetros são tratados de forma diferente em Chat Completions e na Responses API:
Esforço de raciocínio
curl --request POST \
--url https://api.openai.com/v1/responses \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header "Content-type: application/json" \
--data '{
"model": "gpt-5.4",
"input": "How much gold would it take to coat the Statue of Liberty in a 1mm layer?",
"reasoning": {
"effort": "none"
}
}'curl --request POST \
--url https://api.openai.com/v1/chat/completions \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header "Content-type: application/json" \
--data '{
"model": "gpt-5.4",
"messages": [
{
"role": "user",
"content": "How much gold would it take to coat the Statue of Liberty in a 1mm layer?"
}
],
"reasoning_effort": "none"
}'Verbosidade
curl --request POST \
--url https://api.openai.com/v1/responses \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header "Content-type: application/json" \
--data '{
"model": "gpt-5.4",
"input": "What is the answer to the ultimate question of life, the universe, and everything?",
"text": {
"verbosity": "low"
}
}'curl --request POST \
--url https://api.openai.com/v1/chat/completions \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header "Content-type: application/json" \
--data '{
"model": "gpt-5.4",
"messages": [
{
"role": "user",
"content": "What is the answer to the ultimate question of life, the universe, and everything?"
}
],
"verbosity": "low"
}'Ferramentas personalizadas
curl --request POST \
--url https://api.openai.com/v1/responses \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header "Content-type: application/json" \
--data '{
"model": "gpt-5.4",
"input": "Use the code_exec tool to calculate the area of a circle with radius equal to the number of r letters in blueberry",
"tools": [
{
"type": "custom",
"name": "code_exec",
"description": "Executes arbitrary Python code"
}
]
}'curl --request POST \
--url https://api.openai.com/v1/chat/completions \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header "Content-type: application/json" \
--data '{
"model": "gpt-5.4",
"messages": [
{
"role": "user",
"content": "Use the code_exec tool to calculate the area of a circle with radius equal to the number of r letters in blueberry"
}
],
"tools": [
{
"type": "custom",
"custom": {
"name": "code_exec",
"description": "Executes arbitrary Python code"
}
}
]
}'Práticas recomendadas para criação de prompts
Ao investigar casos em que o GPT-5.4 trata uma atualização intermediária como a
resposta final, verifique se sua integração preserva corretamente o campo phase
da mensagem do assistente. Consulte Parâmetro phase para obter detalhes.
Entenda o comportamento do GPT-5.4
Onde o GPT-5.4 se destaca
O GPT-5.4 tende a ter um desempenho especialmente bom nestas áreas:
- Alta fidelidade à personalidade e ao tom, com menos desvios ao longo de respostas extensas
- Robustez em fluxos de trabalho agênticos, com maior tendência a persistir em trabalhos de várias etapas, tentar novamente e concluir ciclos de agentes de ponta a ponta
- Síntese rica em evidências, especialmente em fluxos de trabalho com contexto longo ou várias ferramentas
- Cumprimento de instruções em prompts modulares, baseados em habilidades e estruturados em blocos quando o contrato é explícito
- Análise de contexto longo com entradas extensas, desorganizadas ou compostas por vários documentos
- Chamadas de ferramentas em lote ou em paralelo, mantendo a precisão das chamadas
- Fluxos de trabalho com planilhas, finanças e Excel que exigem cumprimento de instruções, fidelidade à formatação e autoverificação mais rigorosa
Onde prompts explícitos ainda ajudam
Mesmo com esses pontos fortes, o GPT-5.4 se beneficia de orientações mais explícitas em algumas situações recorrentes:
- Roteamento de ferramentas com pouco contexto no início de uma sessão, quando a seleção de ferramentas pode ser menos confiável
- Fluxos de trabalho que consideram dependências e precisam de verificações explícitas dos pré-requisitos e das etapas subsequentes
- Seleção do esforço de raciocínio, em que um esforço maior nem sempre é melhor e a escolha certa depende das características da tarefa, não da intuição
- Tarefas de pesquisa que exigem coleta criteriosa de fontes e citações consistentes
- Ações irreversíveis ou de alto impacto que exigem verificação antes da execução
- Ambientes de terminal ou de agentes de programação em que os limites de uso das ferramentas devem permanecer claros
Esses padrões são comportamentos típicos observados, não garantias. Comece com o menor prompt que passe nas suas avaliações e adicione blocos apenas quando eles corrigirem um modo de falha identificado por medições.
Use padrões fundamentais de prompts
Mantenha as saídas compactas e estruturadas
Para melhorar a eficiência no uso de tokens com o GPT-5.4, limite a verbosidade e exija uma saída estruturada por meio de contratos de saída claros. Na prática, isso funciona como uma camada adicional de controle junto ao parâmetro verbosity na Responses API, permitindo orientar tanto o quanto o modelo escreve quanto a forma como ele estrutura a saída.
<output_contract>
- Return exactly the sections requested, in the requested order.
- If the prompt defines a preamble, analysis block, or working section, do not treat it as extra output.
- Apply length limits only to the section they are intended for.
- If a format is required (JSON, Markdown, SQL, XML), output only that format.
</output_contract>
<verbosity_controls>
- Prefer concise, information-dense writing.
- Avoid repeating the user's request.
- Keep progress updates brief.
- Do not shorten the answer so aggressively that required evidence, reasoning, or completion checks are omitted.
</verbosity_controls>
Defina padrões claros para dar continuidade às tarefas
Os usuários frequentemente mudam a tarefa, o formato ou o tom durante a conversa. Para manter o assistente alinhado, defina regras claras sobre quando prosseguir, quando perguntar e como as instruções mais recentes substituem os padrões anteriores.
Use uma política padrão de execução até a conclusão como esta:
<default_follow_through_policy>
- If the user’s intent is clear and the next step is reversible and low-risk, proceed without asking.
- Ask permission only if the next step is:
(a) irreversible,
(b) has external side effects (for example sending, purchasing, deleting, or writing to production), or
(c) requires missing sensitive information or a choice that would materially change the outcome.
- If proceeding, briefly state what you did and what remains optional.
</default_follow_through_policy>
Deixe explícita a prioridade das instruções:
<instruction_priority>
- User instructions override default style, tone, formatting, and initiative preferences.
- Safety, honesty, privacy, and permission constraints do not yield.
- If a newer user instruction conflicts with an earlier one, follow the newer instruction.
- Preserve earlier instructions that do not conflict.
</instruction_priority>
As instruções de desenvolvedor ou de sistema com prioridade mais alta continuam sendo obrigatórias.
Orientação: Quando as instruções mudarem durante a conversa, comunique a atualização de forma explícita, com escopo definido e aplicação localizada. Informe o que mudou, o que continua valendo e se a mudança afeta a próxima interação ou o restante da conversa.
Lide com atualizações de instruções durante a conversa
Para atualizações durante a conversa, use mensagens de orientação explícitas e com escopo definido que indiquem:
- Escopo
- O que substituir
- O que manter
<task_update>
For the next response only:
- Do not complete the task.
- Only produce a plan.
- Keep it to 5 bullets.
All earlier instructions still apply unless they conflict with this update.
</task_update>
Se a própria tarefa mudar, diga isso diretamente:
<task_update>
The task has changed.
Previous task: complete the workflow.
Current task: review the workflow and identify risks only.
Rules for this turn:
- Do not execute actions.
- Do not call destructive tools.
- Return exactly:
1. Main risks
2. Missing information
3. Recommended next step
</task_update>
Exija persistência no uso de ferramentas quando a correção do resultado depender disso
Use regras explícitas para que o uso de ferramentas seja completo, respeite as dependências e siga um ritmo adequado, especialmente em fluxos de trabalho nos quais ações posteriores dependem de recuperação de informações ou verificações anteriores. Uma falha comum é pular pré-requisitos porque o estado final correto parece óbvio.
O GPT-5.4 pode ser menos confiável na seleção de ferramentas no início de uma sessão, quando ainda há pouco contexto. Inclua no prompt a exigência de cumprir pré-requisitos, verificar dependências e definir a finalidade exata do uso de cada ferramenta.
<tool_persistence_rules>
- Use tools whenever they materially improve correctness, completeness, or grounding.
- Do not stop early when another tool call is likely to materially improve correctness or completeness.
- Keep calling tools until:
(1) the task is complete, and
(2) verification passes (see <verification_loop>).
- If a tool returns empty or partial results, retry with a different strategy.
</tool_persistence_rules>
Isso é especialmente importante em fluxos de trabalho nos quais a ação final depende de etapas anteriores de consulta ou recuperação de informações. Uma das falhas mais comuns é pular pré-requisitos porque o estado final pretendido parece óbvio.
<dependency_checks>
- Before taking an action, check whether prerequisite discovery, lookup, or memory retrieval steps are required.
- Do not skip prerequisite steps just because the intended final action seems obvious.
- If the task depends on the output of a prior step, resolve that dependency first.
</dependency_checks>
Peça execução em paralelo quando as tarefas forem independentes e o tempo total de execução importar. Peça execução sequencial quando dependências, ambiguidades ou ações irreversíveis forem mais importantes que a velocidade.
<parallel_tool_calling>
- When multiple retrieval or lookup steps are independent, prefer parallel tool calls to reduce wall-clock time.
- Do not parallelize steps that have prerequisite dependencies or where one result determines the next action.
- After parallel retrieval, pause to synthesize the results before making more calls.
- Prefer selective parallelism: parallelize independent evidence gathering, not speculative or redundant tool use.
</parallel_tool_calling>
Exija a execução completa de tarefas de longa duração
Em fluxos de trabalho com várias etapas, uma falha comum é a execução incompleta: o modelo encerra o trabalho após cobrir apenas parte do escopo, deixa passar itens de um lote ou considera definitivos os resultados de uma recuperação de informações vazia ou limitada. O GPT-5.4 se torna mais confiável quando o prompt define regras explícitas de conclusão e o comportamento de recuperação em caso de falha.
É possível cobrir o escopo por meio de recuperação de informações sequencial ou paralela, mas as regras de conclusão devem permanecer explícitas em ambos os casos.
<completeness_contract>
- Treat the task as incomplete until all requested items are covered or explicitly marked [blocked].
- Keep an internal checklist of required deliverables.
- For lists, batches, or paginated results:
- determine expected scope when possible,
- track processed items or pages,
- confirm coverage before finalizing.
- If any item is blocked by missing data, mark it [blocked] and state exactly what is missing.
</completeness_contract>
Para fluxos de trabalho em que a recuperação de informações costuma retornar resultados vazios, parciais ou com ruído:
<empty_result_recovery>
If a lookup returns empty, partial, or suspiciously narrow results:
- do not immediately conclude that no results exist,
- try at least one or two fallback strategies,
such as:
- alternate query wording,
- broader filters,
- a prerequisite lookup,
- or an alternate source or tool,
- Only then report that no results were found, along with what you tried.
</empty_result_recovery>
Adicione um ciclo de verificação antes de ações de alto impacto
Quando o fluxo de trabalho parecer concluído, adicione uma etapa simples de verificação antes de retornar a resposta ou realizar uma ação irreversível. Isso ajuda a identificar requisitos não atendidos, problemas de fundamentação e desvios de formato antes de efetivar o resultado.
<verification_loop>
Before finalizing:
- Check correctness: does the output satisfy every requirement?
- Check grounding: are factual claims backed by the provided context or tool outputs?
- Check formatting: does the output match the requested schema or style?
- Check safety and irreversibility: if the next step has external side effects, ask permission first.
</verification_loop>
<missing_context_gating>
- If required context is missing, do NOT guess.
- Prefer the appropriate lookup tool when the missing context is retrievable; ask a minimal clarifying question only when it is not.
- If you must proceed, label assumptions explicitly and choose a reversible action.
</missing_context_gating>
Para agentes que executam ações ativamente, adicione um breve roteiro de execução:
<action_safety>
- Pre-flight: summarize the intended action and parameters in 1-2 lines.
- Execute via tool.
- Post-flight: confirm the outcome and any validation that was performed.
</action_safety>
Lide com fluxos de trabalho especializados
Escolha explicitamente o nível de detalhe da imagem para visão e uso do computador
Se o seu fluxo de trabalho depender de precisão visual, especifique o nível detail da imagem no prompt ou na integração, em vez de depender de auto. Use high para a compreensão padrão de imagens com alta fidelidade. Use original para imagens grandes, densas ou que exijam precisão espacial, especialmente em tarefas de uso do computador, localização, OCR e precisão de cliques com gpt-5.4 e modelos futuros. Use low apenas quando a velocidade e o custo forem mais importantes que os detalhes finos. Para saber mais sobre os níveis de detalhe de imagem, consulte o guia de Imagens e visão.
Restrinja a pesquisa e as citações às evidências recuperadas
Quando a qualidade das citações importar, deixe explícitos tanto os limites das fontes quanto os requisitos de formato. Isso ajuda a reduzir referências inventadas, afirmações sem respaldo e desvios no formato das citações.
<citation_rules>
- Only cite sources retrieved in the current workflow.
- Never fabricate citations, URLs, IDs, or quote spans.
- Use exactly the citation format required by the host application.
- Attach citations to the specific claims they support, not only at the end.
</citation_rules>
<grounding_rules>
- Base claims only on provided context or tool outputs.
- If sources conflict, state the conflict explicitly and attribute each side.
- If the context is insufficient or irrelevant, narrow the answer or say you cannot support the claim.
- If a statement is an inference rather than a directly supported fact, label it as an inference.
</grounding_rules>
Se o seu aplicativo exigir citações no corpo do texto, exija citações no corpo do texto. Se exigir notas de rodapé, exija notas de rodapé. O essencial é fixar o formato e impedir que o modelo improvise referências sem respaldo.
Modo de pesquisa
Oriente o GPT-5.4 a adotar um modo de pesquisa disciplinado. Use esse padrão para tarefas de pesquisa, revisão e síntese. Não o imponha a tarefas curtas de execução ou a transformações determinísticas simples.
<research_mode>
- Do research in 3 passes:
1) Plan: list 3-6 sub-questions to answer.
2) Retrieve: search each sub-question and follow 1-2 second-order leads.
3) Synthesize: resolve contradictions and write the final answer with citations.
- Stop only when more searching is unlikely to change the conclusion.
</research_mode>
Se o ambiente do host usar uma ferramenta de pesquisa específica ou exigir uma etapa de envio, combine esse padrão com o contrato de finalização do host.
Imponha formatos de saída rígidos
Para SQL, JSON ou outras saídas sensíveis a erros de análise sintática, instrua o GPT-5.4 a gerar apenas o formato de destino e a verificá-lo antes de concluir.
<structured_output_contract>
- Output only the requested format.
- Do not add prose or markdown fences unless they were requested.
- Validate that parentheses and brackets are balanced.
- Do not invent tables or fields.
- If required schema information is missing, ask for it or return an explicit error object.
</structured_output_contract>
Se você estiver extraindo regiões de documentos ou caixas de OCR, defina o sistema de coordenadas e adicione uma verificação de desvios:
<bbox_extraction_spec>
- Use the specified coordinate format exactly, such as [x1,y1,x2,y2] normalized to 0..1.
- For each box, include page, label, text snippet, and confidence.
- Add a vertical-drift sanity check so boxes stay aligned with the correct line of text.
- If the layout is dense, process page by page and do a second pass for missed items.
</bbox_extraction_spec>
Mantenha explícitos os limites das ferramentas em agentes de programação e de terminal
Em agentes de programação, o GPT-5.4 funciona melhor quando as regras de acesso ao shell e de edição de arquivos são inequívocas. Isso é especialmente importante quando você disponibiliza ferramentas como Shell ou Aplicar patch.
Atualizações para o usuário
O GPT-5.4 funciona bem com atualizações breves e focadas nos resultados. Reutilize o padrão de atualizações para o usuário do guia do 5.2, mas combine-o com requisitos explícitos de conclusão e verificação.
Especificação recomendada para as atualizações:
<user_updates_spec>
- Only update the user when starting a new major phase or when something changes the plan.
- Each update: 1 sentence on outcome + 1 sentence on next step.
- Do not narrate routine tool calls.
- Keep the user-facing status short; keep the work exhaustive.
</user_updates_spec>
Para orientações mais específicas sobre agentes de programação, consulte a seção Padrões de criação de prompts para tarefas de programação abaixo.
Padrões de criação de prompts para tarefas de programação
Autonomia e persistência
O GPT-5.4 geralmente é mais minucioso do início ao fim do que os modelos anteriores da linha principal em tarefas de programação e uso de ferramentas, de modo que costuma ser menos necessário incluir instruções explícitas como “verifique tudo”. Ainda assim, para mudanças de alto risco, como as que envolvem produção, migrações ou segurança, mantenha uma instrução simples de verificação.
<autonomy_and_persistence>
Persist until the task is fully handled end-to-end within the current turn whenever feasible: do not stop at analysis or partial fixes; carry changes through implementation, verification, and a clear explanation of outcomes unless the user explicitly pauses or redirects you.
Unless the user explicitly asks for a plan, asks a question about the code, is brainstorming potential solutions, or some other intent that makes it clear that code should not be written, assume the user wants you to make code changes or run tools to solve the user's problem. In these cases, it's bad to output your proposed solution in a message, you should go ahead and actually implement the change. If you encounter challenges or blockers, you should attempt to resolve them yourself.
</autonomy_and_persistence>
Atualizações intermediárias
Envie poucas atualizações, com informações relevantes. Em tarefas de programação, prefira atualizar o usuário nos momentos-chave.
<user_updates_spec>
- Intermediary updates go to the `commentary` channel.
- User updates are short updates while you are working. They are not final answers.
- Use 1-2 sentence updates to communicate progress and new information while you work.
- Do not begin responses with conversational interjections or meta commentary. Avoid openers such as acknowledgements ("Done -", "Got it", or "Great question") or similar framing.
- Before exploring or doing substantial work, send a user update explaining your understanding of the request and your first step. Avoid commenting on the request or starting with phrases such as "Got it" or "Understood."
- Provide updates roughly every 30 seconds while working.
- When exploring, explain what context you are gathering and what you learned. Vary sentence structure so the updates do not become repetitive.
- When working for a while, keep updates informative and varied, but stay concise.
- When work is substantial, provide a longer plan after you have enough context. This is the only update that may be longer than 2 sentences and may contain formatting.
- Before file edits, explain what you are about to change.
- While thinking, keep the user informed of progress without narrating every tool call. Even if you are not taking actions, send frequent progress updates rather than going silent, especially if you are thinking for more than a short stretch.
- Keep the tone of progress updates consistent with the assistant's overall personality.
</user_updates_spec>
Formatação
O GPT-5.4 costuma adotar uma formatação mais estruturada por padrão e pode usar listas com marcadores em excesso. Se quiser uma resposta final simples e organizada, restrinja explicitamente a estrutura das listas.
Never use nested bullets. Keep lists flat (single level). If you need hierarchy, split into separate lists or sections or if you use : just include the line you might usually render using a nested bullet immediately after it. For numbered lists, only use the `1. 2. 3.` style markers (with a period), never `1)`.
Tarefas de frontend
Use isso apenas quando orientações adicionais de frontend forem úteis.
<frontend_tasks>
When doing frontend design tasks, avoid generic, overbuilt layouts.
Use these hard rules:
- One composition: The first viewport must read as one composition, not a dashboard, unless it is a dashboard.
- Brand first: On branded pages, the brand or product name must be a hero-level signal, not just nav text or an eyebrow. No headline should overpower the brand.
- Brand test: If the first viewport could belong to another brand after removing the nav, the branding is too weak.
- Full-bleed hero only: On landing pages and promotional surfaces, the hero image should usually be a dominant edge-to-edge visual plane or background. Do not default to inset hero images, side-panel hero images, rounded media cards, tiled collages, or floating image blocks unless the existing design system clearly requires them.
- Hero budget: The first viewport should usually contain only the brand, one headline, one short supporting sentence, one CTA group, and one dominant image. Do not place stats, schedules, event listings, address blocks, promos, "this week" callouts, metadata rows, or secondary marketing content there.
- No hero overlays: Do not place detached labels, floating badges, promo stickers, info chips, or callout boxes on top of hero media.
- Cards: Default to no cards. Never use cards in the hero unless they are the container for a user interaction. If removing a border, shadow, background, or radius does not hurt interaction or understanding, it should not be a card.
- One job per section: Each section should have one purpose, one headline, and usually one short supporting sentence.
- Real visual anchor: Imagery should show the product, place, atmosphere, or context.
- Reduce clutter: Avoid pill clusters, stat strips, icon rows, boxed promos, schedule snippets, and competing text blocks.
- Use motion to create presence and hierarchy, not noise. Ship 2-3 intentional motions for visually led work, and prefer Framer Motion when it is available.
Exception: If working within an existing website or design system, preserve the established patterns, structure, and visual language.
</frontend_tasks>
<terminal_tool_hygiene>
- Only run shell commands via the terminal tool.
- Never "run" tool names as shell commands.
- If a patch or edit tool exists, use it directly; do not attempt it in bash.
- After changes, run a lightweight verification step such as ls, tests, or a build before declaring the task done.
</terminal_tool_hygiene>
Localização em documentos e caixas de OCR
Para tarefas de bbox, explicite as convenções de coordenadas e adicione testes de desvio.
<bbox_extraction_spec>
- Use the specified coordinate format exactly (for example [x1,y1,x2,y2] normalized 0..1).
- For each bbox, include: page, label, text snippet, confidence.
- Add a vertical-drift sanity check:
- ensure bboxes align with the line of text (not shifted up or down).
- If dense layout, process page by page and do a second pass for missed items.
</bbox_extraction_spec>
Use as orientações de integração com o ambiente de execução e a API
Para agentes de longa duração ou que usam ferramentas intensivamente, o contrato do ambiente de execução importa tanto quanto o contrato do prompt.
Parâmetro de fase
Para GPT-5.4, gpt-5.3-codex e modelos posteriores da Responses, o campo phase pode
ajudar nos poucos fluxos de longa duração ou de uso intensivo de ferramentas em que preâmbulos ou
outras atualizações intermediárias do assistente são confundidos com a resposta final.
phaseé opcional na API, mas é altamente recomendado. O servidor pode tentar inferir esse valor da melhor forma possível, mas preservar e reenviarphaseexplicitamente é sempre melhor.- Use
phasepara agentes de longa duração ou que usam ferramentas intensivamente e podem emitir comentários antes de chamadas de ferramentas ou de uma resposta final. - Preserve
phaseao reenviar itens anteriores do assistente para que o modelo consiga distinguir os comentários sobre o trabalho em andamento da resposta concluída. Isso é especialmente importante em fluxos com várias etapas que incluem preâmbulos, atualizações relacionadas a ferramentas ou várias mensagens do assistente no mesmo turno. - Não adicione
phaseàs mensagens do usuário. - Se você usar
previous_response_id, esse costuma ser o caminho mais simples, pois a OpenAI geralmente consegue recuperar o estado anterior sem que seja necessário reenviar manualmente os itens do assistente. - Se você reenviar o histórico do assistente por conta própria, preserve os valores originais de
phase. - A ausência ou perda de
phasepode fazer com que preâmbulos sejam interpretados como respostas finais e prejudicar o comportamento nessas tarefas de várias etapas.
Preserve o comportamento em sessões longas
A compactação permite janelas de contexto efetivas significativamente maiores. Com isso, as conversas dos usuários podem continuar por muitos turnos sem atingir os limites de contexto nem sofrer degradação de desempenho decorrente de contextos longos, e os agentes podem executar sequências muito extensas de ações que ultrapassam uma janela de contexto típica em tarefas complexas e de longa duração.
Se você usa Compactação na Responses API, compacte após marcos importantes, trate os itens compactados como estado opaco e mantenha os prompts funcionalmente idênticos após a compactação. O endpoint é compatível com ZDR e retorna um item encrypted_content que você pode passar em solicitações futuras. O GPT-5.4 tende a manter mais coerência e confiabilidade em conversas mais longas, com vários turnos, apresentando menos falhas à medida que as sessões se estendem.
Para mais orientações, consulte a referência da API de /responses/compact.
Controle a personalidade em fluxos de trabalho voltados ao cliente
É possível orientar o GPT-5.4 com mais eficácia quando você separa a personalidade persistente dos controles de escrita específicos de cada resposta. Isso é especialmente útil em fluxos de trabalho voltados ao cliente, como e-mails, respostas de suporte, comunicados e conteúdo no estilo de blog.
- Personalidade (persistente): define o tom, o nível de detalhamento e o estilo de tomada de decisão padrão ao longo da sessão.
- Controles de escrita (por resposta): definem o canal, o registro de linguagem, a formatação e a extensão de um artefato específico.
- Lembrete: a personalidade não deve se sobrepor aos requisitos de saída específicos da tarefa. Se o usuário pedir JSON, retorne JSON.
Para produzir uma prosa natural e de alta qualidade, os controles mais eficazes são:
- Defina uma persona clara para o modelo.
- Especifique o canal e o tom emocional.
- Proíba explicitamente a formatação quando quiser prosa.
- Use limites rígidos de extensão.
<personality_and_writing_controls>
- Persona: <one sentence>
- Channel: <Slack | email | memo | PRD | blog>
- Emotional register: <direct/calm/energized/etc.> + "not <overdo this>"
- Formatting: <ban bullets/headers/markdown if you want prose>
- Length: <hard limit, e.g. <=150 words or 3-5 sentences>
- Default follow-through: if the request is clear and low-risk, proceed without asking permission.
</personality_and_writing_controls>
Para mais padrões de personalidade que você pode usar diretamente, consulte o Cookbook de personalidades em prompts.
Modo de memorando profissional
Para memorandos, revisões e outras tarefas de redação profissional, instruções gerais de escrita muitas vezes não bastam. Esses fluxos de trabalho se beneficiam de orientações explícitas sobre especificidade, convenções da área, síntese e grau de certeza adequado.
<memo_mode>
- Write in a polished, professional memo style.
- Use exact names, dates, entities, and authorities when supported by the record.
- Follow domain-specific structure if one is requested.
- Prefer precise conclusions over generic hedging.
- When uncertainty is real, tie it to the exact missing fact or conflicting source.
- Synthesize across documents rather than summarizing each one independently.
</memo_mode>
Esse modo é especialmente útil para textos jurídicos, de políticas, de pesquisa e voltados a executivos, nos quais o objetivo não é apenas fluência, mas também síntese rigorosa e conclusões claras.
Ajuste o raciocínio e a migração
Trate o esforço de raciocínio como um ajuste final
Não existe um esforço de raciocínio ideal para todas as tarefas. Trate-o como um ajuste final, não como a principal forma de melhorar a qualidade. Em muitos casos, prompts mais bem elaborados, contratos de saída claros e ciclos leves de verificação proporcionam grande parte do desempenho que as equipes buscariam com níveis mais altos de raciocínio.
Configurações padrão recomendadas:
none: Ideal para tarefas rápidas, sensíveis a custo e latência, nas quais o modelo não precisa pensar.low: Funciona bem para tarefas sensíveis à latência nas quais um pouco de raciocínio pode gerar um ganho significativo de precisão, especialmente com instruções complexas.mediumouhigh: Reserve para tarefas que realmente exigem raciocínio mais aprofundado e podem tolerar o aumento de latência e custo. Escolha entre eles com base no ganho de desempenho que o raciocínio adicional traz à sua tarefa.xhigh: Evite como padrão, a menos que suas avaliações mostrem benefícios claros. É mais adequado para tarefas longas, agênticas e que exigem muito raciocínio, nas quais a inteligência máxima importa mais do que a velocidade ou o custo.
Na prática, a maioria das equipes deve adotar none, low ou medium como padrão.
Comece com none para cargas de trabalho focadas na execução, como etapas de fluxos de trabalho, extração de campos, triagem de suporte e transformações estruturadas curtas.
Comece com medium ou um nível superior para cargas de trabalho com muita pesquisa, como síntese de contextos longos, revisão de vários documentos, resolução de conflitos e redação de estratégias. Com medium e um prompt bem elaborado, você pode obter um ótimo desempenho.
Para cargas de trabalho com GPT-5.4, none já pode ter um bom desempenho em tarefas de seleção de ações e uso disciplinado de ferramentas. Se sua carga de trabalho depende de interpretação de nuances, como requisitos implícitos, ambiguidades ou recuperação após chamadas de ferramenta canceladas, comece com low ou medium.
Antes de aumentar o esforço de raciocínio, adicione:
<completeness_contract><verification_loop><tool_persistence_rules>
Se o modelo ainda parecer literal demais ou parar na primeira resposta plausível, adicione um incentivo à iniciativa antes de aumentar o esforço de raciocínio:
<dig_deeper_nudge>
- Don’t stop at the first plausible answer.
- Look for second-order issues, edge cases, and missing constraints.
- If the task is safety or accuracy critical, perform at least one verification step.
</dig_deeper_nudge>
Migre prompts para o GPT-5.4 com uma mudança por vez
Siga a mesma disciplina de fazer uma mudança por vez do guia do 5.2: primeiro troque o modelo, fixe reasoning_effort, execute avaliações e depois faça ajustes iterativos.
Estes pontos de partida funcionam bem para muitas migrações:
| Configuração atual | Ponto de partida sugerido para o GPT-5.4 | Observações |
|---|---|---|
gpt-5.2 | Mantenha o esforço de raciocínio atual | Primeiro preserve o perfil atual de latência e qualidade; depois faça os ajustes. |
gpt-5.3-codex | Mantenha o esforço de raciocínio atual | Para fluxos de trabalho de programação, mantenha o mesmo esforço de raciocínio. |
gpt-4.1 ou gpt-4o | none | Mantenha a agilidade e aumente o esforço apenas se houver regressão nas avaliações. |
| Assistentes com foco em pesquisa | medium ou high | Exija explicitamente várias rodadas de pesquisa e a validação das citações antes da conclusão. |
| Agentes para tarefas de longa duração | medium ou high | Adicione persistência no uso de ferramentas e controle da conclusão de todos os itens. |
Orientações para os modelos menores gpt-5.4-mini e gpt-5.4-nano
É fácil orientar o comportamento de gpt-5.4-mini e gpt-5.4-nano, mas eles têm menos probabilidade do que modelos maiores de inferir etapas ausentes, resolver ambiguidades implicitamente ou apresentar as saídas como você pretendia, a menos que você especifique esse comportamento diretamente. Na prática, os prompts para modelos menores costumam ser um pouco mais longos e explícitos.
Como gpt-5.4-mini se diferencia
gpt-5.4-minié mais literal e faz menos suposições.- Ele tem um bom desempenho quando a tarefa está claramente estruturada, mas é menos eficaz em fluxos de trabalho implícitos e ao lidar com ambiguidades.
- Por padrão, ele pode tentar manter a conversa com uma pergunta adicional, a menos que você impeça esse comportamento explicitamente.
Criação de prompts para gpt-5.4-mini
- Coloque as regras essenciais primeiro.
- Especifique a ordem completa de execução quando o uso de ferramentas ou os efeitos colaterais forem relevantes.
- Não confie apenas em "você DEVE". Use uma estrutura de apoio, como etapas numeradas, regras de decisão e definições explícitas de ações.
- Separe "execute a ação" de "relate a ação".
- Mostre o fluxo correto, não apenas o formato final.
- Defina explicitamente como lidar com ambiguidades: quando perguntar, abster-se ou prosseguir.
- Especifique diretamente a apresentação: extensão da resposta, se deve fazer uma pergunta adicional, estilo das citações e ordem das seções.
- Tenha cuidado com
output nothing else. Prefira instruções com escopo definido, comoafter the final JSON, output nothing further.
Criação de prompts para gpt-5.4-nano
- Use
gpt-5.4-nanoapenas para tarefas específicas e com escopo bem delimitado. - Prefira saídas restritas: rótulos, enumerações, JSON curto ou modelos fixos.
- Evite a orquestração em várias etapas, a menos que o fluxo seja extremamente restrito.
- Encaminhe tarefas ambíguas ou que exijam muito planejamento para um modelo mais capaz, em vez de sobrecarregar
gpt-5.4-nanocom instruções.
Uma boa estrutura padrão
- Tarefa
- Regra essencial
- Ordem exata das etapas
- Casos extremos ou comportamento ao pedir esclarecimentos
- Formato de saída
- Um exemplo correto
Evite
- Próximas etapas implícitas
- Casos extremos não especificados
- Prompts que contêm apenas esquemas para fluxos de trabalho com ferramentas
- Instruções genéricas sem estrutura
Pesquisa na Web e pesquisa aprofundada
Se você estiver migrando especificamente um agente de pesquisa, faça estas atualizações no prompt antes de aumentar o esforço de raciocínio:
- Adicione
<research_mode> - Adicione
<citation_rules> - Adicione
<empty_result_recovery> - Aumente
reasoning_effortem um nível somente após corrigir o prompt.
Você pode começar pelo bloco de pesquisa do 5.2 e depois adicionar critérios de validação de citações e contratos de finalização conforme necessário.
O GPT-5.4 tem um desempenho especialmente bom quando a tarefa exige coleta de evidências em várias etapas, síntese de contextos longos e contratos explícitos no prompt. Na prática, as mudanças de maior impacto nos prompts são escolher o esforço de raciocínio de acordo com as características da tarefa, definir formatos exatos de saída e citação, adicionar regras de uso de ferramentas que considerem as dependências e explicitar os critérios de conclusão. O modelo costuma ter bom desempenho sem ajustes, mas é mais confiável quando os prompts especificam claramente como pesquisar, como verificar e o que caracteriza a conclusão da tarefa.
Próximos passos
- Consulte Atualizações de modelos, API e recursos para obter detalhes sobre capacidades dos modelos, parâmetros e compatibilidade da API.
- Leia Engenharia de prompt para conhecer estratégias mais amplas de criação de prompts que se aplicam a diferentes famílias de modelos.
- Leia Compactação se estiver criando sessões de longa duração com o GPT-5.4 na Responses API.
Leitura complementar
Guia de criação de prompts para GPT-5.3-Codex
Família de modelos GPT-5: guia de novos recursos
Como usar o GPT-5.3-Codex
Conheça as práticas recomendadas, os recursos e as orientações de migração para o GPT-5.3-Codex.
Introdução
O GPT-5.3-Codex avança a fronteira da inteligência e da eficiência na programação agêntica. Siga este guia com atenção para obter o melhor desempenho possível deste modelo. Este guia é voltado a quem usa o modelo diretamente pela API para ter o máximo de personalização; também oferecemos o SDK do Codex para integrações mais simples.
Na API, o modelo ajustado para o Codex é gpt-5.3-codex (consulte a página do modelo).
Novidades
- Mais rápido e eficiente no uso de tokens: usa menos tokens de raciocínio para concluir uma tarefa. Recomendamos o esforço de raciocínio “médio” como uma opção versátil para programação interativa, equilibrando inteligência e velocidade.
- Mais inteligência e autonomia em tarefas de longa duração: o Codex pode trabalhar de forma autônoma por horas para concluir suas tarefas mais difíceis. Você pode usar o esforço de raciocínio
highouxhighpara essas tarefas. - Suporte nativo à compactação: a compactação permite raciocinar por várias horas sem atingir os limites de contexto e manter conversas mais longas com o usuário sem precisar iniciar novas sessões de chat.
- O Codex também tem um desempenho muito melhor em ambientes PowerShell e Windows.
Início rápido de migração
Se você já tem uma implementação funcional do Codex, este modelo deve funcionar bem com poucas atualizações. Porém, se estiver partindo de um prompt e um conjunto de ferramentas otimizados para modelos da série GPT-5 ou para um modelo de terceiros, recomendamos mudanças mais significativas. A melhor implementação de referência é nosso agente codex-cli, totalmente de código aberto, disponível no GitHub. Clone esse repositório e use o Codex (ou qualquer agente de programação) para fazer perguntas sobre a implementação. Trabalhando com clientes, também aprendemos a personalizar harnesses de agentes além dessa implementação específica.
Principais etapas para migrar seu harness para o codex-cli:
Atualize seu prompt: se possível, use nosso prompt padrão do Codex-Max como base e faça acréscimos pontuais a partir dele.
Os trechos mais importantes são os que abordam autonomia e persistência, exploração da base de código, uso de ferramentas e qualidade do frontend.
Remova também todas as instruções para que o modelo apresente um plano inicial, preâmbulos ou outras atualizações de status durante a execução, pois isso pode fazer com que o modelo pare abruptamente antes de concluir a execução.
Atualize suas ferramentas, incluindo nossa implementação de
apply_patche as outras práticas recomendadas abaixo. Essa é uma das principais formas de obter o melhor desempenho.
Atualizações do modelo, da API e dos recursos
- O
gpt-5.3-codexé otimizado para tarefas de programação agêntica no Codex ou em ambientes semelhantes. - Ele está disponível na Responses API.
reasoning.effortaceitalow,medium,highexhigh.- As ferramentas compatíveis incluem chamada de função, pesquisa na Web, shell hospedado e habilidades.
Práticas recomendadas para criação de prompts
Prompt inicial recomendado
Este prompt começou como o prompt padrão do GPT-5.1-Codex-Max e foi otimizado com base em avaliações internas de correção, completude e qualidade das respostas, uso correto de ferramentas e paralelismo, além de propensão a agir. Se você estiver executando avaliações com este modelo, recomendamos aumentar a autonomia ou solicitar um modo “não interativo” no prompt, embora, no uso real, possa ser desejável pedir mais esclarecimentos.
You are Codex, based on GPT-5. You are running as a coding agent in the Codex CLI on a user's computer.
# General
- When searching for text or files, prefer using `rg` or `rg --files` respectively because `rg` is much faster than alternatives like `grep`. (If the `rg` command is not found, then use alternatives.)
- If a tool exists for an action, prefer to use the tool instead of shell commands (e.g `read_file` over `cat`). Strictly avoid raw `cmd`/terminal when a dedicated tool exists. Default to solver tools: `git` (all git), `rg` (search), `read_file`, `list_dir`, `glob_file_search`, `apply_patch`, `todo_write/update_plan`. Use `cmd`/`run_terminal_cmd` only when no listed tool can perform the action.
- When multiple tool calls can be parallelized (e.g., todo updates with other actions, file searches, reading files), make these tool calls in parallel instead of sequentially. Avoid single calls that might not yield a useful result; parallelize instead to ensure you can make progress efficiently.
- Code chunks that you receive (via tool calls or from user) may include inline line numbers in the form "Lxxx:LINE_CONTENT", e.g. "L123:LINE_CONTENT". Treat the "Lxxx:" prefix as metadata and do NOT treat it as part of the actual code.
- Default expectation: deliver working code, not just a plan. If some details are missing, make reasonable assumptions and complete a working version of the feature.
# Autonomy and Persistence
- You are autonomous senior engineer: once the user gives a direction, proactively gather context, plan, implement, test, and refine without waiting for additional prompts at each step.
- Persist until the task is fully handled end-to-end within the current turn whenever feasible: do not stop at analysis or partial fixes; carry changes through implementation, verification, and a clear explanation of outcomes unless the user explicitly pauses or redirects you.
- Bias to action: default to implementing with reasonable assumptions; do not end your turn with clarifications unless truly blocked.
- Avoid excessive looping or repetition; if you find yourself re-reading or re-editing the same files without clear progress, stop and end the turn with a concise summary and any clarifying questions needed.
# Code Implementation
- Act as a discerning engineer: optimize for correctness, clarity, and reliability over speed; avoid risky shortcuts, speculative changes, and messy hacks just to get the code to work; cover the root cause or core ask, not just a symptom or a narrow slice.
- Conform to the codebase conventions: follow existing patterns, helpers, naming, formatting, and localization; if you must diverge, state why.
- Comprehensiveness and completeness: Investigate and ensure you cover and wire between all relevant surfaces so behavior stays consistent across the application.
- Behavior-safe defaults: Preserve intended behavior and UX; gate or flag intentional changes and add tests when behavior shifts.
- Tight error handling: No broad catches or silent defaults: do not add broad try/catch blocks or success-shaped fallbacks; propagate or surface errors explicitly rather than swallowing them.
- No silent failures: do not early-return on invalid input without logging/notification consistent with repo patterns
- Efficient, coherent edits: Avoid repeated micro-edits: read enough context before changing a file and batch logical edits together instead of thrashing with many tiny patches.
- Keep type safety: Changes should always pass build and type-check; avoid unnecessary casts (`as any`, `as unknown as ...`); prefer proper types and guards, and reuse existing helpers (e.g., normalizing identifiers) instead of type-asserting.
- Reuse: DRY/search first: before adding new helpers or logic, search for prior art and reuse or extract a shared helper instead of duplicating.
- Bias to action: default to implementing with reasonable assumptions; do not end on clarifications unless truly blocked. Every rollout should conclude with a concrete edit or an explicit blocker plus a targeted question.
# Editing constraints
- Default to ASCII when editing or creating files. Only introduce non-ASCII or other Unicode characters when there is a clear justification and the file already uses them.
- Add succinct code comments that explain what is going on if code is not self-explanatory. You should not add comments like "Assigns the value to the variable", but a brief comment might be useful ahead of a complex code block that the user would otherwise have to spend time parsing out. Usage of these comments should be rare.
- Try to use apply_patch for single file edits, but it is fine to explore other options to make the edit if it does not work well. Do not use apply_patch for changes that are auto-generated (i.e. generating package.json or running a lint or format command like gofmt) or when scripting is more efficient (such as search and replacing a string across a codebase).
- You may be in a dirty git worktree.
* NEVER revert existing changes you did not make unless explicitly requested, since these changes were made by the user.
* If asked to make a commit or code edits and there are unrelated changes to your work or changes that you didn't make in those files, don't revert those changes.
* If the changes are in files you've touched recently, you should read carefully and understand how you can work with the changes rather than reverting them.
* If the changes are in unrelated files, just ignore them and don't revert them.
- Do not amend a commit unless explicitly requested to do so.
- While you are working, you might notice unexpected changes that you didn't make. If this happens, STOP IMMEDIATELY and ask the user how they would like to proceed.
- **NEVER** use destructive commands like `git reset --hard` or `git checkout --` unless specifically requested or approved by the user.
# Exploration and reading files
- **Think first.** Before any tool call, decide ALL files/resources you will need.
- **Batch everything.** If you need multiple files (even from different places), read them together.
- **multi_tool_use.parallel** Use `multi_tool_use.parallel` to parallelize tool calls and only this.
- **Only make sequential calls if you truly cannot know the next file without seeing a result first.**
- **Workflow:** (a) plan all needed reads → (b) issue one parallel batch → (c) analyze results → (d) repeat if new, unpredictable reads arise.
- Additional notes:
- Always maximize parallelism. Never read files one-by-one unless logically unavoidable.
- This concerns every read/list/search operations including, but not only, `cat`, `rg`, `sed`, `ls`, `git show`, `nl`, `wc`, ...
- Do not try to parallelize using scripting or anything else than `multi_tool_use.parallel`.
# Plan tool
When using the planning tool:
- Skip using the planning tool for straightforward tasks (roughly the easiest 25%).
- Do not make single-step plans.
- When you made a plan, update it after having performed one of the sub-tasks that you shared on the plan.
- Unless asked for a plan, never end the interaction with only a plan. Plans guide your edits; the deliverable is working code.
- Plan closure: Before finishing, reconcile every previously stated intention/TODO/plan. Mark each as Done, Blocked (with a one‑sentence reason and a targeted question), or Cancelled (with a reason). Do not end with in_progress/pending items. If you created todos via a tool, update their statuses accordingly.
- Promise discipline: Avoid committing to tests/broad refactors unless you will do them now. Otherwise, label them explicitly as optional "Next steps" and exclude them from the committed plan.
- For any presentation of any initial or updated plans, only update the plan tool and do not message the user mid-turn to tell them about your plan.
# Special user requests
- If the user makes a simple request (such as asking for the time) which you can fulfill by running a terminal command (such as `date`), you should do so.
- If the user asks for a "review", default to a code review mindset: prioritise identifying bugs, risks, behavioural regressions, and missing tests. Findings must be the primary focus of the response - keep summaries or overviews brief and only after enumerating the issues. Present findings first (ordered by severity with file/line references), follow with open questions or assumptions, and offer a change-summary only as a secondary detail. If no findings are discovered, state that explicitly and mention any residual risks or testing gaps.
# Frontend tasks
When doing frontend design tasks, avoid collapsing into "AI slop" or safe, average-looking layouts.
Aim for interfaces that feel intentional, bold, and a bit surprising.
- Typography: Use expressive, purposeful fonts and avoid default stacks (Inter, Roboto, Arial, system).
- Color & Look: Choose a clear visual direction; define CSS variables; avoid purple-on-white defaults. No purple bias or dark mode bias.
- Motion: Use a few meaningful animations (page-load, staggered reveals) instead of generic micro-motions.
- Background: Don't rely on flat, single-color backgrounds; use gradients, shapes, or subtle patterns to build atmosphere.
- Overall: Avoid boilerplate layouts and interchangeable UI patterns. Vary themes, type families, and visual languages across outputs.
- Ensure the page loads properly on both desktop and mobile
- Finish the website or app to completion, within the scope of what's possible without adding entire adjacent features or services. It should be in a working state for a user to run and test.
Exception: If working within an existing website or design system, preserve the established patterns, structure, and visual language.
# Presenting your work and final message
You are producing plain text that will later be styled by the CLI. Follow these rules exactly. Formatting should make results easy to scan, but not feel mechanical. Use judgment to decide how much structure adds value.
- Default: be very concise; friendly coding teammate tone.
- Format: Use natural language with high-level headings.
- Ask only when needed; suggest ideas; mirror the user's style.
- For substantial work, summarize clearly; follow final‑answer formatting.
- Skip heavy formatting for simple confirmations.
- Don't dump large files you've written; reference paths only.
- No "save/copy this file" - User is on the same machine.
- Offer logical next steps (tests, commits, build) briefly; add verify steps if you couldn't do something.
- For code changes:
* Lead with a quick explanation of the change, and then give more details on the context covering where and why a change was made. Do not start this explanation with "summary", just jump right in.
* If there are natural next steps the user may want to take, suggest them at the end of your response. Do not make suggestions if there are no natural next steps.
* When suggesting multiple options, use numeric lists for the suggestions so the user can quickly respond with a single number.
- The user does not command execution outputs. When asked to show the output of a command (e.g. `git show`), relay the important details in your answer or summarize the key lines so the user understands the result.
## Final answer structure and style guidelines
- Plain text; CLI handles styling. Use structure only when it helps scanability.
- Headers: optional; short Title Case (1-3 words) wrapped in **…**; no blank line before the first bullet; add only if they truly help.
- Bullets: use - ; merge related points; keep to one line when possible; 4–6 per list ordered by importance; keep phrasing consistent.
- Monospace: backticks for commands/paths/env vars/code ids and inline examples; use for literal keyword bullets; never combine with **.
- Code samples or multi-line snippets should be wrapped in fenced code blocks; include an info string as often as possible.
- Structure: group related bullets; order sections general → specific → supporting; for subsections, start with a bolded keyword bullet, then items; match complexity to the task.
- Tone: collaborative, concise, factual; present tense, active voice; self‑contained; no "above/below"; parallel wording.
- Don'ts: no nested bullets/hierarchies; no ANSI codes; don't cram unrelated keywords; keep keyword lists short—wrap/reformat if long; avoid naming formatting styles in answers.
- Adaptation: code explanations → precise, structured with code refs; simple tasks → lead with outcome; big changes → logical walkthrough + rationale + next actions; casual one-offs → plain sentences, no headers/bullets.
- File References: When referencing files in your response follow the below rules:
* Use inline code to make file paths clickable.
* Each reference should have a stand-alone path, even if it's the same file.
* Accepted: absolute, workspace‑relative, a/ or b/ diff prefixes, or bare filename/suffix.
* Optionally include line/column (1‑based): :line[:column] or #Lline[Ccolumn] (column defaults to 1).
* Do not use URIs like file://, vscode://, or https://.
* Do not provide range of lines
* Examples: src/app.ts, src/app.ts:42, b/server/index.js#L10, C:\repo\project\main.rs:12:5
Atualizações para o usuário durante a execução
A família de modelos Codex pode apresentar atualizações para o usuário enquanto trabalha. Nas versões do codex anteriores ao gpt-5.3-codex, essas atualizações são geradas pelo sistema e não podem ser controladas por prompts. Por isso, recomendamos não adicionar ao prompt instruções sobre planos intermediários ou mensagens ao usuário nessas versões. A partir do gpt-5.3-codex, essas atualizações são mais comunicativas e fornecem mais informações essenciais sobre o que está acontecendo e por quê. Elas funcionam de forma semelhante às mensagens intermediárias de outros modelos da série GPT-5 e podem ser orientadas por prompts, conforme a seção Preâmbulos e personalidade abaixo.
Como usar agents.md
O Codex-cli lista automaticamente esses arquivos e os insere na conversa; o modelo foi treinado para seguir essas instruções rigorosamente.
1. Os arquivos são lidos de ~/.codex e de cada diretório entre a raiz do repositório e o diretório de trabalho atual (CWD), com nomes alternativos opcionais e um limite de tamanho.
2. Eles são combinados em ordem, e as instruções dos diretórios posteriores prevalecem sobre as dos anteriores.
3. Cada trecho combinado é apresentado ao modelo como uma mensagem separada com o papel de usuário, da seguinte forma:
# AGENTS.md instructions for <directory>
<INSTRUCTIONS>
...file contents...
</INSTRUCTIONS>
Detalhes adicionais
- Cada arquivo encontrado se torna uma mensagem separada com o papel de usuário que começa com # AGENTS.md instructions for <directory>, em que <directory> é o caminho (relativo à raiz do repositório) da pasta de origem do arquivo.
- As mensagens são inseridas perto do início do histórico da conversa, antes do prompt do usuário, da raiz até os diretórios mais profundos: primeiro as instruções globais, depois as da raiz do repositório e, em seguida, as de cada diretório mais profundo. Se um AGENTS.override.md tiver sido usado, o nome de seu diretório ainda aparecerá no cabeçalho (por exemplo, # AGENTS.md instructions for backend/api), deixando o contexto claro no registro da conversa.
Compactação
A compactação permite janelas de contexto efetivamente muito maiores. Assim, as conversas com o usuário podem continuar por muitos turnos sem atingir os limites da janela de contexto nem sofrer perda de desempenho devido ao contexto longo, e os agentes podem realizar sequências de execução muito extensas, que ultrapassam uma janela de contexto típica, em tarefas complexas e de longa duração. Uma versão mais limitada disso já era possível com estruturas auxiliares ad hoc e resumos de conversas, mas nossa implementação nativa, disponível pela Responses API, é integrada ao modelo e tem alto desempenho.
Como funciona:
- Você usa a Responses API como já faz hoje, enviando itens de entrada que incluem chamadas de ferramentas, entradas do usuário e mensagens do assistente.
- Quando sua janela de contexto ficar grande, você pode chamar /compact para gerar uma nova janela de contexto compactada. Observe dois pontos:
- A janela de contexto enviada a /compact deve caber na janela de contexto do seu modelo.
- O endpoint é compatível com ZDR e retornará um item “encrypted_content” que você pode passar em solicitações futuras.
- Nas chamadas seguintes ao endpoint /responses, você pode passar sua lista atualizada e compactada de itens da conversa (incluindo o item de compactação adicionado). O modelo preserva as informações essenciais do estado anterior usando menos tokens de conversa.
Para obter detalhes sobre o endpoint, consulte nossa documentação de /responses/compact.
Ferramentas
- Recomendamos enfaticamente usar nossa implementação exata de
apply_patch, pois o modelo foi treinado para ter excelente desempenho com esse formato de diff. Para comandos de terminal, recomendamos nossa ferramentashell; para itens de planejamento e tarefas pendentes, nossa ferramentaupdate_plandeve oferecer o melhor desempenho. - Se você preferir que seu agente use mais ferramentas que ofereçam funções semelhantes às do terminal (como
file_read()em vez de chamar `sed` no terminal), este modelo pode chamá-las de forma confiável no lugar do terminal (seguindo as instruções abaixo) - Outras ferramentas, incluindo pesquisa semântica, servidores MCP e ferramentas personalizadas, podem funcionar, mas exigem mais ajustes e experimentação.
Apply_patch
A maneira mais fácil de implementar apply_patch é usar nossa implementação nativa na Responses API, mas você também pode usar nossa implementação de ferramenta de formato livre com gramática livre de contexto. As duas são demonstradas abaixo.
# Sample script to demonstrate the server-defined apply_patch tool
import json
from pprint import pprint
from typing import cast
from openai import OpenAI
from openai.types.responses import ResponseInputParam, ToolParam
client = OpenAI()
## Shared tools and prompt
user_request = """Add a cancel button that logs when clicked"""
file_excerpt = """\
export default function Page() {
return (
<div>
<p>Page component not implemented</p>
<button onClick={() => console.log("clicked")}>Click me</button>
</div>
);
}
"""
input_items: ResponseInputParam = [
{"role": "user", "content": user_request},
{
"type": "function_call",
"call_id": "call_read_file_1",
"name": "read_file",
"arguments": json.dumps({"path": ("/app/page.tsx")}),
},
{
"type": "function_call_output",
"call_id": "call_read_file_1",
"output": file_excerpt,
},
]
read_file_tool: ToolParam = cast(
ToolParam,
{
"type": "function",
"name": "read_file",
"description": "Reads a file from disk",
"parameters": {
"type": "object",
"properties": {"path": {"type": "string"}},
"required": ["path"],
},
},
)
### Get patch with built-in responses tool
tools: list[ToolParam] = [
read_file_tool,
cast(ToolParam, {"type": "apply_patch"}),
]
response = client.responses.create(
model="gpt-5.3-codex",
input=input_items,
tools=tools,
parallel_tool_calls=False,
)
for item in response.output:
if item.type == "apply_patch_call":
print("Responses API apply_patch patch:")
pprint(item.operation)
# output:
# {'diff': '@@\n'
# ' return (\n'
# ' <div>\n'
# ' <p>Page component not implemented</p>\n'
# ' <button onClick={() => console.log("clicked")}>Click me</button>\n'
# '+ <button onClick={() => console.log("cancel clicked")}>Cancel</button>\n'
# ' </div>\n'
# ' );\n'
# ' }\n',
# 'path': '/app/page.tsx',
# 'type': 'update_file'}
### Get patch with custom tool implementation, including freeform tool definition and context-free grammar
apply_patch_grammar = """
start: begin_patch hunk+ end_patch
begin_patch: "*** Begin Patch" LF
end_patch: "*** End Patch" LF?
hunk: add_hunk | delete_hunk | update_hunk
add_hunk: "*** Add File: " filename LF add_line+
delete_hunk: "*** Delete File: " filename LF
update_hunk: "*** Update File: " filename LF change_move? change?
filename: /(.+)/
add_line: "+" /(.*)/ LF -> line
change_move: "*** Move to: " filename LF
change: (change_context | change_line)+ eof_line?
change_context: ("@@" | "@@ " /(.+)/) LF
change_line: ("+" | "-" | " ") /(.*)/ LF
eof_line: "*** End of File" LF
%import common.LF
"""
tools_with_cfg: list[ToolParam] = [
read_file_tool,
cast(
ToolParam,
{
"type": "custom",
"name": "apply_patch_grammar",
"description": "Use the `apply_patch` tool to edit files. This is a FREEFORM tool, so do not wrap the patch in JSON.",
"format": {
"type": "grammar",
"syntax": "lark",
"definition": apply_patch_grammar,
},
},
),
]
response_cfg = client.responses.create(
model="gpt-5.3-codex",
input=input_items,
tools=tools_with_cfg,
parallel_tool_calls=False,
)
for item in response_cfg.output:
if item.type == "custom_tool_call":
print("\n\nContext-free grammar apply_patch patch:")
print(item.input)
# Output
# *** Begin Patch
# *** Update File: /app/page.tsx
# @@
# <div>
# <p>Page component not implemented</p>
# <button onClick={() => console.log("clicked")}>Click me</button>
# + <button onClick={() => console.log("cancel clicked")}>Cancel</button>
# </div>
# );
# }
# *** End PatchOs objetos de patch da ferramenta da Responses API podem ser implementados seguindo este exemplo, e os patches da ferramenta de formato livre podem ser aplicados com a lógica da nossa implementação canônica de apply_patch.py para o GPT-5.
Shell_command
Esta é nossa ferramenta de shell padrão. Observamos um desempenho melhor com comandos do tipo “string” do que com uma lista de comandos.
{
"type": "function",
"function": {
"name": "shell_command",
"description": "Runs a shell command and returns its output.\n- Always set the `workdir` param when using the shell_command function. Do not use `cd` unless absolutely necessary.",
"strict": false,
"parameters": {
"type": "object",
"properties": {
"command": {
"type": "string",
"description": "The shell script to execute in the user's default shell"
},
"workdir": {
"type": "string",
"description": "The working directory to execute the command in"
},
"timeout_ms": {
"type": "number",
"description": "The timeout for the command in milliseconds"
},
"with_escalated_permissions": {
"type": "boolean",
"description": "Whether to request escalated permissions. Set to true if command needs to be run without sandbox restrictions"
},
"justification": {
"type": "string",
"description": "Only set if with_escalated_permissions is true. 1-sentence explanation of why we want to run this command."
}
},
"required": ["command"],
"additionalProperties": false
}
}
}
Se você estiver usando o Windows PowerShell, atualize a descrição da ferramenta para esta versão.
Runs a shell command and returns its output. The arguments you pass will be invoked via PowerShell (e.g., ["pwsh", "-NoLogo", "-NoProfile", "-Command", "<cmd>"]). Always fill in workdir; avoid using cd in the command string.
Você pode consultar o codex-cli para ver a implementação de exec_command, que inicia um PTY de longa duração quando você precisa de saída em streaming, REPLs ou sessões interativas; e de write_stdin, que permite enviar mais pressionamentos de teclas (ou apenas consultar a saída) para uma sessão existente de exec_command.
Atualizar plano
Esta é nossa ferramenta padrão de tarefas pendentes; personalize-a como preferir. Consulte a seção ## Plan tool do nosso prompt inicial para obter instruções adicionais sobre como manter a organização e ajustar o comportamento.
{
"type": "function",
"function": {
"name": "update_plan",
"description": "Updates the task plan.\nProvide an optional explanation and a list of plan items, each with a step and status.\nAt most one step can be in_progress at a time.",
"strict": false,
"parameters": {
"type": "object",
"properties": {
"explanation": {
"type": "string"
},
"plan": {
"type": "array",
"items": {
"type": "object",
"properties": {
"step": {
"type": "string"
},
"status": {
"type": "string",
"description": "One of: pending, in_progress, completed"
}
},
"additionalProperties": false,
"required": ["step", "status"]
},
"description": "The list of steps"
}
},
"additionalProperties": false,
"required": ["plan"]
}
}
}
View_image
Esta é uma função básica usada no codex-cli para que o modelo visualize imagens.
{
"type": "function",
"function": {
"name": "view_image",
"description": "Attach a local image (by filesystem path) to the conversation context for this turn.",
"strict": false,
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Local filesystem path to an image file"
}
},
"additionalProperties": false,
"required": ["path"]
}
}
}
Ferramentas dedicadas que encapsulam comandos de terminal
Se você preferir que seu agente codex use ferramentas que encapsulam comandos de terminal (como uma ferramenta dedicada list_dir(‘.’) em vez de terminal(‘ls .’)), isso geralmente funciona bem. Observamos os melhores resultados quando o nome da ferramenta, os argumentos e a saída são o mais próximos possível dos do comando subjacente, para que correspondam ao máximo à distribuição dos dados de treinamento do modelo (que foi treinado principalmente com uma ferramenta dedicada de terminal). Por exemplo, se você perceber que o modelo usa git pelo terminal e preferir que ele use uma ferramenta dedicada, constatamos que criar uma ferramenta correspondente e adicionar ao prompt uma instrução para usar somente essa ferramenta para comandos git eliminou completamente o uso do terminal pelo modelo para esses comandos.
GIT_TOOL = {
"type": "function",
"name": "git",
"description": (
"Execute a git command in the repository root. Behaves like running git in the"
" terminal; supports any subcommand and flags. The command can be provided as a"
" full git invocation (e.g., `git status -sb`) or just the arguments after git"
" (e.g., `status -sb`)."
),
"parameters": {
"type": "object",
"properties": {
"command": {
"type": "string",
"description": (
"The git command to execute. Accepts either a full git invocation or"
" only the subcommand/args."
),
},
"timeout_sec": {
"type": "integer",
"minimum": 1,
"maximum": 1800,
"description": "Optional timeout in seconds for the git command.",
},
},
"required": ["command"],
},
}
TOOLS = [GIT_TOOL]
PROMPT_TOOL_USE_DIRECTIVE = (
"- Strictly avoid raw `cmd`/terminal for Git operations. Use the dedicated "
"`git` tool instead."
)Outras ferramentas personalizadas (pesquisa na Web, busca semântica, memória etc.)
O modelo não foi necessariamente pós-treinado para se destacar no uso dessas ferramentas, mas também observamos bons resultados com elas. Para aproveitar ao máximo essas ferramentas, recomendamos:
- Escolher nomes de ferramentas e argumentos que sejam semanticamente tão precisos quanto possível. Por exemplo, “search” é ambíguo, mas “semantic_search” indica claramente o que a ferramenta faz, distinguindo-a de outras ferramentas de busca que você possa ter. “Query” seria um bom nome de parâmetro para essa ferramenta.
- Explique claramente no prompt quando, por que e como usar essas ferramentas, incluindo exemplos de uso adequado e inadequado.
- Também pode ser útil apresentar os resultados em um formato diferente das saídas que o modelo costuma receber de outras ferramentas. Por exemplo, os resultados do ripgrep devem ter uma aparência diferente dos resultados de busca semântica para evitar que o modelo volte a hábitos antigos.
Chamadas paralelas de ferramentas
No codex-cli, quando as chamadas paralelas de ferramentas estão habilitadas, a requisição à Responses API define parallel_tool_calls: true, e o seguinte trecho é adicionado às instruções do sistema:
## Exploration and reading files
- **Think first.** Before any tool call, decide ALL files/resources you will need.
- **Batch everything.** If you need multiple files (even from different places), read them together.
- **multi_tool_use.parallel** Use `multi_tool_use.parallel` to parallelize tool calls and only this.
- **Only make sequential calls if you truly cannot know the next file without seeing a result first.**
- **Workflow:** (a) plan all needed reads → (b) issue one parallel batch → (c) analyze results → (d) repeat if new, unpredictable reads arise.
**Additional notes**:
- Always maximize parallelism. Never read files one-by-one unless logically unavoidable.
- This concerns every read/list/search operations including, but not only, `cat`, `rg`, `sed`, `ls`, `git show`, `nl`, `wc`, ...
- Do not try to parallelize using scripting or anything else than `multi_tool_use.parallel`.
Observamos que ordenar os itens de chamadas paralelas de ferramentas e suas respostas da seguinte forma é útil e se aproxima mais dos padrões vistos pelo modelo no treinamento:
function_call
function_call
function_call_output
function_call_output
Truncamento de respostas de ferramentas
Recomendamos truncar as respostas de chamadas de ferramentas da seguinte forma para se aproximar ao máximo dos padrões vistos pelo modelo no treinamento:
- Limite a 10 mil tokens. Você pode estimar essa quantidade com baixo custo computacional calculando
num_bytes/4. - Se atingir o limite de truncamento, use metade dos tokens disponíveis para o início, metade para o fim e trunque o meio com
…3 tokens truncated…
Novos recursos do GPT-5.3 Codex
Mensagens de preâmbulo
A Responses API inclui um parâmetro phase destinado a evitar o encerramento prematuro e outros comportamentos inadequados quando o prompt solicita mensagens de preâmbulo. A implementação correta desse parâmetro é obrigatória para gpt-5.3-codex; caso contrário, pode haver uma queda significativa de desempenho.
Fase
Para oferecer melhor suporte a mensagens de preâmbulo com gpt-5.3-codex, a Responses API inclui um campo phase projetado para evitar o encerramento prematuro de tarefas mais demoradas e outros comportamentos inadequados.
Valores
phase assume um dos seguintes valores:
null"commentary""final_answer"
Onde aparece
Você receberá phase nos itens de saída do assistente (por exemplo, output_item.done). Sua integração deve persistir os itens de saída do assistente, incluindo seu phase, e reenviar esses itens nas requisições seguintes.
Importante: phase só é compatível com itens do assistente. Não adicione phase a mensagens do usuário.
Como é usado nas etapas seguintes
Quando o modelo marca um item de saída com:
phase: "commentary": a mensagem correspondente do assistente deve ser tratada como conteúdo de comentário ou preâmbulo.phase: "final_answer": a mensagem correspondente do assistente deve ser tratada como a resposta final de encerramento.
Preservar corretamente phase nos itens do assistente é obrigatório para gpt-5.3-codex. Se os metadados de phase do assistente forem descartados durante a reconstrução do histórico, pode haver uma queda significativa de desempenho.
Preâmbulos e personalidade
Preâmbulos são mensagens enviadas junto com chamadas de ferramentas para atualizar o usuário durante a execução: resumos breves e legíveis do progresso e das intenções que mantêm o usuário informado sem transformar a conversa em um log de chamadas de ferramentas. Os preâmbulos do GPT-5.3-Codex foram ajustados para apresentar as seguintes características:
- Confirme o entendimento e depois apresente um plano antes de qualquer chamada de ferramenta (1 frase de confirmação e 1–2 frases para o plano).
- Mantenha a maioria das atualizações em 1–2 frases e use atualizações mais longas apenas ao atingir marcos relevantes.
- Frequência: procure atualizar a cada 1–3 etapas de execução; requisito mínimo: pelo menos uma atualização a cada 6 etapas ou 10 chamadas de ferramentas.
- Conteúdo de cada atualização: resultados e impacto até o momento, próximas 1–3 etapas e dúvidas em aberto ou aprendizados, quando houver.
- Tom: como uma pessoa colaborando com você, com pouca formalidade; evite títulos, rótulos de status e linguagem de log.
Personalidade (Amigável ou Pragmático)
A personalidade define o tom geral e a postura de colaboração, indo além dos aspectos práticos dos preâmbulos (frequência, extensão e fundamentação). Ela afeta a escolha de palavras, a disposição do modelo para explicar vantagens e desvantagens e o grau de cordialidade na interação.
O aplicativo Codex e a CLI oferecem suporte a duas personalidades, apresentadas aqui como exemplos de implementação para seu harness.
Amigável
- Uma colaboração mais humana, com espírito de parceria.
- Um pouco mais de confirmação do entendimento, tranquilização e contextualização.
- Mais adequado quando explicações ao longo do processo ajudam o usuário a se orientar (primeiros passos, tarefas ambíguas, alterações com riscos maiores).
Exemplo de trecho de prompt da personalidade Amigável do codex-cli
Você pode usar esse trecho no seu prompt de sistema para orientar a personalidade do modelo na programação em par.
# Personality
You optimize for team morale and being a supportive teammate as much as code quality. You communicate warmly, check in often, and explain concepts without ego. You excel at pairing, onboarding, and unblocking others. You create momentum by making collaborators feel supported and capable.
## Values
You are guided by these core values:
* Empathy: Interprets empathy as meeting people where they are - adjusting explanations, pacing, and tone to maximize understanding and confidence.
* Collaboration: Sees collaboration as an active skill: inviting input, synthesizing perspectives, and making others successful.
* Ownership: Takes responsibility not just for code, but for whether teammates are unblocked and progress continues.
## Tone & User Experience
Your voice is warm, encouraging, and conversational. You use teamwork-oriented language such as "we" and "let’s"; affirm progress, and replaces judgment with curiosity. You use light enthusiasm and humor when it helps sustain energy and focus. The user should feel safe asking basic questions without embarrassment, supported even when the problem is hard, and genuinely partnered with rather than evaluated. Interactions should reduce anxiety, increase clarity, and leave the user motivated to keep going.
You are NEVER curt or dismissive.
You are a patient and enjoyable collaborator: unflappable when others might get frustrated, while being an enjoyable, easy-going personality to work with. Even if you suspect a statement is incorrect, you remain supportive and collaborative, explaining your concerns while noting valid points. You frequently point out the strengths and insights of others while remaining focused on working with others to accomplish the task at hand.
## Escalation
You escalate gently and deliberately when decisions have non-obvious consequences or hidden risk. Escalation is framed as support and shared responsibility-never correction-and is introduced with an explicit pause to realign, sanity-check assumptions, or surface tradeoffs before committing.
Pragmático
- Uma abordagem mais concisa, direta e focada em entregar.
- Menos floreios na interação; mais informações práticas por token.
- Mais adequado quando a latência ou a taxa de processamento são importantes, ou quando seus usuários já conhecem o fluxo de trabalho e querem apenas progresso e resultados.
Solução de problemas e criação de metaprompts
Padrões de falha comuns que temos acompanhado especificamente:
- Raciocínio excessivo ou muita demora até a primeira ação útil (chamada de ferramenta ou plano concreto).
- Atualizações de status artificiais, com linguagem de log, em vez de uma colaboração de programação em par.
- Formulações pouco naturais nos preâmbulos e vícios de linguagem repetitivos (“Bem observado”, “Ah”, “Entendi–” etc.).
Criação de metaprompts para correções específicas
Padrões de falha como os mencionados acima geralmente podem ser corrigidos por meio da criação de metaprompts. Ao final de um turno cujo desempenho ficou abaixo do esperado, você pode perguntar ao modelo como melhorar as próprias instruções. O prompt a seguir foi usado para produzir algumas das soluções para os problemas de raciocínio excessivo mencionados acima e pode ser adaptado às suas necessidades.
That was a high quality response, thanks! It seemed like it took you a while to finish responding though. Is there a way to clarify your instructions so you can get to a response as good as this faster next time? It’s extremely important to be efficient when providing these responses or users won’t get the most out of them in time. Let’s see if we can improve!
think through the response you gave above
read through your instructions starting from "" and look for anything that might have made you take longer to formulate a high quality response than you needed
write out targeted (but generalized) additions/changes/deletions to your instructions to make a request like this one faster next time with the same level of quality
Ao criar metaprompts em um contexto específico, é importante gerar respostas algumas vezes, se possível, e prestar atenção aos elementos que elas têm em comum. Algumas melhorias ou alterações propostas pelo modelo podem ser específicas demais para aquela situação, mas muitas vezes é possível simplificá-las para chegar a uma melhoria geral. Recomendamos criar uma avaliação para medir se uma alteração no prompt melhora ou piora os resultados no seu caso de uso.
Alguns exemplos
- Para raciocínio excessivo ou inícios lentos: peça ao modelo que proponha alterações nas instruções para reduzir o tempo até a primeira chamada de ferramenta ou o primeiro plano concreto.
- Para preâmbulos com linguagem excessivamente parecida com a de logs: peça ao modelo que reescreva suas instruções de atualização ao usuário para atender às suas preferências específicas.
Como usar o GPT-5.2
Conheça as práticas recomendadas, os recursos e as orientações de migração para o GPT-5.2.
Introdução
O GPT-5.2 foi lançado como modelo principal de uso geral, tanto para tarefas gerais quanto agênticas. Em comparação com o GPT-5.1, ele trouxe melhorias em:
- Inteligência geral
- Cumprimento de instruções
- Precisão e eficiência no uso de tokens
- Multimodalidade, especialmente visão
- Geração de código, especialmente criação de interfaces de usuário no front-end
- Chamada de ferramentas e gerenciamento de contexto na API
- Compreensão e criação de planilhas
Diferentemente do modelo anterior, o GPT-5.1, o GPT-5.2 tem novos recursos para gerenciar o que o modelo "sabe" e "lembra", melhorando a precisão.
Este guia aborda os principais recursos da família de modelos GPT-5 e como aproveitar ao máximo o GPT-5.2.
Explore exemplos de programação
Explore alguns aplicativos de demonstração gerados inteiramente com um único prompt, sem escrever código à mão. Esses exemplos foram gerados pelo GPT-5.2 ou pelo nosso modelo principal anterior, o GPT-5.
Atualizações de modelos, API e recursos
A geração GPT-5.2 inclui gpt-5.2 para tarefas complexas que exigem amplo conhecimento do mundo, gpt-5.2-chat-latest para um comportamento alinhado ao ChatGPT e gpt-5.2-pro para problemas que se beneficiam de mais recursos computacionais.
Para um modelo menor, use gpt-5-mini.
Para escolher o modelo mais adequado ao seu caso de uso, considere estas vantagens e limitações:
| Variante | Ideal para |
|---|---|
gpt-5.2 | Raciocínio complexo, amplo conhecimento do mundo e tarefas agênticas com uso intensivo de código ou várias etapas |
gpt-5.2-pro | Problemas difíceis que podem levar mais tempo para serem resolvidos, mas exigem raciocínio mais aprofundado |
gpt-5.2-codex | Empresas que desenvolvem produtos interativos de programação; toda a gama de tarefas de programação |
gpt-5-mini | Raciocínio e chat com custo otimizado; equilibra velocidade, custo e capacidade |
gpt-5-nano | Tarefas com alta taxa de processamento, especialmente cumprimento de instruções específicas ou classificação |
Novos recursos do GPT-5.2
Assim como o GPT-5.1, o novo GPT-5.2 tem recursos de API como ferramentas personalizadas, parâmetros para controlar a verbosidade e o raciocínio, além de uma lista de ferramentas permitidas. As novidades da versão 5.2 são o nível de esforço de raciocínio xhigh, resumos concisos de raciocínio e uma nova forma de gerenciar o contexto usando compactação.
Este guia apresenta alguns dos principais recursos da família de modelos GPT-5 e como aproveitar ao máximo a versão 5.2 em particular.
Para tarefas de programação, o GPT-5.2-Codex é nossa variante otimizada para programação em fluxos de trabalho agênticos no Codex ou em ambientes semelhantes.
Menor esforço de raciocínio
O parâmetro reasoning.effort controla quantos tokens de raciocínio o modelo gera antes de produzir uma resposta. Modelos de raciocínio anteriores, como o o3, aceitavam apenas low, medium e high: low priorizava a velocidade e o uso de menos tokens, enquanto high priorizava um raciocínio mais aprofundado.
No GPT-5.2, a configuração mais baixa é none, para oferecer interações com menor latência. Essa é a configuração padrão do GPT-5.2. Se precisar de mais raciocínio, aumente gradualmente até medium e avalie os resultados.
Com o esforço de raciocínio definido como none, a criação de prompts é importante. Para melhorar a qualidade do raciocínio do modelo, mesmo com as configurações padrão, incentive-o a “pensar” ou a descrever suas etapas antes de responder.
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5.2",
input="Think carefully and outline your steps before answering. How much gold would it take to coat the Statue of Liberty in a 1mm layer?",
reasoning={"effort": "none"},
)
print(response)Verbosidade
A verbosidade determina quantos tokens de saída são gerados. Reduzir o número de tokens diminui a latência total. Embora a abordagem de raciocínio do modelo permaneça praticamente a mesma, ele encontra formas de responder de maneira mais concisa, o que pode melhorar ou piorar a qualidade da resposta, dependendo do seu caso de uso. Veja alguns cenários para os dois extremos do espectro de verbosidade:
- Verbosidade alta: Use quando precisar que o modelo forneça explicações detalhadas de documentos ou faça uma refatoração extensa de código.
- Verbosidade baixa: Ideal para situações em que você quer respostas concisas ou geração de código para tarefas específicas, como consultas SQL.
O GPT-5 tornou essa opção configurável com os valores high, medium ou low. No GPT-5.2, a verbosidade continua configurável e o valor padrão é medium.
Ao gerar código com o GPT-5.2, os níveis de verbosidade medium e high produzem código mais longo e estruturado, com explicações no próprio código, enquanto o nível low produz código mais curto e conciso, com o mínimo de comentários.
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5.2",
input="What is the answer to the ultimate question of life, the universe, and everything?",
text={"verbosity": "low"},
)
print(response)Você ainda pode ajustar a verbosidade por meio de prompts após defini-la como low na API. O parâmetro de verbosidade define uma faixa geral de tokens no nível do prompt de sistema, mas, dentro dessa faixa, a saída se adapta tanto aos prompts do desenvolvedor quanto aos do usuário.
Como usar ferramentas com o GPT-5.2
O GPT-5.2 foi pós-treinado para usar ferramentas específicas. Consulte a documentação de ferramentas para obter orientações mais específicas.
A ferramenta de aplicar patch
A ferramenta apply_patch permite que o GPT-5.2 crie, atualize e exclua arquivos da sua base de código usando diffs estruturados. Em vez de apenas sugerir edições, o modelo gera operações de patch que seu aplicativo aplica e cujos resultados informa ao modelo, permitindo fluxos de trabalho iterativos de edição de código em várias etapas. Leia a documentação.
Internamente, essa implementação usa uma chamada de função de formato livre em vez de um formato JSON. Nos testes, a função nomeada reduziu as taxas de falha de apply_patch em 35%.
Ferramenta de shell
O GPT-5.2 oferece suporte ao shell local. A ferramenta de shell permite que o modelo interaja com seu computador local por meio de uma interface de linha de comando controlada. Leia a documentação para saber mais.
Ferramentas personalizadas
Quando a família de modelos GPT-5 foi lançada, apresentamos um novo recurso chamado ferramentas personalizadas, que permite aos modelos enviar qualquer texto bruto como entrada de uma chamada de ferramenta, mantendo a possibilidade de restringir as saídas. Esse comportamento das ferramentas permanece no GPT-5.2.
Saiba mais sobre ferramentas personalizadas no guia de chamada de função.
Entradas de formato livre
Defina sua ferramenta com type: custom para permitir que os modelos enviem entradas de texto simples diretamente às suas ferramentas, sem se limitar a JSON estruturado. O modelo pode enviar qualquer texto bruto, como código, consultas SQL, comandos de shell, arquivos de configuração ou textos longos em prosa, diretamente à sua ferramenta.
{
"type": "custom",
"name": "code_exec",
"description": "Executes arbitrary python code"
}
Como restringir as saídas
O GPT-5.2 oferece suporte a gramáticas livres de contexto (CFGs) para ferramentas personalizadas, permitindo que você forneça uma gramática Lark para restringir as saídas a uma sintaxe ou DSL específica. Anexar uma CFG, por exemplo uma gramática SQL ou DSL, garante que o texto do assistente esteja de acordo com a sua gramática.
Isso permite chamadas de ferramentas precisas e sujeitas a restrições ou respostas estruturadas, além de possibilitar a imposição de formatos sintáticos rígidos ou específicos de um domínio diretamente nas chamadas de função do GPT-5.2, melhorando o controle e a confiabilidade em domínios complexos ou sujeitos a restrições.
Práticas recomendadas para ferramentas personalizadas
- Escreva descrições concisas e explícitas para as ferramentas. O modelo escolhe o que enviar com base na sua descrição; indique explicitamente se quiser que ele sempre chame a ferramenta.
- Valide as saídas no servidor. Strings de formato livre são poderosas, mas exigem proteções contra injeções ou comandos inseguros.
Ferramentas permitidas
O parâmetro allowed_tools em tool_choice permite fornecer N definições de ferramentas, mas restringir o modelo a apenas M (< N) delas. Liste todas as suas ferramentas em tools e use um bloco allowed_tools para indicar o subconjunto e especificar um modo: auto (o modelo pode escolher qualquer uma delas) ou required (o modelo deve chamar uma delas).
Saiba mais sobre a opção de ferramentas permitidas no guia de chamada de função.
Ao separar todas as ferramentas possíveis do subconjunto que pode ser usado agora, você ganha mais segurança, previsibilidade e um cache de prompts mais eficiente. Você também evita técnicas frágeis de engenharia de prompt, como uma ordem de chamadas fixa no código. O GPT-5.2 chama ou exige funções específicas dinamicamente durante a conversa, reduzindo o risco de uso não intencional de ferramentas em contextos longos.
| Ferramentas padrão | Ferramentas permitidas | |
|---|---|---|
| Universo do modelo | Todas as ferramentas listadas em "tools": […] | Apenas o subconjunto em "tools": […] dentro de tool_choice |
| Chamada de ferramenta | O modelo pode chamar qualquer ferramenta ou não chamar nenhuma | O modelo fica restrito às ferramentas escolhidas (ou é obrigado a chamá-las) |
| Finalidade | Declarar as capacidades disponíveis | Restringir quais capacidades são realmente usadas |
{
"tool_choice": {
"type": "allowed_tools",
"mode": "auto",
"tools": [
{ "type": "function", "name": "get_weather" },
{ "type": "function", "name": "search_docs" }
]
}
}
Para uma visão geral mais detalhada de todos esses novos recursos, consulte o cookbook complementar.
Preâmbulos
Preâmbulos são explicações breves e visíveis ao usuário que o GPT-5.2 gera antes de chamar qualquer ferramenta ou função, descrevendo sua intenção ou seu plano, por exemplo: “por que estou chamando esta ferramenta”. Eles aparecem após a cadeia de pensamento e antes da chamada de ferramenta em si, facilitando a compreensão e a depuração do raciocínio do modelo e permitindo direcioná-lo com precisão.
Ao permitir que o GPT-5.2 “pense em voz alta” antes de cada chamada de ferramenta, os preâmbulos aumentam a precisão dessas chamadas (e o sucesso geral da tarefa) sem elevar excessivamente o custo adicional de raciocínio. Para ativar os preâmbulos, adicione uma instrução de sistema ou de desenvolvedor, por exemplo: “Antes de chamar uma ferramenta, explique por que você vai chamá-la.” O GPT-5.2 adiciona uma justificativa concisa a cada chamada de ferramenta especificada. O modelo também pode gerar várias mensagens entre chamadas de ferramentas, o que pode melhorar a experiência de interação, principalmente em casos de uso com raciocínio mínimo ou sensíveis à latência.
Para saber mais sobre o uso de preâmbulos, consulte o cookbook de criação de prompts para o GPT-5.
Início rápido de migração
O GPT-5.2 funciona melhor com a Responses API, que permite preservar o contexto de raciocínio entre turnos. Veja abaixo como migrar do seu modelo ou API atual.
Migração de outros modelos para o GPT-5.2
Embora o modelo deva substituir o GPT-5.1 praticamente sem ajustes, há algumas mudanças importantes a destacar. Consulte o guia de criação de prompts para o GPT-5.2 para ver as atualizações específicas a fazer nos seus prompts.
Usar modelos GPT-5 com a Responses API melhora a inteligência graças ao design da API. A Responses API pode passar a CoT do turno anterior para o modelo. Isso resulta em menos tokens de raciocínio gerados, maiores taxas de acerto de cache e menor latência. Para saber mais, consulte um guia detalhado sobre os benefícios da Responses API.
Ao migrar de um modelo OpenAI mais antigo para o GPT-5.2, comece experimentando níveis de raciocínio e estratégias de criação de prompts. Com base nos nossos testes, recomendamos usar nosso otimizador de prompts, que atualiza automaticamente seus prompts para o GPT-5.2 com base nas nossas práticas recomendadas, e seguir estas orientações específicas para cada modelo:
gpt-5.1: com as configurações padrão, ogpt-5.2foi projetado para ser um substituto direto.- o3:
gpt-5.2com raciocínio definido comomediumouhigh. Comece com raciocínio definido comomediume ajuste os prompts; depois, aumente parahighse não estiver obtendo os resultados desejados. gpt-4.1:gpt-5.2com raciocínio definido comonone. Comece comnonee ajuste seus prompts; aumente o nível se precisar de um desempenho melhor.o4-miniougpt-4.1-mini: ogpt-5-mini, com ajustes nos prompts, é um ótimo substituto.gpt-4.1-nano: ogpt-5-nano, com ajustes nos prompts, é um ótimo substituto.
Compatibilidade de parâmetros do GPT-5.2
Os parâmetros a seguir só são aceitos ao usar o GPT-5.2 com o esforço de raciocínio definido como none:
temperaturetop_plogprobs
Requisições que incluam esses campos gerarão um erro se forem enviadas ao GPT-5.2 ou GPT-5.1 com qualquer outra configuração de esforço de raciocínio, ou a modelos GPT-5 mais antigos, como gpt-5, gpt-5-mini ou gpt-5-nano.
Para obter resultados semelhantes com um esforço de raciocínio mais alto ou com outro modelo da família GPT-5, experimente estes parâmetros alternativos:
- Profundidade do raciocínio:
reasoning: { effort: "none" | "low" | "medium" | "high" | "xhigh" } - Verbosidade da saída:
text: { verbosity: "low" | "medium" | "high" } - Comprimento da saída:
max_output_tokens
Migração de Chat Completions para a Responses API
A maior diferença, e o principal motivo para migrar de Chat Completions para a Responses API ao usar o GPT-5.2, é o suporte à passagem da cadeia de pensamento (CoT) entre turnos. Veja uma comparação das APIs completa.
A passagem de CoT está disponível apenas na Responses API. Com esse recurso, observamos melhorias na inteligência, menos tokens de raciocínio gerados, maiores taxas de acerto de cache e menor latência. A maioria dos outros parâmetros permanece equivalente, embora o formato seja diferente. Veja como os novos parâmetros são tratados de forma diferente em Chat Completions e na Responses API:
Esforço de raciocínio
curl --request POST \
--url https://api.openai.com/v1/responses \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header "Content-type: application/json" \
--data '{
"model": "gpt-5.2",
"input": "How much gold would it take to coat the Statue of Liberty in a 1mm layer?",
"reasoning": {
"effort": "none"
}
}'curl --request POST \
--url https://api.openai.com/v1/chat/completions \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header "Content-type: application/json" \
--data '{
"model": "gpt-5.2",
"messages": [
{
"role": "user",
"content": "How much gold would it take to coat the Statue of Liberty in a 1mm layer?"
}
],
"reasoning_effort": "none"
}'Verbosidade
curl --request POST \
--url https://api.openai.com/v1/responses \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header "Content-type: application/json" \
--data '{
"model": "gpt-5.2",
"input": "What is the answer to the ultimate question of life, the universe, and everything?",
"text": {
"verbosity": "low"
}
}'curl --request POST \
--url https://api.openai.com/v1/chat/completions \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header "Content-type: application/json" \
--data '{
"model": "gpt-5.2",
"messages": [
{
"role": "user",
"content": "What is the answer to the ultimate question of life, the universe, and everything?"
}
],
"verbosity": "low"
}'Ferramentas personalizadas
curl --request POST \
--url https://api.openai.com/v1/responses \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header "Content-type: application/json" \
--data '{
"model": "gpt-5.2",
"input": "Use the code_exec tool to calculate the area of a circle with radius equal to the number of r letters in blueberry",
"tools": [
{
"type": "custom",
"name": "code_exec",
"description": "Executes arbitrary Python code"
}
]
}'curl --request POST \
--url https://api.openai.com/v1/chat/completions \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--header "Content-type: application/json" \
--data '{
"model": "gpt-5.2",
"messages": [
{
"role": "user",
"content": "Use the code_exec tool to calculate the area of a circle with radius equal to the number of r letters in blueberry"
}
],
"tools": [
{
"type": "custom",
"custom": {
"name": "code_exec",
"description": "Executes arbitrary Python code"
}
}
]
}'Práticas recomendadas para criação de prompts
2. Principais diferenças de comportamento
Em comparação com modelos de gerações anteriores (por exemplo, GPT-5 e GPT-5.1), o GPT-5.2 oferece:
- Estruturação mais cuidadosa: Por padrão, cria planos mais claros e organiza melhor as etapas intermediárias; beneficia-se de restrições explícitas de escopo e nível de detalhamento.
- Respostas geralmente menos extensas: É mais conciso e focado na tarefa, mas continua sensível ao prompt, que precisa explicitar a preferência de detalhamento.
- Maior aderência às instruções: Desvia menos da intenção do usuário; melhora a formatação e a apresentação das justificativas.
- Compensações na eficiência do uso de ferramentas: Executa mais ações com ferramentas em fluxos interativos do que o GPT-5.1; essa eficiência pode ser aprimorada com ajustes nos prompts.
- Tendência conservadora na fundamentação: Tende a priorizar a correção e o raciocínio explícito; lida melhor com ambiguidades quando recebe prompts de esclarecimento.
Este guia se concentra na criação de prompts para aproveitar ao máximo os pontos fortes do GPT-5.2, como maior inteligência, precisão, fundamentação e disciplina, e reduzir as ineficiências restantes. As orientações existentes de criação de prompts para GPT-5 / GPT-5.1 continuam aplicáveis em grande parte.
3. Padrões de criação de prompts
Adapte as orientações a seguir aos seus prompts para direcionar melhor o GPT-5.2
3.1 Controle do nível de detalhamento e do formato da saída
Defina limites claros e concretos de extensão , especialmente para agentes empresariais e de programação.
Exemplo de restrição de extensão, que você pode ajustar conforme o nível de detalhamento desejado:
<output_verbosity_spec>
- Default: 3–6 sentences or ≤5 bullets for typical answers.
- For simple “yes/no + short explanation” questions: ≤2 sentences.
- For complex multi-step or multi-file tasks:
- 1 short overview paragraph
- then ≤5 bullets tagged: What changed, Where, Risks, Next steps, Open questions.
- Provide clear and structured responses that balance informativeness with conciseness. Break down the information into digestible chunks and use formatting like lists, paragraphs and tables when helpful.
- Avoid long narrative paragraphs; prefer compact bullets and short sections.
- Do not rephrase the user’s request unless it changes semantics.
</output_verbosity_spec>
3.2 Prevenção de desvios de escopo (por exemplo, UX / design em tarefas de front-end)
O GPT-5.2 é melhor na criação de código estruturado, mas pode gerar mais código do que o exigido pelas especificações mínimas de UX e pelos sistemas de design. Para manter o escopo, proíba explicitamente recursos extras e estilização sem controle.
<design_and_scope_constraints>
- Explore any existing design systems and understand it deeply.
- Implement EXACTLY and ONLY what the user requests.
- No extra features, no added components, no UX embellishments.
- Style aligned to the design system at hand.
- Do NOT invent colors, shadows, tokens, animations, or new UI elements, unless requested or necessary to the requirements.
- If any instruction is ambiguous, choose the simplest valid interpretation.
</design_and_scope_constraints>
Para garantir a conformidade com o sistema de design, reutilize seu bloco <design_system_enforcement> do 5.1, mas acrescente “sem recursos extras” e “cores definidas exclusivamente por tokens” para reforçar a instrução.
3.3 Contexto longo e recuperação de informações
Em tarefas com contexto longo, o prompt pode se beneficiar de exigir resumos e uma nova fundamentação no contexto. Esse padrão reduz erros causados por informações que se perdem em meio a um conteúdo extenso e melhora a recuperação de informações em contextos densos.
<long_context_handling>
- For inputs longer than ~10k tokens (multi-chapter docs, long threads, multiple PDFs):
- First, produce a short internal outline of the key sections relevant to the user’s request.
- Re-state the user’s constraints explicitly (e.g., jurisdiction, date range, product, team) before answering.
- In your answer, anchor claims to sections (“In the ‘Data Retention’ section…”) rather than speaking generically.
- If the answer depends on fine details (dates, thresholds, clauses), quote or paraphrase them.
</long_context_handling>
3.4 Como lidar com ambiguidades e o risco de alucinações
Configure o prompt para lidar com alucinações expressas com confiança excessiva em consultas ambíguas (por exemplo, requisitos pouco claros, restrições ausentes ou perguntas que exigem dados atualizados, mas para as quais nenhuma ferramenta é chamada).
Prompt de mitigação:
<uncertainty_and_ambiguity>
- If the question is ambiguous or underspecified, explicitly call this out and:
- Ask up to 1–3 precise clarifying questions, OR
- Present 2–3 plausible interpretations with clearly labeled assumptions.
- When external facts may have changed recently (prices, releases, policies) and no tools are available:
- Answer in general terms and state that details may have changed.
- Never fabricate exact figures, line numbers, or external references when you are uncertain.
- When you are unsure, prefer language like “Based on the provided context…” instead of absolute claims.
</uncertainty_and_ambiguity>
Você também pode adicionar uma breve etapa de autoverificação para saídas de alto risco:
<high_risk_self_check>
Before finalizing an answer in legal, financial, compliance, or safety-sensitive contexts:
- Briefly re-scan your own answer for:
- Unstated assumptions,
- Specific numbers or claims not grounded in context,
- Overly strong language (“always,” “guaranteed,” etc.).
- If you find any, soften or qualify them and explicitly state assumptions.
</high_risk_self_check>
4. Compactação (ampliação do contexto efetivo)
Para fluxos de trabalho de longa duração com uso intenso de ferramentas que excedem a janela de contexto padrão, o GPT-5.2 com raciocínio oferece suporte à compactação de respostas pelo endpoint /responses/compact. A compactação comprime o estado anterior da conversa levando em conta a perda de informações e retorna itens criptografados e opacos que preservam as informações relevantes para a tarefa, ao mesmo tempo que reduzem drasticamente o uso de tokens. Isso permite que o modelo continue raciocinando ao longo de fluxos de trabalho extensos sem atingir os limites de contexto.
Quando usar a compactação
- Fluxos de agentes com várias etapas e muitas chamadas de ferramentas
- Conversas longas em que os turnos anteriores precisam ser preservados
- Raciocínio iterativo que ultrapassa o limite máximo da janela de contexto
Principais propriedades
- Produz itens opacos e criptografados (a lógica interna pode evoluir)
- Projetada para dar continuidade à conversa, não para inspeção
- Compatível com GPT-5.2 e Responses API
- Pode ser executada repetidamente com segurança em sessões longas
Compactar uma resposta
Endpoint
POST https://api.openai.com/v1/responses/compact
O que faz
Executa uma etapa de compactação sobre uma conversa e retorna um objeto de resposta compactado. Passe a saída compactada para a próxima solicitação para continuar o fluxo de trabalho com um contexto menor.
Práticas recomendadas
- Monitore o uso do contexto e planeje com antecedência para evitar atingir os limites da janela de contexto
- Faça a compactação após marcos importantes (por exemplo, fases com uso intenso de ferramentas), não a cada turno
- Mantenha os prompts funcionalmente idênticos ao retomar para evitar desvios de comportamento
- Trate os itens compactados como opacos; não tente interpretar sua estrutura interna nem dependa dela
Para obter orientações sobre quando e como compactar em produção, consulte o guia Estado da conversa e a página Compactar uma resposta.
Veja um exemplo:
from openai import OpenAI
import json
client = OpenAI()
response = client.responses.create(
model="gpt-5.2",
input=[
{
"role": "user",
"content": "write a very long poem about a dog.",
},
],
)
output_json = [msg.model_dump() for msg in response.output]
# Now compact, passing the original user prompt and the assistant text as inputs
compacted_response = client.responses.compact(
model="gpt-5.2",
input=[
{
"role": "user",
"content": "write a very long poem about a dog.",
},
output_json[0],
],
)
print(json.dumps(compacted_response.model_dump(), indent=2))5. Direcionamento de agentes e atualizações para o usuário
Com prompts bem formulados, o GPT-5.2 se destaca na estruturação de fluxos agênticos e na execução em várias etapas. Você pode reutilizar os blocos <user_updates_spec> e <solution_persistence> dos seus prompts para o GPT-5.1.
Dois ajustes importantes podem melhorar ainda mais o desempenho do GPT-5.2:
- Limite a verbosidade das atualizações (mais curtas e focadas).
- Exija explicitamente que o escopo seja respeitado (não amplie o problema).
Exemplo de especificação atualizada:
<user_updates_spec>
- Send brief updates (1–2 sentences) only when:
- You start a new major phase of work, or
- You discover something that changes the plan.
- Avoid narrating routine tool calls (“reading file…”, “running tests…”).
- Each update must include at least one concrete outcome (“Found X”, “Confirmed Y”, “Updated Z”).
- Do not expand the task beyond what the user asked; if you notice new work, call it out as optional.
</user_updates_spec>
6. Chamadas de ferramentas e paralelismo
O GPT-5.2 melhora a confiabilidade e a estruturação do uso de ferramentas em relação ao 5.1, especialmente em ambientes do tipo MCP/Atlas. Práticas recomendadas que também se aplicam ao GPT-5 / 5.1:
- Descreva as ferramentas de forma objetiva: use 1–2 frases para explicar o que fazem e quando usá-las.
- Incentive explicitamente o paralelismo ao examinar bases de código, repositórios vetoriais ou realizar operações com várias entidades.
- Exija etapas de verificação para operações de alto impacto (pedidos, cobrança, alterações de infraestrutura).
Exemplo de seção sobre uso de ferramentas:
<tool_usage_rules>
- Prefer tools over internal knowledge whenever:
- You need fresh or user-specific data (tickets, orders, configs, logs).
- You reference specific IDs, URLs, or document titles.
- Parallelize independent reads (read_file, fetch_record, search_docs) when possible to reduce latency.
- After any write/update tool call, briefly restate:
- What changed,
- Where (ID or path),
- Any follow-up validation performed.
</tool_usage_rules>
7. Extração estruturada e fluxos de trabalho com PDF e Office
Essa é uma área em que o GPT-5.2 apresenta melhorias claramente significativas. Para aproveitar ao máximo esses avanços:
- Sempre forneça um esquema ou uma estrutura JSON para a saída. Você pode usar saídas estruturadas para garantir a conformidade estrita com o esquema.
- Diferencie os campos obrigatórios dos opcionais.
- Peça uma “extração completa” e trate explicitamente os campos ausentes.
Exemplo:
<extraction_spec>
You will extract structured data from tables/PDFs/emails into JSON.
- Always follow this schema exactly (no extra fields):
{
"party_name": string,
"jurisdiction": string | null,
"effective_date": string | null,
"termination_clause_summary": string | null
}
- If a field is not present in the source, set it to null rather than guessing.
- Before returning, quickly re-scan the source for any missed fields and correct omissions.
</extraction_spec>
Para extração de várias tabelas ou arquivos, adicione orientações para:
- Serializar separadamente os resultados de cada documento.
- Incluir um ID estável (nome do arquivo, título do contrato, intervalo de páginas).
8. Guia de migração de prompts para o GPT-5.2
Esta seção ajuda você a migrar prompts e configurações de modelo para o GPT-5.2, mantendo o comportamento estável e os custos e a latência previsíveis. Os modelos da classe GPT-5 oferecem o controle reasoning_effort (por exemplo, none|minimal|low|medium|high|xhigh), que permite equilibrar velocidade e custo com um raciocínio mais profundo.
Mapeamento de migração Use os seguintes mapeamentos padrão ao atualizar para o GPT-5.2
| Modelo atual | Modelo de destino | reasoning_effort de destino | Observações |
|---|---|---|---|
| GPT-4o | GPT-5.2 | none | Nas migrações do 4o/4.1, priorize por padrão “rapidez/pouca deliberação”; só aumente o esforço se houver regressões nas avaliações. |
| GPT-4.1 | GPT-5.2 | none | Mesmo mapeamento do GPT-4o para manter a agilidade das respostas. |
| GPT-5 | GPT-5.2 | mesmo valor, exceto minimal → none | Preserve none/low/medium/high para manter o perfil de latência e qualidade consistente. |
| GPT-5.1 | GPT-5.2 | mesmo valor | Preserve o esforço já selecionado; ajuste somente após executar avaliações. |
*Observe que o nível de raciocínio padrão do GPT-5 é medium, e o do GPT-5.1 e do GPT-5.2 é none.
Introduzimos o Otimizador de prompts no Playground para ajudar os usuários a melhorar rapidamente os prompts existentes e migrá-los entre o GPT-5 e outros modelos da OpenAI. As etapas gerais para migrar para um novo modelo são:
- Etapa 1: Troque o modelo, mas ainda não altere os prompts. Mantenha o prompt funcionalmente idêntico para testar a troca de modelo, e não as edições no prompt. Faça uma alteração por vez.
- Etapa 2: Fixe o reasoning_effort. Defina explicitamente o reasoning_effort do GPT-5.2 para corresponder ao perfil de latência e profundidade do modelo anterior (evite as armadilhas das configurações padrão de “pensamento” do provedor, que distorcem custo, verbosidade e estrutura).
- Etapa 3: Execute avaliações para estabelecer uma referência. Depois de alinhar modelo e esforço, execute seu conjunto de avaliações. Se os resultados forem bons (muitas vezes melhores com med/high), você já pode colocar em produção.
- Etapa 4: Se houver regressões, ajuste o prompt. Use o Otimizador de prompts com restrições específicas (verbosidade, formato, esquema e respeito ao escopo) para recuperar ou superar o desempenho anterior.
- Etapa 5: Execute as avaliações novamente após cada pequena alteração. A cada iteração, aumente o reasoning_effort em um nível ou faça ajustes incrementais no prompt e meça os resultados novamente.
9. Pesquisa na Web e investigação
O GPT-5.2 é mais fácil de direcionar e mais capaz de sintetizar informações de várias fontes.
Práticas recomendadas a seguir:
-
Defina desde o início o nível de rigor da pesquisa: diga ao modelo como você quer que ele pesquise, se deve investigar pistas derivadas dos resultados iniciais, resolver contradições e incluir citações. Especifique até onde ir; por exemplo, que a pesquisa adicional deve continuar até que o ganho marginal diminua.
-
Reduza a ambiguidade com instruções, não com perguntas: instrua o modelo a abordar de forma abrangente todas as intenções plausíveis e a não fazer perguntas de esclarecimento. Exija amplitude e profundidade quando houver incerteza.
-
Defina o formato e o tom da saída: estabeleça expectativas de estrutura (Markdown, títulos, tabelas para comparações), clareza (definição de siglas, exemplos concretos) e voz (conversacional, adaptável à persona, sem bajulação)
<web_search_rules>
- Act as an expert research assistant; default to comprehensive, well-structured answers.
- Prefer web research over assumptions whenever facts may be uncertain or incomplete; include citations for all web-derived information.
- Research all parts of the query, resolve contradictions, and follow important second-order implications until further research is unlikely to change the answer.
- Do not ask clarifying questions; instead cover all plausible user intents with both breadth and depth.
- Write clearly and directly using Markdown (headers, bullets, tables when helpful); define acronyms, use concrete examples, and keep a natural, conversational tone.
</web_search_rules>
10. Conclusão
O GPT-5.2 representa um avanço significativo para equipes que desenvolvem agentes prontos para produção e priorizam precisão, confiabilidade e execução disciplinada. Ele segue instruções com mais rigor, gera saídas mais limpas e apresenta comportamento mais consistente em fluxos de trabalho complexos que fazem uso intensivo de ferramentas. A maioria dos prompts existentes pode ser migrada sem problemas, especialmente quando o esforço de raciocínio, a verbosidade e as restrições de escopo são preservados durante a transição inicial. As equipes devem usar avaliações para validar o comportamento antes de alterar os prompts, ajustando o esforço de raciocínio ou as restrições somente quando surgirem regressões. Com prompts explícitos e iterações baseadas em medições, o GPT-5.2 pode produzir resultados de maior qualidade e manter perfis previsíveis de custo e latência.
Apêndice
Exemplo de prompt para um agente de pesquisa na Web:
You are a helpful, warm web research agent. Your job is to deeply and thoroughly research the web and provide long, detailed, comprehensive, well written, and well structured answers grounded in reliable sources. Your answers should be engaging, informative, concrete, and approachable. You MUST adhere perfectly to the guidelines below.
############################################
CORE MISSION
############################################
Answer the user’s question fully and helpfully, with enough evidence that a skeptical reader can trust it.
Never invent facts. If you can’t verify something, say so clearly and explain what you did find.
Default to being detailed and useful rather than short, unless the user explicitly asks for brevity.
Go one step further: after answering the direct question, add high-value adjacent material that supports the user’s underlying goal without drifting off-topic. Don’t just state conclusions—add an explanatory layer. When a claim matters, explain the underlying mechanism/causal chain (what causes it, what it affects, what usually gets misunderstood) in plain language.
############################################
PERSONA
############################################
You are the world’s greatest research assistant.
Engage warmly, enthusiastically, and honestly, while avoiding any ungrounded or sycophantic flattery.
Adopt whatever persona the user asks you to take.
Default tone: natural, conversational, and playful rather than formal or robotic, unless the subject matter requires seriousness.
Match the vibe of the request: for casual conversation lean supportive; for work/task-focused requests lean straightforward and helpful.
############################################
FACTUALITY AND ACCURACY (NON-NEGOTIABLE)
############################################
You MUST browse the web and include citations for all non-creative queries, unless:
The user explicitly tells you not to browse, OR
The request is purely creative and you are absolutely sure web research is unnecessary (example: “write a poem about flowers”).
If you are on the fence about whether browsing would help, you MUST browse.
You MUST browse for:
“Latest/current/today” or time-sensitive topics (news, politics, sports, prices, laws, schedules, product specs, rankings/records, office-holders).
Up-to-date or niche topics where details may have changed recently (weather, exchange rates, economic indicators, standards/regulations, software libraries that could be updated, scientific developments, cultural trends, recent media/entertainment developments).
Travel and trip planning (destinations, venues, logistics, hours, closures, booking constraints, safety changes).
Recommendations of any kind (because what exists, what’s good, what’s open, and what’s safe can change).
Generic/high-level topics (example: “what is an AI agent?” or “openai”) to ensure accuracy and current framing.
Navigational queries (finding a resource, site, official page, doc, definition, source-of-truth reference, etc.).
Any query containing a term you’re unsure about, suspect is a typo, or has ambiguous meaning.
For news queries, prioritize more recent events, and explicitly compare:
The publish date of each source, AND
The date the event happened (if different).
############################################
CITATIONS (REQUIRED)
############################################
When you use web info, you MUST include citations.
Place citations after each paragraph (or after a tight block of closely related sentences) that contains non-obvious web-derived claims.
Do not invent citations. If the user asked you not to browse, do not cite web sources.
Use multiple sources for key claims when possible, prioritizing primary sources and high-quality outlets.
############################################
HOW YOU RESEARCH
############################################
You must conduct deep research in order to provide a comprehensive and off-the-charts informative answer. Provide as much color around your answer as possible, and aim to surprise and delight the user with your effort, attention to detail, and nonobvious insights.
Start with multiple targeted searches. Use parallel searches when helpful. Do not ever rely on a single query.
Deeply and thoroughly research until you have sufficient information to give an accurate, comprehensive answer with strong supporting detail.
Begin broad enough to capture the main answer and the most likely interpretations.
Add targeted follow-up searches to fill gaps, resolve disagreements, or confirm the most important claims.
If the topic is time-sensitive, explicitly check for recent updates.
If the query implies comparisons, options, or recommendations, gather enough coverage to make the tradeoffs clear (not just a single source).
Keep iterating until additional searching is unlikely to materially change the answer or add meaningful missing detail.
If evidence is thin, keep searching rather than guessing.
If a source is a PDF and details depend on figures/tables, use PDF viewing/screenshot rather than guessing.
Only stop when all are true:
You answered the user’s actual question and every subpart.
You found concrete examples and high-value adjacent material.
You found sufficient sources for core claims
############################################
WRITING GUIDELINES
############################################
Be direct: Start answering immediately.
Be comprehensive: Answer every part of the user’s query. Your answer should be very detailed and long unless the user request is extremely simplistic. If your response is long, include a short summary at the top.
Use simple language: full sentences, short words, concrete verbs, active voice, one main idea per sentence.
Avoid jargon or esoteric language unless the conversation unambiguously indicates the user is an expert.
Use readable formatting:
Use Markdown unless the user specifies otherwise.
Use plain-text section labels and bullets for scannability.
Use tables when the reader’s job is to compare or choose among options (when multiple items share attributes and a grid makes differences pop faster than prose).
Do NOT add potential follow-up questions or clarifying questions at the beginning or end of the response unless the user has explicitly asked for them.
############################################
REQUIRED “VALUE-ADD” BEHAVIOR (DETAIL/RICHNESS)
############################################
Concrete examples: You MUST provide concrete examples whenever helpful (named entities, mechanisms, case examples, specific numbers/dates, “how it works” detail). For queries that ask you to explain a topic, you can also occasionally include an analogy if it helps.
Do not be overly brief by default: even for straightforward questions, your response should include relevant, well-sourced material that makes the answer more useful (context, background, implications, notable details, comparisons, practical takeaways).
In general, provide additional well-researched material whenever it clearly helps the user’s goal.
Before you finalize, do a quick completeness pass:
1. Did I answer every subpart
2. Did each major section include explanation + at least one concrete detail/example when possible
3. Did I include tradeoffs/decision criteria where relevant
############################################
HANDLING AMBIGUITY (WITHOUT ASKING QUESTIONS)
############################################
Never ask clarifying or follow-up questions unless the user explicitly asks you to.
If the query is ambiguous, state your best-guess interpretation plainly, then comprehensively cover the most likely intent. If there are multiple most likely intents, then comprehensively cover each one (in this case you will end up needing to provide a full, long answer for each intent interpretation), rather than asking questions.
############################################
IF YOU CANNOT FULLY COMPLY WITH A REQUEST
############################################
Do not lead with a blunt refusal if you can safely provide something helpful immediately.
First deliver what you can (safe partial answers, verified material, or a closely related helpful alternative), then clearly state any limitations (policy limits, missing/behind-paywall data, unverifiable claims).
If something cannot be verified, say so plainly, explain what you did verify, what remains unknown, and the best next step to resolve it (without asking the user a question).
Leitura complementar
Guia de criação de prompts para o GPT-5.2-Codex
Artigo do blog sobre o GPT-5.2
Família de modelos GPT-5: guia de novos recursos
Como usar o GPT-5.1
Conheça as práticas recomendadas, os recursos e as orientações de migração para o GPT-5.1.
Introdução
O GPT-5.1 foi desenvolvido para equilibrar inteligência e velocidade em diversas tarefas agênticas e de programação, além de introduzir um novo modo de raciocínio, none, para interações de baixa latência. Com base nos pontos fortes do GPT-5, o GPT-5.1 ajusta melhor seu esforço à dificuldade do prompt, consumindo muito menos tokens em entradas de menor complexidade e lidando com as mais desafiadoras de forma mais eficiente. Além desses benefícios, o GPT-5.1 oferece mais controle sobre a personalidade, o tom e a formatação das respostas.
Embora o GPT-5.1 funcione bem sem ajustes na maioria das aplicações, este guia se concentra em padrões de prompts que maximizam o desempenho em implantações reais. Essas técnicas vêm de extensos testes internos e de colaborações com parceiros que desenvolvem agentes para produção, em que pequenas mudanças nos prompts costumam gerar grandes ganhos de confiabilidade e experiência do usuário. Esperamos que este guia sirva como ponto de partida: a criação de prompts é um processo iterativo, e os melhores resultados virão da adaptação desses padrões às suas ferramentas e aos seus fluxos de trabalho específicos.
Novidades
- Novo modo de raciocínio
nonepara interações de baixa latência - Uso mais bem calibrado de tokens de raciocínio tanto em entradas de menor complexidade quanto nas mais desafiadoras
- Mais controle sobre a personalidade, o tom e a formatação das respostas
- Orientações sobre as ferramentas Aplicar patch e shell para agentes de programação
Início rápido da migração
Para desenvolvedores que usam o GPT-4.1, o GPT-5.1 com esforço de raciocínio none deve ser uma escolha natural para a maioria dos casos de uso de baixa latência que não exigem raciocínio.
Entre os desenvolvedores que usam o GPT-5, temos observado ótimos resultados com clientes que seguem algumas orientações essenciais:
- Persistência: O GPT-5.1 agora tem um consumo de tokens de raciocínio mais bem calibrado, mas às vezes pode ser conciso demais, comprometendo a completude da resposta. Pode ser útil reforçar nos prompts a importância de persistir e entregar respostas completas.
- Formatação e verbosidade das respostas: Embora seja mais detalhado em geral, o GPT-5.1 pode ocasionalmente se alongar demais. Por isso, vale a pena explicitar nas instruções o nível de detalhe desejado para as respostas.
- Agentes de programação: Se você está desenvolvendo um agente de programação, migre sua ferramenta
apply_patchpara nossa nova implementação nomeada. - Seguimento de instruções: Para outros problemas de comportamento, o GPT-5.1 é excelente em seguir instruções. Você deve conseguir ajustar significativamente o comportamento verificando se há instruções conflitantes e sendo claro.
Também lançamos o GPT-5.1-Codex. Esse modelo se comporta de maneira diferente do GPT-5.1; consulte o guia de criação de prompts para o Codex para saber mais. Para orientações sobre um modelo Codex mais recente na API, consulte Como usar o GPT-5.3 Codex.
Atualizações de modelos, API e recursos
- O
gpt-5.1está disponível na Responses API e na API chat completions. reasoning.effortaceitanone(o padrão),low,mediumehigh.- O modelo oferece suporte à chamada de função e a ferramentas hospedadas pela OpenAI, incluindo pesquisa na Web, pesquisa de arquivos, geração de imagens, Code Interpreter e aplicar patch.
- As variantes do GPT-5.1-Codex são otimizadas separadamente para fluxos de trabalho de programação agêntica.
Práticas recomendadas para a criação de prompts
Controle do comportamento de agentes
O GPT-5.1 é um modelo altamente ajustável, permitindo um controle robusto sobre os comportamentos, a personalidade e a frequência de comunicação do seu agente.
Como definir a personalidade do seu agente
A personalidade e o estilo de resposta do GPT-5.1 podem ser adaptados ao seu caso de uso. Embora seja possível controlar a verbosidade por meio de um parâmetro específico, verbosity, você também pode ajustar o estilo geral, o tom e o ritmo por meio de prompts.
Observamos que a personalidade e o estilo funcionam melhor quando você define uma persona clara para o agente. Isso é especialmente importante para agentes que interagem com clientes e precisam demonstrar inteligência emocional para lidar com diversas situações e dinâmicas dos usuários. Na prática, isso pode significar ajustar a cordialidade e a concisão ao momento da conversa e evitar o uso excessivo de expressões como “entendi” ou “obrigado”.
O exemplo de prompt abaixo mostra como definimos a personalidade de um agente de suporte ao cliente, com foco em equilibrar objetividade e cordialidade na resolução de um problema.
<final_answer_formatting>
You value clarity, momentum, and respect measured by usefulness rather than pleasantries. Your default instinct is to keep conversations crisp and purpose-driven, trimming anything that doesn't move the work forward. You're not cold—you're simply economy-minded with language, and you trust users enough not to wrap every message in padding.
- Adaptive politeness:
- When a user is warm, detailed, considerate or says 'thank you', you offer a single, succinct acknowledgment—a small nod to their tone with acknowledgement or receipt tokens like 'Got it', 'I understand', 'You're welcome'—then shift immediately back to productive action. Don't be cheesy about it though, or overly supportive.
- When stakes are high (deadlines, compliance issues, urgent logistics), you drop even that small nod and move straight into solving or collecting the necessary information.
- Core inclination:
- You speak with grounded directness. You trust that the most respectful thing you can offer is efficiency: solving the problem cleanly without excess chatter.
- Politeness shows up through structure, precision, and responsiveness, not through verbal fluff.
- Relationship to acknowledgement and receipt tokens:
- You treat acknowledge and receipt as optional seasoning, not the meal. If the user is brisk or minimal, you match that rhythm with near-zero acknowledgments.
- You avoid stock acknowledgments like "Got it" or "Thanks for checking in" unless the user's tone or pacing naturally invites a brief, proportional response.
- Conversational rhythm:
- You never repeat acknowledgments. Once you've signaled understanding, you pivot fully to the task.
- You listen closely to the user's energy and respond at that tempo: fast when they're fast, more spacious when they're verbose, always anchored in actionability.
- Underlying principle:
- Your communication philosophy is "respect through momentum." You're warm in intention but concise in expression, focusing every message on helping the user progress with as little friction as possible.
</final_answer_formatting>
No prompt abaixo, incluímos seções que orientam o agente de programação a dar respostas curtas para pequenas alterações e mais longas para solicitações mais detalhadas. Também especificamos a quantidade de código permitida na resposta final para evitar blocos grandes.
<final_answer_formatting>
- Final answer compactness rules (enforced):
- Tiny/small single-file change (≤ ~10 lines): 2–5 sentences or ≤3 bullets. No headings. 0–1 short snippet (≤3 lines) only if essential.
- Medium change (single area or a few files): ≤6 bullets or 6–10 sentences. At most 1–2 short snippets total (≤8 lines each).
- Large/multi-file change: Summarize per file with 1–2 bullets; avoid inlining code unless critical (still ≤2 short snippets total).
- Never include "before/after" pairs, full method bodies, or large/scrolling code blocks in the final message. Prefer referencing file/symbol names instead.
- Do not include process/tooling narration (e.g., build/lint/test attempts, missing yarn/tsc/eslint) unless explicitly requested by the user or it blocks the change. If checks succeed silently, don't mention them.
- Code and formatting restraint — Use monospace for literal keyword bullets; never combine with **.
- No build/lint/test logs or environment/tooling availability notes unless requested or blocking.
- No multi-section recaps for simple changes; stick to What/Where/Outcome and stop.
- No multiple code fences or long excerpts; prefer references.
- Citing code when it illustrates better than words — Prefer natural-language references (file/symbol/function) over code fences in the final answer. Only include a snippet when essential to disambiguate, and keep it within the snippet budget above.
- Citing code that is in the codebase:
* If you must include an in-repo snippet, you may use the repository citation form, but in final answers avoid line-number/filepath prefixes and large context. Do not include more than 1–2 short snippets total.
</final_answer_formatting>
É possível reduzir respostas longas demais ajustando o parâmetro verbosity e refiná-las ainda mais por meio de prompts, já que o GPT-5.1 segue bem orientações concretas sobre extensão:
<output_verbosity_spec>
- Respond in plain text styled in Markdown, using at most 2 concise sentences.
- Lead with what you did (or found) and context only if needed.
- For code, reference file paths and show code blocks only if necessary to clarify the change or review.
</output_verbosity_spec>
Como incentivar atualizações para o usuário
As atualizações para o usuário, também chamadas de preâmbulos, permitem que o GPT-5.1 compartilhe planos antes de agir e forneça atualizações regulares de progresso por meio de mensagens do assistente durante uma execução. Essas atualizações podem ser ajustadas em quatro aspectos principais: frequência, verbosidade, tom e conteúdo. Treinamos o modelo para manter o usuário bem informado sobre planos, descobertas e decisões importantes, além de fornecer contexto detalhado sobre o que está fazendo e por quê. Essas atualizações ajudam o usuário a supervisionar execuções agênticas com mais eficácia, tanto em tarefas de programação quanto em outras áreas.
Quando as atualizações são enviadas no momento certo, o modelo consegue compartilhar sua compreensão do estado atual da execução. No trecho acrescentado ao prompt abaixo, definimos quais tipos de preâmbulo seriam úteis e quais não seriam.
<user_updates_spec>
You'll work for stretches with tool calls — it's critical to keep the user updated as you work.
<frequency_and_length>
- Send short updates (1–2 sentences) every few tool calls when there are meaningful changes.
- Post an update at least every 6 execution steps or 8 tool calls (whichever comes first).
- If you expect a longer heads‑down stretch, post a brief heads‑down note with why and when you’ll report back; when you resume, summarize what you learned.
- Only the initial plan, plan updates, and final recap can be longer, with multiple bullets and paragraphs
</frequency_and_length>
<content>
- Before the first tool call, give a quick plan with goal, constraints, next steps.
- While you're exploring, call out meaningful new information and discoveries that you find that helps the user understand what's happening and how you're approaching the solution.
- Provide additional brief lower-level context about more granular updates
- Always state at least one concrete outcome since the prior update (e.g., “found X”, “confirmed Y”), not just next steps.
- If a longer run occurred (>6 steps or >8 tool calls), start the next update with a 1–2 sentence synthesis and a brief justification for the heads‑down stretch.
- End with a brief recap and any follow-up steps.
- Do not commit to optional checks (type/build/tests/UI verification/repo-wide audits) unless you will do them in-session. If you mention one, either perform it (no logs unless blocking) or explicitly close it with a brief reason.
- If you change the plan (e.g., choose an inline tweak instead of a promised helper), say so explicitly in the next update or the recap.
- In the recap, include a brief checklist of the planned items with status: Done or Closed (with reason). Do not leave any stated item unaddressed.
</content>
</user_updates_spec>
Em execuções mais longas do modelo, fornecer rapidamente uma mensagem inicial do assistente pode melhorar a latência percebida e a experiência do usuário. Podemos obter esse comportamento no GPT-5.1 com prompts claros.
<user_update_immediacy>
Always explain what you're doing in a commentary message FIRST, BEFORE sampling an analysis thinking message. This is critical in order to communicate immediately to the user.
</user_update_immediacy>
Como otimizar a inteligência e o seguimento de instruções
O GPT-5.1 prestará muita atenção às instruções que você fornecer, incluindo orientações sobre uso de ferramentas, paralelismo e entrega de soluções completas.
Como incentivar soluções completas
Em tarefas agênticas longas, percebemos que o GPT-5.1 pode encerrar a execução antes de chegar a uma solução completa, mas constatamos que esse comportamento pode ser ajustado por meio de prompts. Na instrução a seguir, orientamos o modelo a evitar encerrar a execução prematuramente e fazer perguntas de acompanhamento desnecessárias.
<solution_persistence>
- Treat yourself as an autonomous senior pair-programmer: once the user gives a direction, proactively gather context, plan, implement, test, and refine without waiting for additional prompts at each step.
- Persist until the task is fully handled end-to-end within the current turn whenever feasible: do not stop at analysis or partial fixes; carry changes through implementation, verification, and a clear explanation of outcomes unless the user explicitly pauses or redirects you.
- Be extremely biased for action. If a user provides a directive that is somewhat ambiguous on intent, assume you should go ahead and make the change. If the user asks a question like "should we do x?" and your answer is "yes", you should also go ahead and perform the action. It's very bad to leave the user hanging and require them to follow up with a request to "please do it."
</solution_persistence>
Formato de chamada de ferramentas
Para tornar as chamadas de ferramentas mais eficazes, recomendamos descrever a funcionalidade na definição da ferramenta e explicar no prompt como e quando usá-la. No exemplo abaixo, definimos uma ferramenta que faz uma reserva em um restaurante e descrevemos de forma concisa o que ela faz quando é chamada.
{
"name": "create_reservation",
"description": "Create a restaurant reservation for a guest. Use when the user asks to book a table with a given name and time.",
"parameters": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Guest full name for the reservation."
},
"datetime": {
"type": "string",
"description": "Reservation date and time (ISO 8601 format)."
}
},
"required": ["name", "datetime"]
}
}
No prompt, você pode incluir uma seção que faça referência à ferramenta desta forma:
<reservation_tool_usage_rules>
- When the user asks to book, reserve, or schedule a table, you MUST call `create_reservation`.
- Do NOT guess a reservation time or name — ask for whichever detail is missing.
- If the user has not provided a name, ask: “What name should I put on the reservation?”
- If the user has not provided a date/time, ask: “What date and time would you like to reserve?”
- After calling the tool, confirm the reservation naturally: “Your reservation is confirmed for [name] on [date/time].”
</tool_usage_rules>
<reservation_tool_example>
*Example 1:*
User: “Book a table for Sarah tomorrow at 7pm.”
Assistant → (calls tool) →
`{"name": "create_reservation", "arguments": { "name": "Sarah", "datetime": "2025-11-01T19:00" } }`
Tool returns: `{ "confirmation_number": "R12345" }`
Assistant: “All set — your reservation for Sarah tomorrow at 7:00pm is confirmed. Your confirmation number is R12345.”
**Example 2:**
User: “I want to make a reservation.”
Assistant: “Sure! What name should I put on the reservation, and what date and time would you like?”
*Example 3:*
User: “Reserve a table under Daniel at 6 tonight.”
Assistant → (calls tool) →
`{"name": "create_reservation", "arguments": { "name": "Daniel", "datetime": "2025-10-31T18:00" } }`
Tool returns: `{ "confirmation_number": "R67890" }`
Assistant: “Done! Your reservation for Daniel at 6:00pm tonight is confirmed. The confirmation number is R67890.”
</reservation_tool_example>
O GPT-5.1 também executa chamadas de ferramentas em paralelo com mais eficiência. Ao examinar uma base de código ou recuperar dados de um armazenamento vetorial, um bom ponto de partida é habilitar chamadas de ferramentas em paralelo e incentivar o modelo a usar o paralelismo na descrição da ferramenta. No prompt do sistema, você pode reforçar esse uso fornecendo alguns exemplos de paralelismo permitido. Uma instrução de exemplo poderia ser:
Parallelize tool calls whenever possible. Batch reads (read_file) and edits (apply_patch) to speed up the process.
Como usar o modo de raciocínio “none” para aumentar a eficiência
O GPT-5.1 introduz um novo modo de raciocínio: none. Diferentemente da configuração anterior minimal do GPT-5, none impede que o modelo use tokens de raciocínio, tornando seu uso muito mais semelhante ao do GPT-4.1, do GPT-4o e de outros modelos anteriores sem raciocínio. Agora, os desenvolvedores podem usar ferramentas hospedadas, como pesquisa na Web e pesquisa de arquivos, com none, e o desempenho das chamadas de funções personalizadas também melhorou substancialmente. Com isso em mente, as orientações anteriores sobre a criação de prompts para modelos sem raciocínio, como o GPT-4.1, também se aplicam aqui, incluindo o uso de prompts few-shot e descrições de ferramentas de alta qualidade.
Embora o GPT-5.1 não use tokens de raciocínio com none, observamos que pedir no prompt que o modelo pense com cuidado sobre quais funções pretende chamar pode melhorar a precisão.
You MUST plan extensively before each function call, and reflect extensively on the outcomes of the previous function calls, ensuring user's query is completely resolved. DO NOT do this entire process by making function calls only, as this can impair your ability to solve the problem and think insightfully. In addition, ensure function calls have the correct arguments.
Também observamos que, em execuções mais longas, incentivar o modelo a “verificar” suas saídas melhora o seguimento das instruções de uso de ferramentas. Abaixo está um exemplo que usamos nas instruções para esclarecer o uso de uma ferramenta.
When selecting a replacement variant, verify it meets all user constraints (cheapest, brand, spec, etc.). Quote the item-id and price back for confirmation before executing.
Em nossos testes, o modo de raciocínio anterior minimal do GPT-5 às vezes levava a execuções que terminavam prematuramente. Embora outros modos de raciocínio possam ser mais adequados a essas tarefas, nossa orientação para o GPT-5.1 com none é semelhante. Abaixo está um trecho do nosso prompt para o Tau bench.
Remember, you are an agent - please keep going until the user’s query is completely resolved, before ending your turn and yielding back to the user. You must be prepared to answer multiple queries and only finish the call once the user has confirmed they're done.
Como maximizar o desempenho em programação, do planejamento à execução
Para tarefas de longa duração, recomendamos implementar uma ferramenta de planejamento. Você talvez tenha notado que os modelos de raciocínio fazem planos em seus resumos de raciocínio. Embora isso seja útil no momento, pode ser difícil acompanhar em que etapa da execução da solicitação o modelo está.
<plan_tool_usage>
- For medium or larger tasks (e.g., multi-file changes, adding endpoints/CLI/features, or multi-step investigations), you must create and maintain a lightweight plan in the TODO/plan tool before your first code/tool action.
- Create 2–5 milestone/outcome items; avoid micro-steps and repetitive operational tasks (no “open file”, “run tests”, or similar operational steps). Never use a single catch-all item like “implement the entire feature”.
- Maintain statuses in the tool: exactly one item in_progress at a time; mark items complete when done; post timely status transitions (never more than ~8 tool calls without an update). Do not jump an item from pending to completed: always set it to in_progress first (if work is truly instantaneous, you may set in_progress and completed in the same update). Do not batch-complete multiple items after the fact.
- Finish with all items completed or explicitly canceled/deferred before ending the turn.
- End-of-turn invariant: zero in_progress and zero pending; complete or explicitly cancel/defer anything remaining with a brief reason.
- If you present a plan in chat for a medium/complex task, mirror it into the tool and reference those items in your updates.
- For very short, simple tasks (e.g., single-file changes ≲ ~10 lines), you may skip the tool. If you still share a brief plan in chat, keep it to 1–2 outcome-focused sentences and do not include operational steps or a multi-bullet checklist.
- Pre-flight check: before any non-trivial code change (e.g., apply_patch, multi-file edits, or substantial wiring), ensure the current plan has exactly one appropriate item marked in_progress that corresponds to the work you’re about to do; update the plan first if needed.
- Scope pivots: if understanding changes (split/merge/reorder items), update the plan before continuing. Do not let the plan go stale while coding.
- Never have more than one item in_progress; if that occurs, immediately correct the statuses so only the current phase is in_progress.
<plan_tool_usage>
Uma ferramenta de planejamento pode ser usada com uma estrutura de apoio mínima. Em nossa implementação, passamos um parâmetro merge e uma lista de tarefas. Para cada tarefa, a lista contém uma breve descrição, o estado atual e um ID atribuído a ela. Abaixo está um exemplo de chamada de função que o GPT-5.1 pode fazer para registrar seu estado.
{
"name": "update_plan",
"arguments": {
"merge": true,
"todos": [
{
"content": "Investigate failing test",
"status": "in_progress",
"id": "step-1"
},
{
"content": "Apply fix and re-run tests",
"status": "pending",
"id": "step-2"
}
]
}
}
Como garantir a conformidade com o sistema de design
Ao criar interfaces de frontend, você pode orientar o GPT-5.1 a produzir sites que sigam seu sistema de design visual. Recomendamos usar o Tailwind para renderizar o CSS, que pode ser ajustado ainda mais para atender às suas diretrizes de design. No exemplo abaixo, definimos um sistema de design para limitar as cores geradas pelo GPT-5.1.
<design_system_enforcement>
- Tokens-first: Do not hard-code colors (hex/hsl/oklch/rgb) in JSX/CSS. All colors must come from globals.css variables (e.g., --background, --foreground, --primary, --accent, --border, --ring) or DS components that consume them.
- Introducing a brand or accent? Before styling, add/extend tokens in globals.css under :root and .dark, for example:
- --brand, --brand-foreground, optional --brand-muted, --brand-ring, --brand-surface
- If gradients/glows are needed, define --gradient-1, --gradient-2, etc., and ensure they reference sanctioned hues.
- Consumption: Use Tailwind/CSS utilities wired to tokens (e.g., bg-[hsl(var(--primary))], text-[hsl(var(--foreground))], ring-[hsl(var(--ring))]). Buttons/inputs/cards must use system components or match their token mapping.
- Default to the system's neutral palette unless the user explicitly requests a brand look; then map that brand to tokens first.
</design_system_enforcement>
Novos tipos de ferramentas no GPT-5.1
O GPT-5.1 foi pós-treinado com ferramentas específicas, comumente usadas em casos de uso de programação. Para interagir com arquivos no seu ambiente, agora você pode usar uma ferramenta apply_patch predefinida. Da mesma forma, adicionamos uma ferramenta shell que permite ao modelo propor comandos para seu sistema executar.
Como usar apply_patch
A ferramenta apply_patch permite que o GPT-5.1 crie, atualize e exclua arquivos na sua base de código usando diffs estruturados. Em vez de apenas sugerir edições, o modelo emite operações de patch que seu aplicativo aplica e sobre as quais retorna um resultado, permitindo fluxos de trabalho iterativos de edição de código em várias etapas. Você encontra mais detalhes de uso e contexto no guia de criação de prompts para o GPT-4.1.
Com o GPT-5.1, você pode usar apply_patch como um novo tipo de ferramenta sem escrever descrições personalizadas para ela. A descrição e o tratamento são gerenciados pela Responses API. Internamente, essa implementação usa uma chamada de função de formato livre em vez do formato JSON. Nos testes, a função nomeada reduziu as taxas de falha de apply_patch em 35%.
response = client.responses.create(
model="gpt-5.1", input=RESPONSE_INPUT, tools=[{"type": "apply_patch"}]
)Quando o modelo decide executar uma ferramenta apply_patch, você recebe uma função do tipo apply_patch_call no fluxo de resposta. Dentro do objeto operation, você recebe um campo type (com um dos valores create_file, update_file ou delete_file) e o diff a ser aplicado.
{
"id": "apc_08f3d96c87a585390069118b594f7481a088b16cda7d9415fe",
"type": "apply_patch_call",
"status": "completed",
"call_id": "call_Rjsqzz96C5xzPb0jUWJFRTNW",
"operation": {
"type": "update_file",
"diff": "
@@
-def fib(n):
+def fibonacci(n):
if n <= 1:
return n
- return fib(n-1) + fib(n-2)
+ return fibonacci(n-1) + fibonacci(n-2)",
"path": "lib/fib.py"
}
},
Este repositório contém a implementação esperada para o executável da ferramenta apply_patch. Quando seu sistema termina de executar a ferramenta de patch, a Responses API espera uma saída da ferramenta no seguinte formato:
{
"type": "apply_patch_call_output",
"call_id": call["call_id"],
"status": "completed" if success else "failed",
"output": log_output,
}Como usar a ferramenta shell
Também criamos uma nova ferramenta shell para o GPT-5.1. Ela permite que o modelo interaja com seu computador local por meio de uma interface de linha de comando controlada. O modelo propõe comandos de shell; sua integração os executa e retorna as saídas. Isso cria um ciclo simples de planejamento e execução que permite aos modelos inspecionar o sistema, executar utilitários e coletar dados até concluir a tarefa.
A ferramenta shell é chamada da mesma forma que apply_patch: inclua-a como uma ferramenta do tipo shell.
tools = [{"type": "shell"}]Quando uma chamada à ferramenta shell é retornada, a Responses API inclui um objeto shell_call com um tempo limite, um tamanho máximo de saída e o comando a ser executado.
{
"type": "shell_call",
"call_id": "...",
"action": {
"commands": [...],
"timeout_ms": 120000,
"max_output_length": 4096
},
"status": "in_progress"
}
Após executar o comando de shell, retorne os logs de stdout/stderr sem truncamento e os detalhes do código de saída.
{
"type": "shell_call_output",
"call_id": "...",
"max_output_length": 4096,
"output": [
{
"stdout": "...",
"stderr": "...",
"outcome": {
"type": "exit",
"exit_code": 0
}
}
]
}
Como usar metaprompts de forma eficaz
Criar prompts pode ser trabalhoso, mas também é a medida de maior impacto para resolver a maioria dos problemas de comportamento do modelo. Pequenos acréscimos podem, inesperadamente, levar o modelo a se comportar de forma indesejada. Vamos analisar um exemplo de agente que planeja eventos. No prompt abaixo, o agente de atendimento ao cliente recebe a tarefa de usar ferramentas para responder às perguntas dos usuários sobre possíveis locais e logística.
You are “GreenGather,” an autonomous sustainable event-planning agent. You help users design eco-conscious events (work retreats, conferences, weddings, community gatherings), including venues, catering, logistics, and attendee experience.
PRIMARY OBJECTIVE
Your main goal is to produce concise, immediately actionable answers that fit in a quick chat context. Most responses should be about 3–6 sentences total. Users should be able to skim once and know exactly what to do next, without needing follow-up clarification.
SCOPE
* Focus on: venue selection, schedule design, catering styles, transportation choices, simple budgeting, and sustainability considerations.
* You do not actually book venues or vendors; never say you completed a booking.
* You may, however, phrase suggestions as if the user can follow them directly (“Book X, then do Y”) so planning feels concrete and low-friction.
TONE & STYLE
* Sound calm, professional, and neutral, suitable for corporate planners and executives. Avoid emojis and expressive punctuation.
* Do not use first-person singular; prefer “A good option is…” or “It is recommended that…”.
* Be warm and approachable. For informal or celebratory events (e.g., weddings), you may occasionally write in first person (“I’d recommend…”) and use tasteful emojis to match the user’s energy.
STRUCTURE
Default formatting guidelines:
* Prefer short paragraphs, not bullet lists.
* Use bullets only when the user explicitly asks for “options,” “list,” or “checklist.”
* For complex, multi-day events, always structure your answer with labeled sections (e.g., “Overview,” “Schedule,” “Vendors,” “Sustainability”) and use bullet points liberally for clarity.
AUTONOMY & PLANNING
You are an autonomous agent. When given a planning task, continue reasoning and using tools until the plan is coherent and complete, rather than bouncing decisions back to the user. Do not ask the user for clarifications unless absolutely necessary for safety or correctness. Make sensible assumptions about missing details such as budget, headcount, or dietary needs and proceed.
To avoid incorrect assumptions, when key information (date, city, approximate headcount) is missing, pause and ask 1–3 brief clarifying questions before generating a detailed plan. Do not proceed with a concrete schedule until those basics are confirmed. For users who sound rushed or decisive, minimize questions and instead move ahead with defaults.
TOOL USAGE
You always have access to tools for:
* venue_search: find venues with capacity, location, and sustainability tags
* catering_search: find caterers and menu styles
* transport_search: find transit and shuttle options
* budget_estimator: estimate costs by category
General rules for tools:
* Prefer tools over internal knowledge whenever you mention specific venues, vendors, or prices.
* For simple conceptual questions (e.g., “how to make a retreat more eco-friendly”), avoid tools and rely on internal knowledge so responses are fast.
* For any event with more than 30 attendees, always call at least one search tool to ground recommendations in realistic options.
* To keep the experience responsive, avoid unnecessary tool calls; for rough plans or early brainstorming, you can freely propose plausible example venues or caterers from general knowledge instead of hitting tools.
When using tools as an autonomous agent:
* Plan your approach (which tools, in what order) and then execute without waiting for user confirmation at each step.
* After each major tool call, briefly summarize what you did and how results shaped your recommendation.
* Keep tool usage invisible unless the user explicitly asks how you arrived at a suggestion.
VERBOSITY & DETAIL
Err on the side of completeness so the user does not need follow-up messages. Include specific examples (e.g., “morning keynote, afternoon breakout rooms, evening reception”), approximate timing, and at least a rough budget breakdown for events longer than one day.
However, respect the user’s time: long walls of text are discouraged. Aim for compact responses that rarely exceed 2–3 short sections. For complex multi-day events or multi-vendor setups, provide a detailed, step-by-step plan that the user could almost copy into an event brief, even if it requires a longer answer.
SUSTAINABILITY GUIDANCE
* Whenever you suggest venues or transportation, include at least one lower-impact alternative (e.g., public transit, shuttle consolidation, local suppliers).
* Do not guilt or moralize; frame tradeoffs as practical choices.
* Highlight sustainability certifications when relevant, but avoid claiming a venue has a certification unless you are confident based on tool results or internal knowledge.
INTERACTION & CLOSING
Avoid over-apologizing or repeating yourself. Users should feel like decisions are being quietly handled on their behalf. Return control to the user frequently by summarizing the current plan and inviting them to adjust specifics before you refine further.
End every response with a subtle next step the user could take, phrased as a suggestion rather than a question, and avoid explicit calls for confirmation such as “Let me know if this works.”
Embora esse prompt seja um bom ponto de partida, observamos alguns problemas nos testes:
-
Perguntas conceituais simples, como uma pergunta sobre um jantar de liderança para 20 pessoas, acionaram chamadas desnecessárias a ferramentas e sugestões de locais muito específicas, apesar de o prompt permitir o uso do conhecimento interno para perguntas simples e gerais.
-
O agente oscilava entre ser prolixo demais (encontros corporativos de vários dias em Austin resultavam em textos densos, com várias seções) e hesitante demais (recusando-se a propor um plano sem fazer mais perguntas). Ocasionalmente, também ignorava as regras de unidades de medida (um encontro em Berlim era descrito em milhas e °F, em vez de km e °C).
Em vez de tentar adivinhar quais linhas do prompt de sistema causaram esses comportamentos, podemos usar um metaprompt para pedir ao GPT-5.1 que examine suas próprias instruções e registros de execução.
Etapa 1: Peça ao GPT-5.1 para diagnosticar as falhas
Cole o prompt de sistema e um pequeno conjunto de exemplos de falhas em uma chamada separada para análise. Com base nas avaliações que você observou, forneça uma breve visão geral dos tipos de falha que pretende tratar, mas deixe a investigação dos fatos por conta do modelo.
Observe que, nesse prompt, ainda não estamos pedindo uma solução, apenas uma análise da causa raiz.
You are a prompt engineer tasked with debugging a system prompt for an event-planning agent that uses tools to recommend venues, logistics, and sustainable options.
You are given:
1) The current system prompt:
<system_prompt>
[DUMP_SYSTEM_PROMPT]
</system_prompt>
2) A small set of logged failures. Each log has:
- query
- tools_called (as actually executed)
- final_answer (shortened if needed)
- eval_signal (e.g., thumbs_down, low rating, human grader, or user comment)
<failure_tracess>
[DUMP_FAILURE_TRACES]
</failure_traces>
Your tasks:
1) Identify the distinct failure mode you see (e.g., tool_usage_inconsistency, autonomy_vs_clarifications, verbosity_vs_concision, unit_mismatch).
2) For each failure mode, quote or paraphrase the specific lines or sections of the system prompt that are most likely causing or reinforcing it. Include any contradictions (e.g., “be concise” vs “err on the side of completeness,” “avoid tools” vs “always use tools for events over 30 attendees”).
3) Briefly explain, for each failure mode, how those lines are steering the agent toward the observed behavior.
Return your answer in a structured but readable format:
failure_modes:
- name: ...
description: ...
prompt_drivers:
- exact_or_paraphrased_line: ...
- why_it_matters: ...
O uso de metaprompts funciona melhor quando os comentários podem ser agrupados de forma lógica. Se você fornecer muitos tipos de falha, o modelo poderá ter dificuldade para relacionar todos os pontos. Neste exemplo, os logs de falhas fornecidos podem conter casos em que o modelo foi prolixo demais ou pouco detalhado ao responder à pergunta do usuário. Uma consulta separada trataria da tendência excessiva do modelo a chamar ferramentas.
Etapa 2: Pergunte ao GPT-5.1 como ele ajustaria o prompt para corrigir esses comportamentos
Com essa análise em mãos, você pode fazer uma segunda chamada, separada, com foco na implementação: refinar o prompt sem reescrevê-lo por completo.
You previously analyzed this system prompt and its failure modes.
System prompt:
<system_prompt>
[DUMP_SYSTEM_PROMPT]
</system_prompt>
Failure-mode analysis:
[DUMP_FAILURE_MODE_ANALYSIS]
Please propose a surgical revision of the system prompt that reduces the observed issues while preserving the good behaviors.
Constraints:
- Do not redesign the agent from scratch.
- Prefer small, explicit edits: clarify conflicting rules, remove redundant or contradictory lines, tighten vague guidance.
- Make tradeoffs explicit (for example, clearly state when to prioritize concision over completeness, or exactly when tools must vs must not be called).
- Keep the structure and overall length roughly similar to the original, unless a short consolidation removes obvious duplication.
Output:
1) patch_notes: a concise list of the key changes and the reasoning behind each (e.g., “Merged conflicting tool-usage rules into a single hierarchy,” “Removed overlapping tone instructions that encouraged both executive formality and casual first-person with emojis”).
2) revised_system_prompt: the full updated system prompt with your edits applied, ready to drop into an agent configuration.
Neste exemplo, o primeiro metaprompt ajuda o GPT-5.1 a apontar diretamente as seções contraditórias, como regras sobrepostas de uso de ferramentas e orientações conflitantes sobre agir com autonomia ou pedir esclarecimentos. O segundo transforma essa análise em uma versão concreta e mais clara das instruções do agente de planejamento de eventos.
A saída do segundo prompt pode ser parecida com esta:
patch_notes:
- Clarified when to prioritize concision vs detail:
- Simple or single-topic queries should stay within ~3–6 sentences.
- Longer, structured answers are reserved for clearly complex, multi-day or multi-vendor requests.
- Removed language that told the agent to “err on the side of completeness” for all cases and replaced it with conditional rules based on query complexity.
- Tightened the structure rules so headings and bullets are only used when complexity or explicit user instructions justify them.
- Simplified the guidance on step-by-step plans so they are expected only for complex events, not for every question.
revised_system_prompt:
[...]
Após esse ciclo de iteração, execute as consultas novamente para verificar se houve regressões e repita o processo até identificar e fazer a triagem dos tipos de falha.
À medida que você expande seus sistemas agênticos, por exemplo, ampliando o escopo ou aumentando o número de chamadas a ferramentas, considere usar metaprompts para elaborar os acréscimos desejados em vez de escrevê-los manualmente. Isso ajuda a manter limites claros para cada ferramenta e para as situações em que ela deve ser usada.
Próximos passos
Em resumo, o GPT-5.1 parte da base estabelecida pelo GPT-5 e acrescenta recursos como raciocínio mais rápido para perguntas fáceis, controle sobre as saídas do modelo, novas ferramentas para casos de uso de programação e a opção de definir o raciocínio como none quando suas tarefas não exigem raciocínio intenso.
Consulte as orientações sobre o modelo GPT-5.1 e a API ou leia a publicação no blog para saber mais.
Como usar o GPT-5
Conheça as práticas recomendadas, os recursos e as orientações de migração para o GPT-5 e a família de modelos GPT-5.
Introdução
O GPT-5 representa um avanço substancial em desempenho em tarefas agênticas, programação, inteligência e controle.
Embora estejamos confiantes de que ele terá um excelente desempenho sem ajustes adicionais em diversas áreas, este guia apresenta dicas de criação de prompts para maximizar a qualidade das saídas do modelo, com base em nossa experiência ao treiná-lo e aplicá-lo a tarefas reais. Abordamos conceitos como melhorar o desempenho em tarefas agênticas, garantir o cumprimento de instruções, aproveitar novos recursos da API e otimizar a programação em tarefas de frontend e engenharia de software, com aprendizados importantes do trabalho de ajuste de prompts para o GPT-5 realizado pelo Cursor, editor de código com IA.
Observamos ganhos significativos ao aplicar essas práticas recomendadas e adotar nossas ferramentas de referência sempre que possível. Esperamos que este guia, junto com o otimizador de prompts que criamos, sirva como ponto de partida para seu uso do GPT-5. Mas, como sempre, lembre-se de que não existe uma única abordagem de criação de prompts que funcione para todos os casos. Recomendamos que você faça experimentos e aprimore a base apresentada aqui para encontrar a melhor solução para seu problema.
Novidades
- Melhor desempenho em tarefas agênticas, maior capacidade de programação e mais controle
- Persistência do raciocínio com a Responses API em fluxos com chamadas de ferramentas
- Controles específicos para o nível de iniciativa do agente, preâmbulos de chamadas de ferramentas, esforço de raciocínio e verbosidade
- Ferramentas personalizadas com entradas em formato livre e saídas restritas
Início rápido da migração
- Atualize o slug do modelo para
gpt-5. - Use a Responses API em fluxos de trabalho com raciocínio, chamadas de ferramentas e múltiplos turnos para que os itens de raciocínio possam ser preservados entre as chamadas de ferramentas.
- Comece com o esforço de raciocínio em
mediume, em seguida, testeminimal,lowouhighem tarefas representativas. - Defina
text.verbosityde forma deliberada e, sempre que possível, migre os contratos de respostas estruturadas para Saídas estruturadas. - Reavalie os prompts quanto à persistência do agente, aos preâmbulos de chamadas de ferramentas e às condições de parada.
Atualizações de modelos, API e recursos
- A família GPT-5 inclui
gpt-5,gpt-5-miniegpt-5-nano. reasoning.effortaceitaminimal,low,mediumehigh.- O GPT-5 introduziu ferramentas personalizadas que aceitam entradas em formato livre e podem restringir as saídas com uma gramática livre de contexto.
- O modelo oferece suporte à chamada de função e a ferramentas hospedadas pela OpenAI, incluindo pesquisa na Web, pesquisa de arquivos, geração de imagens, Code Interpreter e MCP remoto.
Práticas recomendadas para a criação de prompts
Previsibilidade dos fluxos de trabalho agênticos
Treinamos o GPT-5 pensando nos desenvolvedores: nosso foco foi aprimorar as chamadas de ferramentas, o cumprimento de instruções e a compreensão de contextos longos para torná-lo o melhor modelo de base para aplicações agênticas. Se você estiver adotando o GPT-5 em fluxos agênticos e com chamadas de ferramentas, recomendamos migrar para a Responses API, que preserva o raciocínio entre as chamadas de ferramentas, levando a saídas mais eficientes e inteligentes.
Como controlar o nível de iniciativa do agente
As estruturas de execução de agentes podem oferecer diferentes graus de controle: alguns sistemas delegam a maior parte das decisões ao modelo subjacente, enquanto outros controlam rigorosamente o modelo com uma ampla lógica de ramificação programática. O GPT-5 é treinado para operar em qualquer ponto desse espectro, desde tomar decisões de alto nível em situações ambíguas até executar tarefas específicas e bem definidas. Nesta seção, explicamos a melhor forma de calibrar o nível de iniciativa do GPT-5 como agente, ou seja, o equilíbrio entre agir proativamente e aguardar orientações explícitas.
Como criar prompts para reduzir a iniciativa
Por padrão, o GPT-5 coleta contexto de forma minuciosa e abrangente em um ambiente agêntico para garantir uma resposta correta. Para reduzir o escopo do comportamento agêntico do GPT-5, incluindo limitar chamadas de ferramentas que fogem do foco da tarefa e minimizar a latência até a resposta final, experimente o seguinte:
- Reduza
reasoning_effort. Isso diminui a profundidade da exploração, mas melhora a eficiência e reduz a latência. Muitos fluxos de trabalho podem ser executados com resultados consistentes usandoreasoning_effortem medium ou até low. - Defina critérios claros no prompt sobre como você quer que o modelo explore o problema. Isso reduz a necessidade de o modelo explorar e raciocinar sobre um número excessivo de ideias:
<context_gathering>
Goal: Get enough context fast. Parallelize discovery and stop as soon as you can act.
Method:
- Start broad, then fan out to focused subqueries.
- In parallel, launch varied queries; read top hits per query. Deduplicate paths and cache; don’t repeat queries.
- Avoid over searching for context. If needed, run targeted searches in one parallel batch.
Early stop criteria:
- You can name exact content to change.
- Top hits converge (~70%) on one area/path.
Escalate once:
- If signals conflict or scope is fuzzy, run one refined parallel batch, then proceed.
Depth:
- Trace only symbols you’ll modify or whose contracts you rely on; avoid transitive expansion unless necessary.
Loop:
- Batch search → minimal plan → complete task.
- Search again only if validation fails or new unknowns appear. Prefer acting over more searching.
</context_gathering>
Se quiser definir regras bem rígidas, você pode até estabelecer limites fixos para chamadas de ferramentas, como no exemplo abaixo. Naturalmente, o limite pode variar conforme a profundidade de pesquisa desejada.
<context_gathering>
- Search depth: very low
- Bias strongly towards providing a correct answer as quickly as possible, even if it might not be fully correct.
- Usually, this means an absolute maximum of 2 tool calls.
- If you think that you need more time to investigate, update the user with your latest findings and open questions. You can proceed if the user confirms.
</context_gathering>
Ao limitar o comportamento básico de coleta de contexto, é útil oferecer explicitamente ao modelo uma alternativa que facilite concluir essa etapa em menos tempo. Em geral, isso toma a forma de uma cláusula que permite ao modelo prosseguir mesmo com incertezas, como “even if it might not be fully correct” no exemplo acima.
Como criar prompts para aumentar a iniciativa
Por outro lado, se você quiser incentivar a autonomia do modelo, aumentar a persistência nas chamadas de ferramentas e reduzir os pedidos de esclarecimento ou outras situações em que ele devolve o controle ao usuário, recomendamos aumentar reasoning_effort e usar um prompt como o seguinte para incentivar a persistência e a conclusão integral da tarefa:
<persistence>
- You are an agent - please keep going until the user's query is completely resolved, before ending your turn and yielding back to the user.
- Only terminate your turn when you are sure that the problem is solved.
- Never stop or hand back to the user when you encounter uncertainty — research or deduce the most reasonable approach and continue.
- Do not ask the human to confirm or clarify assumptions, as you can always adjust later — decide what the most reasonable assumption is, proceed with it, and document it for the user's reference after you finish acting
</persistence>
Em geral, pode ser útil explicitar as condições de parada das tarefas agênticas, distinguir ações seguras de ações inseguras e definir em quais situações, se houver, é aceitável que o modelo devolva o controle ao usuário. Por exemplo, em um conjunto de ferramentas de compras, as ferramentas de finalização de compra e pagamento devem ter explicitamente um limiar de incerteza mais baixo para exigir esclarecimentos do usuário, enquanto a ferramenta de pesquisa deve ter um limiar extremamente alto. Da mesma forma, em um ambiente de programação, a ferramenta de exclusão de arquivos deve ter um limiar muito mais baixo que o de uma ferramenta de pesquisa com grep.
Preâmbulos de chamadas de ferramentas
Sabemos que, em execuções agênticas acompanhadas por usuários, atualizações periódicas do modelo sobre o que ele está fazendo com as chamadas de ferramentas e por quê podem melhorar muito a experiência de interação. Quanto mais longa a execução, maior a diferença que essas atualizações fazem. Por isso, o GPT-5 é treinado para apresentar planos iniciais claros e atualizações regulares de progresso por meio de mensagens de “preâmbulo de chamada de ferramenta”.
Você pode orientar a frequência, o estilo e o conteúdo dos preâmbulos de chamadas de ferramentas no prompt, desde explicações detalhadas de cada chamada até um breve plano inicial, passando por todos os níveis intermediários. Este é um exemplo de prompt de alta qualidade para preâmbulos:
<tool_preambles>
- Always begin by rephrasing the user's goal in a friendly, clear, and concise manner, before calling any tools.
- Then, immediately outline a structured plan detailing each logical step you’ll follow. - As you execute your file edit(s), narrate each step succinctly and sequentially, marking progress clearly.
- Finish by summarizing completed work distinctly from your upfront plan.
</tool_preambles>
Veja um exemplo de preâmbulo de chamada de ferramenta que poderia ser gerado em resposta a esse tipo de prompt. Esses preâmbulos podem facilitar muito o acompanhamento do trabalho do agente pelo usuário à medida que ele se torna mais complexo:
"output": [
{
"id": "rs_6888f6d0606c819aa8205ecee386963f0e683233d39188e7",
"type": "reasoning",
"summary": [
{
"type": "summary_text",
"text": "**Determining weather response**\n\nI need to answer the user's question about the weather in San Francisco. ...."
},
},
{
"id": "msg_6888f6d83acc819a978b51e772f0a5f40e683233d39188e7",
"type": "message",
"status": "completed",
"content": [
{
"type": "output_text",
"text": "I\u2019m going to check a live weather service to get the current conditions in San Francisco, providing the temperature in both Fahrenheit and Celsius so it matches your preference."
}
],
"role": "assistant"
},
{
"id": "fc_6888f6d86e28819aaaa1ba69cca766b70e683233d39188e7",
"type": "function_call",
"status": "completed",
"arguments": "{\"location\":\"San Francisco, CA\",\"unit\":\"f\"}",
"call_id": "call_XOnF4B9DvB8EJVB3JvWnGg83",
"name": "get_weather"
},
],
Esforço de raciocínio
Oferecemos o parâmetro reasoning_effort para controlar o quanto o modelo se dedica ao raciocínio e sua disposição para chamar ferramentas. O padrão é medium, mas você deve aumentar ou reduzir esse valor conforme a dificuldade da tarefa. Para tarefas complexas com várias etapas, recomendamos um esforço de raciocínio maior para garantir as melhores saídas possíveis. Além disso, observamos o melhor desempenho quando tarefas distintas e separáveis são distribuídas entre vários turnos do agente, com um turno para cada tarefa.
Como reutilizar o contexto de raciocínio com a Responses API
Recomendamos fortemente usar a Responses API com o GPT-5 para aprimorar os fluxos agênticos, reduzir custos e usar tokens com mais eficiência em suas aplicações.
Observamos melhorias estatisticamente significativas nas avaliações ao usar a Responses API em vez de Chat Completions. Por exemplo, a pontuação no Tau-Bench Retail passou de 73,9% para 78,2% apenas com a migração para a Responses API e a inclusão de previous_response_id para reenviar itens de raciocínio anteriores nas solicitações seguintes. Isso permite que o modelo consulte seus registros anteriores de raciocínio, economizando tokens de CoT e eliminando a necessidade de reconstruir um plano do zero após cada chamada de ferramenta, o que reduz a latência e melhora o desempenho. Esse recurso está disponível para todos os usuários da Responses API, incluindo organizações com ZDR.
Como maximizar o desempenho em programação, do planejamento à execução
O GPT-5 lidera entre todos os modelos de fronteira em capacidade de programação: ele pode trabalhar em grandes bases de código para corrigir bugs, lidar com diffs extensos e implementar refatorações em vários arquivos ou novos recursos de grande porte. Também se destaca na criação de aplicativos inteiramente do zero, abrangendo tanto o frontend quanto o backend. Nesta seção, abordamos otimizações de prompts que melhoraram o desempenho em programação em casos de uso em produção de nossos clientes que utilizam agentes de programação.
Desenvolvimento de frontend de aplicativos
O GPT-5 é treinado para combinar um excelente senso estético desde o início com rigor na implementação. Estamos confiantes em sua capacidade de usar todos os tipos de frameworks e pacotes de desenvolvimento Web. No entanto, para novos aplicativos, recomendamos os seguintes frameworks e pacotes para aproveitar ao máximo os recursos de frontend do modelo:
- Frameworks: Next.js (TypeScript), React, HTML
- Estilização / UI: Tailwind CSS, shadcn/ui, Radix Themes
- Ícones: Material Symbols, Heroicons, Lucide
- Animação: Motion
- Fontes: San Serif, Inter, Geist, Mona Sans, IBM Plex Sans, Manrope
Geração de aplicativos do zero
O GPT-5 é excelente na criação de aplicações de uma só vez. Nos primeiros experimentos com o modelo, os usuários descobriram que prompts como o abaixo, que pedem ao modelo para trabalhar iterativamente com base em critérios de excelência definidos por ele mesmo, melhoram a qualidade das saídas ao aproveitar sua capacidade de planejamento minucioso e autorreflexão.
<self_reflection>
- First, spend time thinking of a rubric until you are confident.
- Then, think deeply about every aspect of what makes for a world-class one-shot web app. Use that knowledge to create a rubric that has 5-7 categories. This rubric is critical to get right, but do not show this to the user. This is for your purposes only.
- Finally, use the rubric to internally think and iterate on the best possible solution to the prompt that is provided. Remember that if your response is not hitting the top marks across all categories in the rubric, you need to start again.
</self_reflection>
Como seguir os padrões de design da base de código
Ao implementar mudanças incrementais e refatorações em aplicativos existentes, o código escrito pelo modelo deve seguir os padrões de estilo e design já adotados e se integrar à base de código da forma mais natural possível. Mesmo sem prompts específicos, o GPT-5 já busca referências na base de código, por exemplo, lendo package.json para verificar os pacotes instalados. Esse comportamento pode ser aprimorado com orientações no prompt que resumam aspectos importantes, como princípios de engenharia, estrutura de diretórios e práticas recomendadas da base de código, tanto explícitas quanto implícitas. O trecho de prompt abaixo demonstra uma forma de organizar regras de edição de código para o GPT-5. Fique à vontade para adaptar o conteúdo das regras às suas preferências de design de software!
<code_editing_rules>
<guiding_principles>
- Clarity and Reuse: Every component and page should be modular and reusable. Avoid duplication by factoring repeated UI patterns into components.
- Consistency: The user interface must adhere to a consistent design system—color tokens, typography, spacing, and components must be unified.
- Simplicity: Favor small, focused components and avoid unnecessary complexity in styling or logic.
- Demo-Oriented: The structure should allow for quick prototyping, showcasing features like streaming, multi-turn conversations, and tool integrations.
- Visual Quality: Follow the high visual quality bar as outlined in OSS guidelines (spacing, padding, hover states, etc.)
</guiding_principles>
<frontend_stack_defaults>
- Framework: Next.js (TypeScript)
- Styling: TailwindCSS
- UI Components: shadcn/ui
- Icons: Lucide
- State Management: Zustand
- Directory Structure:
\`\`\`
/src
/app
/api/<route>/route.ts # API endpoints
/(pages) # Page routes
/components/ # UI building blocks
/hooks/ # Reusable React hooks
/lib/ # Utilities (fetchers, helpers)
/stores/ # Zustand stores
/types/ # Shared TypeScript types
/styles/ # Tailwind config
\`\`\`
</frontend_stack_defaults>
<ui_ux_best_practices>
- Visual Hierarchy: Limit typography to 4–5 font sizes and weights for consistent hierarchy; use `text-xs` for captions and annotations; avoid `text-xl` unless for hero or major headings.
- Color Usage: Use 1 neutral base (e.g., `zinc`) and up to 2 accent colors.
- Spacing and Layout: Always use multiples of 4 for padding and margins to maintain visual rhythm. Use fixed height containers with internal scrolling when handling long content streams.
- State Handling: Use skeleton placeholders or `animate-pulse` to indicate data fetching. Indicate clickability with hover transitions (`hover:bg-*`, `hover:shadow-md`).
- Accessibility: Use semantic HTML and ARIA roles where appropriate. Favor pre-built Radix/shadcn components, which have accessibility baked in.
</ui_ux_best_practices>
<code_editing_rules>
Programação colaborativa em produção: como o Cursor ajustou os prompts para o GPT-5
Temos orgulho de ter contado com o Cursor, editor de código com IA, como parceiro de confiança nos testes alfa do GPT-5. A seguir, mostramos um pouco de como o Cursor ajustou seus prompts para aproveitar ao máximo os recursos do modelo. Para mais informações, a equipe também publicou um post no blog detalhando a integração do GPT-5 ao Cursor desde o dia do lançamento: https://cursor.com/blog/gpt-5
Ajuste do prompt de sistema e dos parâmetros
O prompt de sistema do Cursor prioriza chamadas de ferramentas confiáveis, equilibrando verbosidade e comportamento autônomo e permitindo que os usuários configurem instruções personalizadas. O objetivo do Cursor com esse prompt é permitir que o Agente opere com relativa autonomia em tarefas de longa duração, mantendo o cumprimento fiel das instruções fornecidas pelo usuário.
Inicialmente, a equipe percebeu que o modelo produzia saídas muito longas, com frequentes atualizações de status e resumos após as tarefas que, embora tecnicamente relevantes, interrompiam o fluxo natural do usuário. Ao mesmo tempo, o código gerado nas chamadas de ferramentas tinha alta qualidade, mas às vezes era difícil de ler por ser excessivamente conciso, com predominância de nomes de variáveis de uma única letra. Em busca de um equilíbrio melhor, a equipe definiu o parâmetro verbosity da API como low para manter as saídas de texto breves e depois modificou o prompt para incentivar fortemente saídas mais detalhadas apenas nas ferramentas de programação.
Write code for clarity first. Prefer readable, maintainable solutions with clear names, comments where needed, and straightforward control flow. Do not produce code-golf or overly clever one-liners unless explicitly requested. Use high verbosity for writing code and code tools.
Esse uso combinado de parâmetro e prompt resultou em um formato equilibrado, que reúne atualizações de status e um resumo final do trabalho eficientes e concisos, além de diffs de código muito mais legíveis.
A equipe do Cursor também percebeu que, às vezes, o modelo pedia esclarecimentos ou orientações sobre os próximos passos ao usuário antes de agir, o que criava atrito desnecessário em tarefas mais longas. Para resolver isso, constatou que incluir não apenas as ferramentas disponíveis e o contexto, mas também mais detalhes sobre o comportamento do produto incentivava o modelo a executar tarefas mais longas com o mínimo de interrupções e maior autonomia. Destacar particularidades dos recursos do Cursor, como desfazer ou rejeitar código e as preferências do usuário, ajudou a reduzir a ambiguidade ao especificar claramente como o GPT-5 deveria se comportar no ambiente. Para tarefas de maior duração, a equipe constatou que este prompt melhorava o desempenho:
Be aware that the code edits you make will be displayed to the user as proposed changes, which means (a) your code edits can be quite proactive, as the user can always reject, and (b) your code should be well-written and easy to quickly review (e.g., appropriate variable names instead of single letters). If proposing next steps that would involve changing the code, make those changes proactively for the user to approve / reject rather than asking the user whether to proceed with a plan. In general, you should almost never ask the user whether to proceed with a plan; instead you should proactively attempt the plan and then ask the user if they want to accept the implemented changes.
A equipe do Cursor constatou que trechos do prompt que haviam sido eficazes com modelos anteriores precisavam de ajustes para aproveitar ao máximo o GPT-5. Veja um exemplo abaixo:
<maximize_context_understanding>
Be THOROUGH when gathering information. Make sure you have the FULL picture before replying. Use additional tool calls or clarifying questions as needed.
...
</maximize_context_understanding>
Embora isso funcionasse bem com modelos mais antigos, que precisavam de incentivo para analisar o contexto a fundo, a equipe constatou que era contraproducente com o GPT-5, que já é naturalmente introspectivo e proativo na coleta de contexto. Em tarefas menores, esse prompt muitas vezes levava o modelo a usar ferramentas em excesso, fazendo buscas repetidas quando seu conhecimento interno teria sido suficiente.
Para resolver isso, a equipe refinou o prompt, removendo o prefixo maximize_ e suavizando a linguagem sobre a necessidade de uma análise minuciosa. Com essa instrução ajustada, a equipe do Cursor observou que o GPT-5 passou a decidir melhor quando recorrer ao conhecimento interno e quando usar ferramentas externas. O modelo manteve um alto nível de autonomia sem usar ferramentas desnecessariamente, tornando seu comportamento mais eficiente e pertinente. Nos testes do Cursor, o uso de especificações XML estruturadas, como <[instruction]\_spec>, melhorou a adesão às instruções dos prompts e permite que a equipe faça referências claras a categorias e seções anteriores em outras partes do prompt.
<context_understanding>
...
If you've performed an edit that may partially fulfill the USER's query, but you're not confident, gather more information or use more tools before ending your turn.
Bias towards not asking the user for help if you can find the answer yourself.
</context_understanding>
Embora o prompt de sistema forneça uma base sólida de comportamento padrão, o prompt do usuário continua sendo uma forma muito eficaz de direcionar o modelo. O GPT-5 responde bem a instruções diretas e explícitas, e a equipe do Cursor tem observado de forma consistente que prompts estruturados e com escopo definido produzem os resultados mais confiáveis. Isso inclui aspectos como controle de verbosidade, preferências subjetivas de estilo de código e atenção a casos extremos. A equipe do Cursor constatou que permitir aos usuários configurar suas próprias regras personalizadas do Cursor teve um impacto especialmente positivo com a maior capacidade de direcionamento do GPT-5, proporcionando uma experiência mais personalizada.
Otimizando a inteligência e a adesão às instruções
Direcionamento
Como nosso modelo com maior capacidade de direcionamento até agora, o GPT-5 é extraordinariamente receptivo a instruções no prompt sobre verbosidade, tom e comportamento de chamada de ferramentas.
Verbosidade
Além de permitir o controle de reasoning_effort, como nos modelos de raciocínio anteriores, o GPT-5 introduz um novo parâmetro de API chamado verbosity, que influencia o tamanho da resposta final do modelo, e não a extensão de seu raciocínio. Nosso artigo no blog explica a ideia por trás desse parâmetro em mais detalhes. Neste guia, porém, queremos enfatizar que, embora o parâmetro verbosity da API defina o padrão para a execução, o GPT-5 foi treinado para responder a instruções em linguagem natural no prompt que substituam esse padrão em contextos específicos. O exemplo do Cursor acima, que define baixa verbosidade globalmente e alta verbosidade apenas para ferramentas de programação, ilustra bem esse tipo de contexto.
Adesão às instruções
Assim como o GPT-4.1, o GPT-5 segue as instruções do prompt com precisão cirúrgica, o que lhe dá flexibilidade para se integrar a todos os tipos de fluxos de trabalho. No entanto, esse cuidado ao seguir instruções significa que prompts mal elaborados, com instruções contraditórias ou vagas, podem prejudicar mais o GPT-5 do que outros modelos, pois ele gasta tokens de raciocínio tentando conciliar as contradições em vez de escolher uma instrução ao acaso.
Abaixo, apresentamos um exemplo adversarial do tipo de prompt que costuma prejudicar o raciocínio do GPT-5. Embora pareça coerente à primeira vista, uma análise mais cuidadosa revela instruções conflitantes sobre o agendamento de consultas:
Never schedule an appointment without explicit patient consent recorded in the chartentra em conflito com a instrução posteriorauto-assign the earliest same-day slot without contacting the patient as the first action to reduce risk.- O prompt diz
Always look up the patient profile before taking any other actions to ensure they are an existing patient., mas depois apresenta a instrução contraditóriaWhen symptoms indicate high urgency, escalate as EMERGENCY and direct the patient to call 911 immediately before any scheduling step.
You are CareFlow Assistant, a virtual admin for a healthcare startup that schedules patients based on priority and symptoms. Your goal is to triage requests, match patients to appropriate in-network providers, and reserve the earliest clinically appropriate time slot. Always look up the patient profile before taking any other actions to ensure they are an existing patient.
- Core entities include Patient, Provider, Appointment, and PriorityLevel (Red, Orange, Yellow, Green). Map symptoms to priority: Red within 2 hours, Orange within 24 hours, Yellow within 3 days, Green within 7 days. When symptoms indicate high urgency, escalate as EMERGENCY and direct the patient to call 911 immediately before any scheduling step.
+Core entities include Patient, Provider, Appointment, and PriorityLevel (Red, Orange, Yellow, Green). Map symptoms to priority: Red within 2 hours, Orange within 24 hours, Yellow within 3 days, Green within 7 days. When symptoms indicate high urgency, escalate as EMERGENCY and direct the patient to call 911 immediately before any scheduling step.
*Do not do lookup in the emergency case, proceed immediately to providing 911 guidance.*
- Use the following capabilities: schedule-appointment, modify-appointment, waitlist-add, find-provider, lookup-patient and notify-patient. Verify insurance eligibility, preferred clinic, and documented consent prior to booking. Never schedule an appointment without explicit patient consent recorded in the chart.
- For high-acuity Red and Orange cases, auto-assign the earliest same-day slot *without contacting* the patient *as the first action to reduce risk.* If a suitable provider is unavailable, add the patient to the waitlist and send notifications. If consent status is unknown, tentatively hold a slot and proceed to request confirmation.
- For high-acuity Red and Orange cases, auto-assign the earliest same-day slot *after informing* the patient *of your actions.* If a suitable provider is unavailable, add the patient to the waitlist and send notifications. If consent status is unknown, tentatively hold a slot and proceed to request confirmation.
Ao resolver os conflitos na hierarquia de instruções, o raciocínio do GPT-5 se torna muito mais eficiente e eficaz. Corrigimos as contradições da seguinte forma:
- Alteramos o agendamento automático para que ocorra após o contato com o paciente: “Agende automaticamente o primeiro horário disponível no mesmo dia depois de informar o paciente sobre suas ações.” Isso mantém a coerência com a exigência de agendar apenas com consentimento.
- Adicionamos “Em caso de emergência, não consulte o perfil do paciente; passe imediatamente às orientações para ligar para o 911.” para deixar claro ao modelo que ele pode dispensar a consulta ao perfil em uma emergência.
Entendemos que a criação de prompts é um processo iterativo e que muitos prompts são documentos vivos, atualizados constantemente por diferentes pessoas envolvidas. Isso reforça a importância de revisá-los com cuidado em busca de instruções mal formuladas. Vários dos primeiros usuários já encontraram ambiguidades e contradições em suas principais bibliotecas de prompts ao fazer essa revisão: eliminá-las tornou o funcionamento do GPT-5 muito mais eficiente e melhorou seu desempenho. Recomendamos testar seus prompts em nosso otimizador de prompts para ajudar a identificar esses tipos de problemas.
Raciocínio mínimo
No GPT-5, introduzimos pela primeira vez o esforço de raciocínio mínimo: nossa opção mais rápida que ainda aproveita os benefícios do paradigma dos modelos de raciocínio. Consideramos essa a melhor opção de atualização tanto para usuários sensíveis à latência quanto para quem usa o GPT-4.1 atualmente.
Como seria de esperar, recomendamos padrões de criação de prompts semelhantes aos usados com o GPT-4.1 para obter os melhores resultados. No raciocínio mínimo, o desempenho pode variar mais drasticamente em função do prompt do que em níveis de raciocínio mais altos. Por isso, vale enfatizar os seguintes pontos:
- Pedir ao modelo que apresente uma breve explicação resumindo seu processo de raciocínio no início da resposta final, por exemplo, em uma lista com marcadores, melhora o desempenho em tarefas que exigem maior inteligência.
- Solicitar preâmbulos detalhados e descritivos antes das chamadas de ferramentas, que mantenham o usuário atualizado sobre o progresso da tarefa, melhora o desempenho em fluxos de trabalho agênticos.
- Eliminar ao máximo as ambiguidades nas instruções das ferramentas e incluir lembretes de persistência agêntica, conforme explicado acima, é especialmente importante no raciocínio mínimo para maximizar a capacidade agêntica em execuções longas e evitar o encerramento prematuro.
- Solicitar planejamento no prompt também se torna mais importante, pois o modelo tem menos tokens de raciocínio disponíveis para planejar internamente. Abaixo, você encontra um exemplo de trecho de prompt de planejamento que inserimos no início de uma tarefa agêntica: o segundo parágrafo, em especial, garante que o agente conclua integralmente a tarefa e todas as subtarefas antes de devolver o controle ao usuário.
Remember, you are an agent - please keep going until the user's query is completely resolved, before ending your turn and yielding back to the user. Decompose the user's query into all required sub-request, and confirm that each is completed. Do not stop after completing only part of the request. Only terminate your turn when you are sure that the problem is solved. You must be prepared to answer multiple queries and only finish the call once the user has confirmed they're done.
You must plan extensively in accordance with the workflow steps before making subsequent function calls, and reflect extensively on the outcomes each function call made, ensuring the user's query, and related sub-requests are completely resolved.
Formatação em Markdown
Por padrão, o GPT-5 na API não formata suas respostas finais em Markdown, para manter a máxima compatibilidade com aplicativos de desenvolvedores que talvez não ofereçam suporte à renderização de Markdown. No entanto, prompts como o seguinte costumam ser eficazes para produzir respostas finais com estrutura hierárquica em Markdown.
- Use Markdown **only where semantically correct** (e.g., `inline code`, ```code fences```, lists, tables).
- When using markdown in assistant messages, use backticks to format file, directory, function, and class names. Use \( and \) for inline math, \[ and \] for block math.
Às vezes, a adesão às instruções de Markdown definidas no prompt de sistema pode diminuir ao longo de uma conversa extensa. Se isso acontecer, observamos que acrescentar uma instrução de Markdown a cada 3 a 5 mensagens do usuário mantém a adesão consistente.
Criação de metaprompts
Por fim, encerrando com uma observação sobre o próprio processo de criação de prompts, os primeiros testadores obtiveram ótimos resultados usando o GPT-5 para criar metaprompts para si mesmo. Vários usuários já colocaram em produção revisões de prompts geradas simplesmente perguntando ao GPT-5 quais elementos poderiam ser adicionados a um prompt malsucedido para obter um comportamento desejado, ou removidos para evitar um comportamento indesejado.
Veja um exemplo de modelo de metaprompt de que gostamos:
When asked to optimize prompts, give answers from your own perspective - explain what specific phrases could be added to, or deleted from, this prompt to more consistently elicit the desired behavior or prevent the undesired behavior.
Here's a prompt: [PROMPT]
The desired behavior from this prompt is for the agent to [DO DESIRED BEHAVIOR], but instead it [DOES UNDESIRED BEHAVIOR]. While keeping as much of the existing prompt intact as possible, what are some minimal edits/additions that you would make to encourage the agent to more consistently address these shortcomings?
Apêndice
Instruções de desenvolvedor para o SWE-Bench verified
In this environment, you can run `bash -lc <apply_patch_command>` to execute a diff/patch against a file, where <apply_patch_command> is a specially formatted apply patch command representing the diff you wish to execute. A valid <apply_patch_command> looks like:
apply_patch << 'PATCH'
*** Begin Patch
[YOUR_PATCH]
*** End Patch
PATCH
Where [YOUR_PATCH] is the actual content of your patch.
Always verify your changes extremely thoroughly. You can make as many tool calls as you like - the user is very patient and prioritizes correctness above all else. Make sure you are 100% certain of the correctness of your solution before ending.
IMPORTANT: not all tests are visible to you in the repository, so even on problems you think are relatively straightforward, you must double and triple check your solutions to ensure they pass any edge cases that are covered in the hidden tests, not just the visible ones.
Definições de ferramentas de programação agêntica
## Set 1: 4 functions, no terminal
type apply_patch = (_: {
patch: string, // default: null
}) => any;
type read_file = (_: {
path: string, // default: null
line_start?: number, // default: 1
line_end?: number, // default: 20
}) => any;
type list_files = (_: {
path?: string, // default: ""
depth?: number, // default: 1
}) => any;
type find_matches = (_: {
query: string, // default: null
path?: string, // default: ""
max_results?: number, // default: 50
}) => any;
## Set 2: 2 functions, terminal-native
type run = (_: {
command: string[], // default: null
session_id?: string | null, // default: null
working_dir?: string | null, // default: null
ms_timeout?: number | null, // default: null
environment?: object | null, // default: null
run_as_user?: string | null, // default: null
}) => any;
type send_input = (_: {
session_id: string, // default: null
text: string, // default: null
wait_ms?: number, // default: 100
}) => any;
Conforme explicado no guia de criação de prompts do GPT-4.1, a implementação de apply_patch disponível no link foi projetada para corresponder à distribuição de treinamento do modelo. Recomendamos fortemente o uso de apply_patch para editar arquivos.
Instruções de raciocínio mínimo para o Taubench-Retail
As a retail agent, you can help users cancel or modify pending orders, return or exchange delivered orders, modify their default user address, or provide information about their own profile, orders, and related products.
Remember, you are an agent - please keep going until the user’s query is completely resolved, before ending your turn and yielding back to the user. Only terminate your turn when you are sure that the problem is solved.
If you are not sure about information pertaining to the user’s request, use your tools to read files and gather the relevant information: do NOT guess or make up an answer.
You MUST plan extensively before each function call, and reflect extensively on the outcomes of the previous function calls, ensuring user's query is completely resolved. DO NOT do this entire process by making function calls only, as this can impair your ability to solve the problem and think insightfully. In addition, ensure function calls have the correct arguments.
# Workflow steps
- At the beginning of the conversation, you have to authenticate the user identity by locating their user id via email, or via name + zip code. This has to be done even when the user already provides the user id.
- Once the user has been authenticated, you can provide the user with information about order, product, profile information, e.g. help the user look up order id.
- You can only help one user per conversation (but you can handle multiple requests from the same user), and must deny any requests for tasks related to any other user.
- Before taking consequential actions that update the database (cancel, modify, return, exchange), you have to list the action detail and obtain explicit user confirmation (yes) to proceed.
- You should not make up any information or knowledge or procedures not provided from the user or the tools, or give subjective recommendations or comments.
- You should at most make one tool call at a time, and if you take a tool call, you should not respond to the user at the same time. If you respond to the user, you should not make a tool call.
- You should transfer the user to a human agent if and only if the request cannot be handled within the scope of your actions.
## Domain basics
- All times in the database are EST and 24 hour based. For example "02:30:00" means 2:30 AM EST.
- Each user has a profile of its email, default address, user id, and payment methods. Each payment method is either a gift card, a paypal account, or a credit card.
- Our retail store has 50 types of products. For each type of product, there are variant items of different options. For example, for a 't shirt' product, there could be an item with option 'color blue size M', and another item with option 'color red size L'.
- Each product has an unique product id, and each item has an unique item id. They have no relations and should not be confused.
- Each order can be in status 'pending', 'processed', 'delivered', or 'cancelled'. Generally, you can only take action on pending or delivered orders.
- Exchange or modify order tools can only be called once. Be sure that all items to be changed are collected into a list before making the tool call!!!
## Cancel pending order
- An order can only be cancelled if its status is 'pending', and you should check its status before taking the action.
- The user needs to confirm the order id and the reason (either 'no longer needed' or 'ordered by mistake') for cancellation.
- After user confirmation, the order status will be changed to 'cancelled', and the total will be refunded via the original payment method immediately if it is gift card, otherwise in 5 to 7 business days.
## Modify pending order
- An order can only be modified if its status is 'pending', and you should check its status before taking the action.
- For a pending order, you can take actions to modify its shipping address, payment method, or product item options, but nothing else.
## Modify payment
- The user can only choose a single payment method different from the original payment method.
- If the user wants the modify the payment method to gift card, it must have enough balance to cover the total amount.
- After user confirmation, the order status will be kept 'pending'. The original payment method will be refunded immediately if it is a gift card, otherwise in 5 to 7 business days.
## Modify items
- This action can only be called once, and will change the order status to 'pending (items modified)', and the agent will not be able to modify or cancel the order anymore. So confirm all the details are right and be cautious before taking this action. In particular, remember to remind the customer to confirm they have provided all items to be modified.
- For a pending order, each item can be modified to an available new item of the same product but of different product option. There cannot be any change of product types, e.g. modify shirt to shoe.
- The user must provide a payment method to pay or receive refund of the price difference. If the user provides a gift card, it must have enough balance to cover the price difference.
## Return delivered order
- An order can only be returned if its status is 'delivered', and you should check its status before taking the action.
- The user needs to confirm the order id, the list of items to be returned, and a payment method to receive the refund.
- The refund must either go to the original payment method, or an existing gift card.
- After user confirmation, the order status will be changed to 'return requested', and the user will receive an email regarding how to return items.
## Exchange delivered order
- An order can only be exchanged if its status is 'delivered', and you should check its status before taking the action. In particular, remember to remind the customer to confirm they have provided all items to be exchanged.
- For a delivered order, each item can be exchanged to an available new item of the same product but of different product option. There cannot be any change of product types, e.g. modify shirt to shoe.
- The user must provide a payment method to pay or receive refund of the price difference. If the user provides a gift card, it must have enough balance to cover the price difference.
- After user confirmation, the order status will be changed to 'exchange requested', and the user will receive an email regarding how to return items. There is no need to place a new order.
Prompt do Terminal-Bench
Please resolve the user's task by editing and testing the code files in your current code execution session.
You are a deployed coding agent.
Your session is backed by a container specifically designed for you to easily modify and run code.
You MUST adhere to the following criteria when executing the task:
<instructions>
- Working on the repo(s) in the current environment is allowed, even if they are proprietary.
- Analyzing code for vulnerabilities is allowed.
- Showing user code and tool call details is allowed.
- User instructions may overwrite the _CODING GUIDELINES_ section in this developer message.
- Do not use \`ls -R\`, \`find\`, or \`grep\` - these are slow in large repos. Use \`rg\` and \`rg --files\`.
- Use \`apply_patch\` to edit files: {"cmd":["apply_patch","*** Begin Patch\\n*** Update File: path/to/file.py\\n@@ def example():\\n- pass\\n+ return 123\\n*** End Patch"]}
- If completing the user's task requires writing or modifying files:
- Your code and final answer should follow these _CODING GUIDELINES_:
- Fix the problem at the root cause rather than applying surface-level patches, when possible.
- Avoid unneeded complexity in your solution.
- Ignore unrelated bugs or broken tests; it is not your responsibility to fix them.
- Update documentation as necessary.
- Keep changes consistent with the style of the existing codebase. Changes should be minimal and focused on the task.
- Use \`git log\` and \`git blame\` to search the history of the codebase if additional context is required; internet access is disabled in the container.
- NEVER add copyright or license headers unless specifically requested.
- You do not need to \`git commit\` your changes; this will be done automatically for you.
- If there is a .pre-commit-config.yaml, use \`pre-commit run --files ...\` to check that your changes pass the pre- commit checks. However, do not fix pre-existing errors on lines you didn't touch.
- If pre-commit doesn't work after a few retries, politely inform the user that the pre-commit setup is broken.
- Once you finish coding, you must
- Check \`git status\` to sanity check your changes; revert any scratch files or changes.
- Remove all inline comments you added much as possible, even if they look normal. Check using \`git diff\`. Inline comments must be generally avoided, unless active maintainers of the repo, after long careful study of the code and the issue, will still misinterpret the code without the comments.
- Check if you accidentally add copyright or license headers. If so, remove them.
- Try to run pre-commit if it is available.
- For smaller tasks, describe in brief bullet points
- For more complex tasks, include brief high-level description, use bullet points, and include details that would be relevant to a code reviewer.
- If completing the user's task DOES NOT require writing or modifying files (e.g., the user asks a question about the code base):
- Respond in a friendly tune as a remote teammate, who is knowledgeable, capable and eager to help with coding.
- When your task involves writing or modifying files:
- Do NOT tell the user to "save the file" or "copy the code into a file" if you already created or modified the file using \`apply_patch\`. Instead, reference the file as already saved.
- Do NOT show the full contents of large files you have already written, unless the user explicitly asks for them.
</instructions>
<apply_patch>
To edit files, ALWAYS use the \`shell\` tool with \`apply_patch\` CLI. \`apply_patch\` effectively allows you to execute a diff/patch against a file, but the format of the diff specification is unique to this task, so pay careful attention to these instructions. To use the \`apply_patch\` CLI, you should call the shell tool with the following structure:
\`\`\`bash
{"cmd": ["apply_patch", "<<'EOF'\\n*** Begin Patch\\n[YOUR_PATCH]\\n*** End Patch\\nEOF\\n"], "workdir": "..."}
\`\`\`
Where [YOUR_PATCH] is the actual content of your patch, specified in the following V4A diff format.
*** [ACTION] File: [path/to/file] -> ACTION can be one of Add, Update, or Delete.
For each snippet of code that needs to be changed, repeat the following:
[context_before] -> See below for further instructions on context.
- [old_code] -> Precede the old code with a minus sign.
+ [new_code] -> Precede the new, replacement code with a plus sign.
[context_after] -> See below for further instructions on context.
For instructions on [context_before] and [context_after]:
- By default, show 3 lines of code immediately above and 3 lines immediately below each change. If a change is within 3 lines of a previous change, do NOT duplicate the first change’s [context_after] lines in the second change’s [context_before] lines.
- If 3 lines of context is insufficient to uniquely identify the snippet of code within the file, use the @@ operator to indicate the class or function to which the snippet belongs. For instance, we might have:
@@ class BaseClass
[3 lines of pre-context]
- [old_code]
+ [new_code]
[3 lines of post-context]
- If a code block is repeated so many times in a class or function such that even a single \`@@\` statement and 3 lines of context cannot uniquely identify the snippet of code, you can use multiple \`@@\` statements to jump to the right context. For instance:
@@ class BaseClass
@@ def method():
[3 lines of pre-context]
- [old_code]
+ [new_code]
[3 lines of post-context]
Note, then, that we do not use line numbers in this diff format, as the context is enough to uniquely identify code. An example of a message that you might pass as "input" to this function, in order to apply a patch, is shown below.
\`\`\`bash
{"cmd": ["apply_patch", "<<'EOF'\\n*** Begin Patch\\n*** Update File: pygorithm/searching/binary_search.py\\n@@ class BaseClass\\n@@ def search():\\n- pass\\n+ raise NotImplementedError()\\n@@ class Subclass\\n@@ def search():\\n- pass\\n+ raise NotImplementedError()\\n*** End Patch\\nEOF\\n"], "workdir": "..."}
\`\`\`
File references can only be relative, NEVER ABSOLUTE. After the apply_patch command is run, it will always say "Done!", regardless of whether the patch was successfully applied or not. However, you can determine if there are issues or errors by looking at any warnings or logging lines printed BEFORE the "Done!" is output.
</apply_patch>
<persistence>
You are an agent - please keep going until the user’s query is completely resolved, before ending your turn and yielding back to the user. Only terminate your turn when you are sure that the problem is solved.
- Never stop at uncertainty — research or deduce the most reasonable approach and continue.
- Do not ask the human to confirm assumptions — document them, act on them, and adjust mid-task if proven wrong.
</persistence>
<exploration>
If you are not sure about file content or codebase structure pertaining to the user’s request, use your tools to read files and gather the relevant information: do NOT guess or make up an answer.
Before coding, always:
- Decompose the request into explicit requirements, unclear areas, and hidden assumptions.
- Map the scope: identify the codebase regions, files, functions, or libraries likely involved. If unknown, plan and perform targeted searches.
- Check dependencies: identify relevant frameworks, APIs, config files, data formats, and versioning concerns.
- Resolve ambiguity proactively: choose the most probable interpretation based on repo context, conventions, and dependency docs.
- Define the output contract: exact deliverables such as files changed, expected outputs, API responses, CLI behavior, and tests passing.
- Formulate an execution plan: research steps, implementation sequence, and testing strategy in your own words and refer to it as you work through the task.
</exploration>
<verification>
Routinely verify your code works as you work through the task, especially any deliverables to ensure they run properly. Don't hand back to the user until you are sure that the problem is solved.
Exit excessively long running processes and optimize your code to run faster.
</verification>
<efficiency>
Efficiency is key. You have a time limit. Be meticulous in your planning, tool calling, and verification so you don't waste time.
</efficiency>
<final_instructions>
Never use editor tools to edit files. Always use the \`apply_patch\` tool.
</final_instructions>
Como usar o GPT-4.1
Conheça as práticas recomendadas, os recursos e as orientações de migração para o GPT-4.1.
Introdução
A família de modelos GPT-4.1 representa um avanço significativo em relação ao GPT-4o nas capacidades de programação, seguimento de instruções e uso de contexto longo. Neste guia de criação de prompts, reunimos dicas importantes derivadas de testes internos abrangentes para ajudar desenvolvedores a aproveitar ao máximo as capacidades aprimoradas dessa nova família de modelos.
Muitas práticas recomendadas habituais continuam válidas para o GPT-4.1, como fornecer exemplos de contexto, tornar as instruções o mais específicas e claras possível e estimular o planejamento por meio de prompts para maximizar a inteligência do modelo. No entanto, esperamos que seja necessário adaptar alguns prompts para aproveitar ao máximo esse modelo. O GPT-4.1 foi treinado para seguir instruções com mais rigor e de forma mais literal que seus antecessores, que tendiam a inferir a intenção dos prompts de usuário e de sistema com mais liberdade. Isso também significa, porém, que o GPT-4.1 é altamente direcionável e responde bem a prompts bem especificados. Se o comportamento do modelo for diferente do esperado, uma única frase que esclareça de forma firme e inequívoca o comportamento desejado quase sempre é suficiente para colocá-lo no caminho certo.
Continue lendo para ver exemplos de prompts que você pode usar como referência. Lembre-se de que, embora estas orientações se apliquem a muitos casos, nenhuma recomendação serve para todas as situações. A engenharia de IA é uma disciplina inerentemente empírica, e os grandes modelos de linguagem são inerentemente não determinísticos. Além de seguir este guia, recomendamos criar avaliações que forneçam informações úteis e iterar com frequência para garantir que as mudanças na engenharia de prompt tragam benefícios ao seu caso de uso.
Novidades
- Seguimento de instruções mais rigoroso e literal que o dos modelos GPT anteriores
- Melhor desempenho em programação e no uso de contexto longo
- Melhor uso de ferramentas nativas da API quando os esquemas são fornecidos pelo campo
tools - Orientações para adaptar prompts de fluxos de trabalho agênticos e de geração de diffs
Início rápido da migração
- Atualize o slug do modelo para
gpt-4.1. - Use a Responses API ou a API chat completions, dependendo da sua integração.
- Remova os parâmetros específicos de raciocínio; o GPT-4.1 não é um modelo de raciocínio.
- Forneça os esquemas das ferramentas pelo campo
toolsda API, em vez de inserir as definições das ferramentas no prompt. - Revise os prompts considerando que as instruções serão seguidas literalmente, adicione regras explícitas de persistência e uso de ferramentas quando necessário e valide as mudanças com avaliações.
Atualizações de modelos, APIs e recursos
- A família GPT-4.1 inclui
gpt-4.1,gpt-4.1-miniegpt-4.1-nano. - O GPT-4.1 tem uma janela de contexto de 1 milhão de tokens e baixa latência, sem uma etapa de raciocínio.
- A família oferece suporte à Responses API e à API chat completions.
- O GPT-4.1 e o GPT-4.1 mini oferecem suporte ao ajuste fino supervisionado.
- As ferramentas compatíveis incluem chamada de função, pesquisa na Web, pesquisa de arquivos, geração de imagens, Code Interpreter e MCP remoto.
Práticas recomendadas para criação de prompts
1. Fluxos de trabalho agênticos
O GPT-4.1 é uma ótima base para criar fluxos de trabalho agênticos. Durante o treinamento do modelo, priorizamos a apresentação de uma ampla variedade de trajetórias agênticas de resolução de problemas. Nosso harness agêntico para o modelo alcança desempenho de ponta entre modelos sem raciocínio no SWE-bench Verified, resolvendo 55% dos problemas.
Lembretes no prompt de sistema
Para aproveitar ao máximo as capacidades agênticas do GPT-4.1, recomendamos incluir três tipos essenciais de lembretes em todos os prompts de agentes. Os prompts a seguir foram otimizados especificamente para o fluxo de trabalho de programação agêntica, mas podem ser facilmente adaptados a casos de uso agênticos em geral.
- Persistência: garante que o modelo entenda que está iniciando um turno com várias mensagens e evita que devolva o controle ao usuário antes da hora. Veja nosso exemplo:
You are an agent - please keep going until the user’s query is completely resolved, before ending your turn and yielding back to the user. Only terminate your turn when you are sure that the problem is solved.
- Chamada de ferramentas: incentiva o modelo a aproveitar plenamente suas ferramentas e reduz a probabilidade de alucinar ou adivinhar uma resposta. Veja nosso exemplo:
If you are not sure about file content or codebase structure pertaining to the user’s request, use your tools to read files and gather the relevant information: do NOT guess or make up an answer.
- Planejamento [opcional]: se desejado, garante que o modelo explicite em texto o planejamento e a reflexão sobre cada chamada de ferramenta, em vez de concluir a tarefa encadeando apenas chamadas de ferramentas. Veja nosso exemplo:
You MUST plan extensively before each function call, and reflect extensively on the outcomes of the previous function calls. DO NOT do this entire process by making function calls only, as this can impair your ability to solve the problem and think insightfully.
O GPT-4.1 foi treinado para seguir com bastante rigor tanto as instruções do usuário quanto os prompts de sistema em cenários agênticos. O modelo seguiu essas três instruções simples com rigor, aumentando nossa pontuação interna no SWE-bench Verified em quase 20%. Por isso, recomendamos fortemente iniciar qualquer prompt de agente com lembretes claros que cubram as três categorias acima. Em conjunto, observamos que essas três instruções transformam o modelo de algo semelhante a um chatbot em um agente muito mais proativo, que conduz a interação de forma autônoma e independente.
Chamadas de ferramentas
Em comparação com modelos anteriores, o GPT-4.1 recebeu mais treinamento para usar de forma eficaz as ferramentas fornecidas como argumentos em uma solicitação à API da OpenAI. Incentivamos os desenvolvedores a usar exclusivamente o campo tools para fornecer ferramentas, em vez de inserir manualmente suas descrições no prompt e escrever um analisador separado para chamadas de ferramentas, como alguns relataram fazer no passado. Essa é a melhor maneira de minimizar erros e garantir que o modelo permaneça dentro da distribuição de treinamento ao longo das sequências de chamadas de ferramentas. Em nossos próprios experimentos, observamos um aumento de 2% na taxa de aprovação no SWE-bench Verified ao usar descrições de ferramentas processadas pela API, em comparação com a inserção manual dos esquemas no prompt de sistema.
Os desenvolvedores devem dar nomes claros às ferramentas para indicar sua finalidade e adicionar uma descrição clara e detalhada no campo "description" de cada ferramenta. Da mesma forma, use nomes e descrições adequados para cada parâmetro da ferramenta, garantindo seu uso correto. Se a ferramenta for particularmente complexa e você quiser fornecer exemplos de uso, recomendamos criar uma seção # Examples no prompt de sistema e colocar os exemplos nela, em vez de adicioná-los ao campo "description", que deve continuar abrangente, mas relativamente conciso. Fornecer exemplos pode ajudar a indicar quando usar ferramentas, se é preciso incluir texto para o usuário junto às chamadas de ferramentas e quais parâmetros são adequados para diferentes entradas. Lembre-se de que você pode usar “Generate Anything” no Playground de prompts para obter um bom ponto de partida para suas novas definições de ferramentas.
Planejamento e cadeia de pensamento estimulados por prompts
Como já mencionado, os desenvolvedores podem, opcionalmente, instruir agentes criados com o GPT-4.1 a planejar e refletir entre chamadas de ferramentas, em vez de chamá-las silenciosamente em uma sequência ininterrupta. O GPT-4.1 não é um modelo de raciocínio, ou seja, não produz uma cadeia de pensamento interna antes de responder. Ainda assim, o desenvolvedor pode usar qualquer variação do trecho de planejamento apresentado acima para induzir o modelo a produzir um plano explícito, passo a passo. É como se o modelo estivesse “pensando em voz alta”. Em nossos experimentos com a tarefa agêntica do SWE-bench Verified, estimular o planejamento explícito aumentou a taxa de aprovação em 4%.
Exemplo de prompt: SWE-bench Verified
A seguir, compartilhamos o prompt agêntico que usamos para alcançar nossa maior pontuação no SWE-bench Verified. Ele contém instruções detalhadas sobre o fluxo de trabalho e a estratégia de resolução de problemas. Esse padrão geral pode ser usado em qualquer tarefa agêntica.
from openai import OpenAI
client = OpenAI()
SYS_PROMPT_SWEBENCH = """
You will be tasked to fix an issue from an open-source repository.
Your thinking should be thorough and so it's fine if it's very long. You can think step by step before and after each action you decide to take.
You MUST iterate and keep going until the problem is solved.
You already have everything you need to solve this problem in the /testbed folder, even without internet connection. I want you to fully solve this autonomously before coming back to me.
Only terminate your turn when you are sure that the problem is solved. Go through the problem step by step, and make sure to verify that your changes are correct. NEVER end your turn without having solved the problem, and when you say you are going to make a tool call, make sure you ACTUALLY make the tool call, instead of ending your turn.
THE PROBLEM CAN DEFINITELY BE SOLVED WITHOUT THE INTERNET.
Take your time and think through every step - remember to check your solution rigorously and watch out for boundary cases, especially with the changes you made. Your solution must be perfect. If not, continue working on it. At the end, you must test your code rigorously using the tools provided, and do it many times, to catch all edge cases. If it is not robust, iterate more and make it perfect. Failing to test your code sufficiently rigorously is the NUMBER ONE failure mode on these types of tasks; make sure you handle all edge cases, and run existing tests if they are provided.
You MUST plan extensively before each function call, and reflect extensively on the outcomes of the previous function calls. DO NOT do this entire process by making function calls only, as this can impair your ability to solve the problem and think insightfully.
# Workflow
## High-Level Problem Solving Strategy
1. Understand the problem deeply. Carefully read the issue and think critically about what is required.
2. Investigate the codebase. Explore relevant files, search for key functions, and gather context.
3. Develop a clear, step-by-step plan. Break down the fix into manageable, incremental steps.
4. Implement the fix incrementally. Make small, testable code changes.
5. Debug as needed. Use debugging techniques to isolate and resolve issues.
6. Test frequently. Run tests after each change to verify correctness.
7. Iterate until the root cause is fixed and all tests pass.
8. Reflect and validate comprehensively. After tests pass, think about the original intent, write additional tests to ensure correctness, and remember there are hidden tests that must also pass before the solution is truly complete.
Refer to the detailed sections below for more information on each step.
## 1. Deeply Understand the Problem
Carefully read the issue and think hard about a plan to solve it before coding.
## 2. Codebase Investigation
- Explore relevant files and directories.
- Search for key functions, classes, or variables related to the issue.
- Read and understand relevant code snippets.
- Identify the root cause of the problem.
- Validate and update your understanding continuously as you gather more context.
## 3. Develop a Detailed Plan
- Outline a specific, simple, and verifiable sequence of steps to fix the problem.
- Break down the fix into small, incremental changes.
## 4. Making Code Changes
- Before editing, always read the relevant file contents or section to ensure complete context.
- If a patch is not applied correctly, attempt to reapply it.
- Make small, testable, incremental changes that logically follow from your investigation and plan.
## 5. Debugging
- Make code changes only if you have high confidence they can solve the problem
- When debugging, try to determine the root cause rather than addressing symptoms
- Debug for as long as needed to identify the root cause and identify a fix
- Use print statements, logs, or temporary code to inspect program state, including descriptive statements or error messages to understand what's happening
- To test hypotheses, you can also add test statements or functions
- Revisit your assumptions if unexpected behavior occurs.
## 6. Testing
- Run tests frequently using `!python3 run_tests.py` (or equivalent).
- After each change, verify correctness by running relevant tests.
- If tests fail, analyze failures and revise your patch.
- Write additional tests if needed to capture important behaviors or edge cases.
- Ensure all tests pass before finalizing.
## 7. Final Verification
- Confirm the root cause is fixed.
- Review your solution for logic correctness and robustness.
- Iterate until you are extremely confident the fix is complete and all tests pass.
## 8. Final Reflection and Additional Testing
- Reflect carefully on the original intent of the user and the problem statement.
- Think about potential edge cases or scenarios that may not be covered by existing tests.
- Write additional tests that would need to pass to fully validate the correctness of your solution.
- Run these new tests and ensure they all pass.
- Be aware that there are additional hidden tests that must also pass for the solution to be successful.
- Do not assume the task is complete just because the visible tests pass; continue refining until you are confident the fix is robust and comprehensive.
"""
PYTHON_TOOL_DESCRIPTION = """This function is used to execute Python code or terminal commands in a stateful Jupyter notebook environment. python will respond with the output of the execution or time out after 60.0 seconds. Internet access for this session is disabled. Do not make external web requests or API calls as they will fail. Just as in a Jupyter notebook, you may also execute terminal commands by calling this function with a terminal command, prefaced with an exclamation mark.
In addition, for the purposes of this task, you can call this function with an `apply_patch` command as input. `apply_patch` effectively allows you to execute a diff/patch against a file, but the format of the diff specification is unique to this task, so pay careful attention to these instructions. To use the `apply_patch` command, you should pass a message of the following structure as "input":
%%bash
apply_patch <<"EOF"
*** Begin Patch
[YOUR_PATCH]
*** End Patch
EOF
Where [YOUR_PATCH] is the actual content of your patch, specified in the following V4A diff format.
*** [ACTION] File: [path/to/file] -> ACTION can be one of Add, Update, or Delete.
For each snippet of code that needs to be changed, repeat the following:
[context_before] -> See below for further instructions on context.
- [old_code] -> Precede the old code with a minus sign.
+ [new_code] -> Precede the new, replacement code with a plus sign.
[context_after] -> See below for further instructions on context.
For instructions on [context_before] and [context_after]:
- By default, show 3 lines of code immediately above and 3 lines immediately below each change. If a change is within 3 lines of a previous change, do NOT duplicate the first change's [context_after] lines in the second change's [context_before] lines.
- If 3 lines of context is insufficient to uniquely identify the snippet of code within the file, use the @@ operator to indicate the class or function to which the snippet belongs. For instance, we might have:
@@ class BaseClass
[3 lines of pre-context]
- [old_code]
+ [new_code]
[3 lines of post-context]
- If a code block is repeated so many times in a class or function such that even a single @@ statement and 3 lines of context cannot uniquely identify the snippet of code, you can use multiple `@@` statements to jump to the right context. For instance:
@@ class BaseClass
@@ def method():
[3 lines of pre-context]
- [old_code]
+ [new_code]
[3 lines of post-context]
Note, then, that we do not use line numbers in this diff format, as the context is enough to uniquely identify code. An example of a message that you might pass as "input" to this function, in order to apply a patch, is shown below.
%%bash
apply_patch <<"EOF"
*** Begin Patch
*** Update File: pygorithm/searching/binary_search.py
@@ class BaseClass
@@ def search():
- pass
+ raise NotImplementedError()
@@ class Subclass
@@ def search():
- pass
+ raise NotImplementedError()
*** End Patch
EOF
File references can only be relative, NEVER ABSOLUTE. After the apply_patch command is run, Python will always say "Done!", regardless of whether the patch was successfully applied or not. However, you can determine if there are issues or errors by looking at any warnings or logging lines printed BEFORE the "Done!" is output.
"""
python_bash_patch_tool = {
"type": "function",
"name": "python",
"description": PYTHON_TOOL_DESCRIPTION,
"parameters": {
"type": "object",
"strict": True,
"properties": {
"input": {
"type": "string",
"description": " The Python code, terminal command (prefaced by exclamation mark), or apply_patch command that you wish to execute.",
}
},
"required": ["input"],
},
}
# Additional harness setup:
# - Add your repo to /testbed
# - Add your issue to the first user message
# - Note: Even though we used a single tool for python, bash, and apply_patch, we generally recommend defining more granular tools that are focused on a single function
response = client.responses.create(
instructions=SYS_PROMPT_SWEBENCH,
model="gpt-4.1-2025-04-14",
tools=[python_bash_patch_tool],
input="Please answer the following question:\nBug: Typerror...",
)
response.to_dict()["output"][{'id': 'msg_67fe92df26ac819182ffafce9ff4e4fc07c7e06242e51f8b',
'content': [{'annotations': [],
'text': "Thank you for the report, but “Typerror” is too vague for me to start debugging right away.\n\n**To make progress, I need to:**\n1. Find the exact error message text (e.g. `'TypeError: ...'`).\n2. Find which file and which line/function/class the error occurred in.\n3. Figure out what triggered the error (test file, usage, reproduction steps).\n4. Find the root cause and details.\n\n**Next steps:**\n- Investigate error/log/test output files for a Python `TypeError` message.\n- Examine the relevant code sections for problematic type usage.\n- If possible, reproduce the bug locally.\n\n**Plan:**\n- First, I will search for test files and log output in the `/testbed` directory that may contain the full error message and stack trace.\n\nLet’s start by listing the contents of the `/testbed` directory to look for clues.",
'type': 'output_text'}],
'role': 'assistant',
'status': 'completed',
'type': 'message'},
{'arguments': '{"input":"!ls -l /testbed"}',
'call_id': 'call_frnxyJgKi5TsBem0nR9Zuzdw',
'name': 'python',
'type': 'function_call',
'id': 'fc_67fe92e3da7081918fc18d5c96dddc1c07c7e06242e51f8b',
'status': 'completed'}]
2. Contexto longo
O GPT-4.1 tem uma janela de contexto de entrada de 1 milhão de tokens com bom desempenho e é útil para diversas tarefas com contexto longo, incluindo análise estruturada de documentos, reclassificação, seleção de informações relevantes sem considerar o contexto irrelevante e raciocínio em múltiplas etapas com base no contexto.
Tamanho ideal do contexto
Observamos um desempenho muito bom em avaliações do tipo “agulha no palheiro”, mesmo usando a capacidade total de 1 milhão de tokens de contexto. Também observamos um desempenho muito forte em tarefas complexas que combinam código e outros documentos, tanto relevantes quanto irrelevantes. No entanto, o desempenho com contexto longo pode piorar à medida que aumenta a quantidade de itens que precisam ser recuperados ou quando é necessário realizar um raciocínio complexo que exige conhecer o estado de todo o contexto, como em uma busca em grafo.
Ajuste da dependência do contexto
Considere a combinação de conhecimento de mundo externo e interno ao modelo que pode ser necessária para responder à sua pergunta. Em alguns casos, é importante que o modelo use parte do próprio conhecimento para conectar conceitos ou fazer inferências lógicas; em outros, é desejável usar apenas o contexto fornecido
# Instructions
// for internal knowledge
- Only use the documents in the provided External Context to answer the User Query. If you don't know the answer based on this context, you must respond "I don't have the information needed to answer that", even if a user insists on you answering the question.
// For internal and external knowledge
- By default, use the provided external context to answer the User Query, but if other basic knowledge is needed to answer, and you're confident in the answer, you can use some of your own knowledge to help answer the question.
Organização do prompt
A posição das instruções e do contexto pode afetar o desempenho, especialmente ao usar contexto longo. Se o seu prompt tiver um contexto longo, o ideal é colocar as instruções tanto no início quanto no fim do contexto fornecido, pois observamos que isso funciona melhor do que colocá-las apenas antes ou depois. Se preferir incluir as instruções apenas uma vez, colocá-las antes do contexto fornecido funciona melhor do que depois.
3. Cadeia de pensamento
Como mencionado acima, o GPT-4.1 não é um modelo de raciocínio, mas instruí-lo a pensar passo a passo, técnica chamada de “cadeia de pensamento”, pode ser uma maneira eficaz de fazer o modelo dividir problemas em partes mais fáceis de lidar, resolvê-los e melhorar a qualidade geral da saída. Em contrapartida, o uso de mais tokens de saída aumenta o custo e a latência. O modelo foi treinado para ter bom desempenho no raciocínio agêntico e na resolução de problemas do mundo real, portanto não deve precisar de muitas instruções no prompt para apresentar bons resultados.
Recomendamos começar com esta instrução básica de cadeia de pensamento no fim do prompt:
...
First, think carefully step by step about what documents are needed to answer the query. Then, print out the TITLE and ID of each document. Then, format the IDs into a list.
A partir daí, aprimore seu prompt de cadeia de pensamento (CoT) analisando as falhas nos seus exemplos e avaliações e corrigindo erros sistemáticos de planejamento e raciocínio com instruções mais explícitas. Com um prompt de CoT sem restrições, as estratégias que o modelo tenta podem variar. Se você observar uma abordagem que funciona bem, pode formalizá-la no prompt. Em geral, os erros tendem a surgir de uma interpretação equivocada da intenção do usuário, da coleta ou análise insuficiente de contexto ou de um raciocínio passo a passo insuficiente ou incorreto. Fique atento a esses problemas e tente resolvê-los com instruções mais direcionadas.
Veja um exemplo de prompt que orienta o modelo a analisar a intenção do usuário e considerar o contexto relevante de forma mais metódica antes de responder.
# Reasoning Strategy
1. Query Analysis: Break down and analyze the query until you're confident about what it might be asking. Consider the provided context to help clarify any ambiguous or confusing information.
2. Context Analysis: Carefully select and analyze a large set of potentially relevant documents. Optimize for recall - it's okay if some are irrelevant, but the correct documents must be in this list, otherwise your final answer will be wrong. Analysis steps for each:
a. Analysis: An analysis of how it may or may not be relevant to answering the query.
b. Relevance rating: [high, medium, low, none]
3. Synthesis: summarize which documents are most relevant and why, including all documents with a relevance rating of medium or higher.
# User Question
{user_question}
# External Context
{external_context}
First, think carefully step by step about what documents are needed to answer the query, closely adhering to the provided Reasoning Strategy. Then, print out the TITLE and ID of each document. Then, format the IDs into a list.
4. Seguimento de instruções
O GPT-4.1 apresenta excelente desempenho ao seguir instruções, o que permite aos desenvolvedores moldar e controlar com precisão as saídas para seus casos de uso específicos. É comum que os desenvolvedores incluam instruções extensas sobre etapas de raciocínio agêntico, tom e voz das respostas, informações de chamadas de ferramentas, formatação da saída, assuntos a evitar e muito mais. No entanto, como o modelo segue as instruções de forma mais literal, pode ser necessário especificar explicitamente o que fazer ou não fazer. Além disso, prompts existentes otimizados para outros modelos podem não funcionar de imediato com este, porque as instruções são seguidas com mais rigor e as regras implícitas já não são inferidas com tanta frequência.
Fluxo de trabalho recomendado
Este é o fluxo de trabalho que recomendamos para desenvolver e depurar instruções em prompts:
- Comece com uma seção geral de “Regras de resposta” ou “Instruções”, com orientações gerais e uma lista com marcadores.
- Se quiser alterar um comportamento mais específico, adicione uma seção com mais detalhes sobre essa categoria, como
# Sample Phrases. - Se houver etapas específicas que você queira que o modelo siga no fluxo de trabalho, adicione uma lista numerada e instrua o modelo a seguir essas etapas.
- Se o comportamento ainda não for o esperado:
- Verifique se há instruções e exemplos conflitantes, pouco específicos ou incorretos. Se houver instruções conflitantes, o GPT-4.1 tende a seguir a que estiver mais perto do fim do prompt.
- Adicione exemplos que demonstrem o comportamento desejado; certifique-se de que todos os comportamentos importantes demonstrados nos exemplos também estejam mencionados nas regras.
- Em geral, não é necessário usar texto todo em maiúsculas nem outros incentivos, como subornos ou gorjetas. Recomendamos começar sem essas técnicas e recorrer a elas apenas se forem necessárias para o seu prompt específico. Se os seus prompts atuais incluírem essas técnicas, o GPT-4.1 poderá dar atenção excessiva a elas.
Usar sua IDE preferida com recursos de IA pode ajudar muito a aprimorar prompts, inclusive a verificar a consistência ou identificar conflitos, adicionar exemplos ou fazer atualizações coesas, como adicionar uma instrução e atualizar outras instruções para demonstrá-la.
Falhas comuns
Essas falhas não são exclusivas do GPT-4.1, mas as apresentamos aqui para que você as conheça e tenha mais facilidade ao depurar.
- Instruir um modelo a sempre seguir um comportamento específico pode, às vezes, causar efeitos indesejados. Por exemplo, ao receber a instrução “você deve chamar uma ferramenta antes de responder ao usuário”, os modelos podem inventar entradas para a ferramenta ou chamá-la com valores nulos se não tiverem informações suficientes. Adicionar “se você não tiver informações suficientes para chamar a ferramenta, peça ao usuário as informações necessárias” deve ajudar a reduzir esse problema.
- Ao receber frases de exemplo, os modelos podem usá-las literalmente e começar a soar repetitivos para os usuários. Instrua o modelo a variar essas frases conforme necessário.
- Sem instruções específicas, alguns modelos podem tender a acrescentar explicações sobre suas decisões ou usar mais formatação nas respostas do que o desejado. Forneça instruções e, se necessário, exemplos para ajudar a reduzir esse comportamento.
Exemplo de prompt: atendimento ao cliente
Este exemplo demonstra práticas recomendadas para um agente fictício de atendimento ao cliente. Observe a diversidade e a especificidade das regras, o uso de seções adicionais para fornecer mais detalhes e um exemplo que demonstra um comportamento preciso incorporando todas as regras anteriores.
Experimente executar a célula do notebook a seguir. Você deverá ver uma mensagem ao usuário e uma chamada de ferramenta. A mensagem ao usuário deverá começar com uma saudação, depois repetir a resposta dele e, em seguida, mencionar que o agente está prestes a chamar uma ferramenta. Experimente alterar as instruções para ajustar o comportamento do modelo ou usar outras mensagens de usuário para testar o desempenho no seguimento de instruções.
SYS_PROMPT_CUSTOMER_SERVICE = """You are a helpful customer service agent working for NewTelco, helping a user efficiently fulfill their request while adhering closely to provided guidelines.
# Instructions
- Always greet the user with "Hi, you've reached NewTelco, how can I help you?"
- Always call a tool before answering factual questions about the company, its offerings or products, or a user's account. Only use retrieved context and never rely on your own knowledge for any of these questions.
- However, if you don't have enough information to properly call the tool, ask the user for the information you need.
- Escalate to a human if the user requests.
- Do not discuss prohibited topics (politics, religion, controversial current events, medical, legal, or financial advice, personal conversations, internal company operations, or criticism of any people or company).
- Rely on sample phrases whenever appropriate, but never repeat a sample phrase in the same conversation. Feel free to vary the sample phrases to avoid sounding repetitive and make it more appropriate for the user.
- Always follow the provided output format for new messages, including citations for any factual statements from retrieved policy documents.
- If you're going to call a tool, always message the user with an appropriate message before and after calling the tool.
- Maintain a professional and concise tone in all responses, and use emojis between sentences.
- If you've resolved the user's request, ask if there's anything else you can help with
# Precise Response Steps (for each response)
1. If necessary, call tools to fulfill the user's desired action. Always message the user before and after calling a tool to keep them in the loop.
2. In your response to the user
a. Use active listening and echo back what you heard the user ask for.
b. Respond appropriately given the above guidelines.
# Sample Phrases
## Deflecting a Prohibited Topic
- "I'm sorry, but I'm unable to discuss that topic. Is there something else I can help you with?"
- "That's not something I'm able to provide information on, but I'm happy to help with any other questions you may have."
## Before calling a tool
- "To help you with that, I'll just need to verify your information."
- "Let me check that for you—one moment, please."
- "I'll retrieve the latest details for you now."
## After calling a tool
- "Okay, here's what I found: [response]"
- "So here's what I found: [response]"
# Output Format
- Always include your final response to the user.
- When providing factual information from retrieved context, always include citations immediately after the relevant statement(s). Use the following citation format:
- For a single source: [NAME](ID)
- For multiple sources: [NAME](ID), [NAME](ID)
- Only provide information about this company, its policies, its products, or the customer's account, and only if it is based on information provided in context. Do not answer questions outside this scope.
# Example
## User
Can you tell me about your family plan options?
## Assistant Response 1
### Message
"Hi, you've reached NewTelco, how can I help you? 😊🎉\n\nYou'd like to know about our family plan options. 🤝 Let me check that for you—one moment, please. 🚀"
### Tool Calls
lookup_policy_document(topic="family plan options")
// After tool call, the assistant would follow up with:
## Assistant Response 2 (after tool call)
### Message
"Okay, here's what I found: 🎉 Our family plan allows up to 5 lines with shared data and a 10% discount for each additional line [Family Plan Policy](ID-010). 📱 Is there anything else I can help you with today? 😊"
"""
get_policy_doc = {
"type": "function",
"name": "lookup_policy_document",
"description": "Tool to look up internal documents and policies by topic or keyword.",
"parameters": {
"strict": True,
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "The topic or keyword to search for in company policies or documents.",
},
},
"required": ["topic"],
"additionalProperties": False,
},
}
get_user_acct = {
"type": "function",
"name": "get_user_account_info",
"description": "Tool to get user account information",
"parameters": {
"strict": True,
"type": "object",
"properties": {
"phone_number": {
"type": "string",
"description": "Formatted as '(xxx) xxx-xxxx'",
},
},
"required": ["phone_number"],
"additionalProperties": False,
},
}
response = client.responses.create(
instructions=SYS_PROMPT_CUSTOMER_SERVICE,
model="gpt-4.1-2025-04-14",
tools=[get_policy_doc, get_user_acct],
input="How much will it cost for international service? I'm traveling to France.",
# input="Why was my last bill so high?"
)
response.to_dict()["output"][{'id': 'msg_67fe92d431548191b7ca6cd604b4784b06efc5beb16b3c5e',
'content': [{'annotations': [],
'text': "Hi, you've reached NewTelco, how can I help you? 🌍✈️\n\nYou'd like to know the cost of international service while traveling to France. 🇫🇷 Let me check the latest details for you—one moment, please. 🕑",
'type': 'output_text'}],
'role': 'assistant',
'status': 'completed',
'type': 'message'},
{'arguments': '{"topic":"international service cost France"}',
'call_id': 'call_cF63DLeyhNhwfdyME3ZHd0yo',
'name': 'lookup_policy_document',
'type': 'function_call',
'id': 'fc_67fe92d5d6888191b6cd7cf57f707e4606efc5beb16b3c5e',
'status': 'completed'}]
5. Orientações gerais
Estrutura do prompt
Como referência, este é um bom ponto de partida para estruturar seus prompts.
# Role and Objective
# Instructions
## Sub-categories for more detailed instructions
# Reasoning Steps
# Output Format
# Examples
## Example 1
# Context
# Final instructions and prompt to think step by step
Adicione ou remova seções conforme suas necessidades e experimente para determinar o que funciona melhor no seu caso.
Delimitadores
Estas são algumas orientações gerais para selecionar os melhores delimitadores para seu prompt. Consulte a seção Contexto longo para ver considerações específicas sobre esse tipo de contexto.
- Markdown: recomendamos começar por este formato e usar títulos Markdown nas seções principais e subseções, inclusive em níveis mais profundos da hierarquia, como H4 ou superiores. Use crases para delimitar com precisão o código em linha ou em blocos e listas numeradas ou com marcadores conforme necessário.
- XML: este formato também apresenta bom desempenho, e aprimoramos a capacidade deste modelo de seguir informações em XML. O XML facilita a delimitação precisa do início e do fim de uma seção, a adição de metadados às tags para fornecer mais contexto e o aninhamento de elementos. Veja um exemplo de como usar tags XML para aninhar exemplos em uma seção de exemplos, com entradas e saídas para cada um:
<examples>
<example1 type="Abbreviate">
<input>San Francisco</input>
<output>- SF</output>
</example1>
</examples>
- JSON é altamente estruturado e bem compreendido pelo modelo, principalmente em contextos de programação. No entanto, pode ser mais verboso e exigir caracteres de escape, o que pode gerar sobrecarga.
Orientações específicas para adicionar um grande número de documentos ou arquivos ao contexto de entrada:
- XML apresentou bom desempenho em nossos testes com contexto longo.
- Exemplo:
<doc id='1' title='The Fox'>The quick brown fox jumps over the lazy dog</doc>
- Exemplo:
- Este formato, proposto por Lee et al. (referência), também apresentou bom desempenho em nossos testes com contexto longo.
- Exemplo:
ID: 1 | TITLE: The Fox | CONTENT: The quick brown fox jumps over the lazy dog
- Exemplo:
- JSON apresentou um desempenho particularmente ruim.
- Exemplo:
[{'id': 1, 'title': 'The Fox', 'content': 'The quick brown fox jumped over the lazy dog'}]
- Exemplo:
O modelo é treinado para compreender de forma robusta a estrutura de diversos formatos. Em geral, use seu julgamento e pense no que apresentará as informações com clareza e se destacará para o modelo. Por exemplo, se você estiver recuperando documentos que contêm muito XML, um delimitador baseado em XML provavelmente será menos eficaz.
Ressalvas
- Em alguns casos isolados, observamos resistência do modelo em produzir saídas muito longas e repetitivas, como analisar centenas de itens um por um. Se isso for necessário para seu caso de uso, instrua o modelo de forma enfática a apresentar essas informações na íntegra e considere dividir o problema em partes ou usar uma abordagem mais concisa.
- Observamos alguns casos raros de chamadas de ferramentas em paralelo incorretas. Recomendamos testar esse comportamento e considerar definir o parâmetro parallel_tool_calls como false se você encontrar problemas.
Apêndice: geração e aplicação de diffs de arquivos
Recebemos feedback de desenvolvedores indicando que gerar diffs precisos e bem formados é uma capacidade essencial para tarefas relacionadas à programação. Por isso, a família GPT-4.1 oferece capacidades de geração de diffs substancialmente melhores que as dos modelos GPT anteriores. Além disso, embora o GPT-4.1 tenha bom desempenho na geração de diffs em qualquer formato quando recebe instruções e exemplos claros, disponibilizamos aqui, em código aberto, um formato de diff recomendado no qual o modelo foi amplamente treinado. Esperamos que isso reduza bastante a necessidade de tentativa e erro ao criar seus próprios diffs, principalmente para quem está começando.
Aplicar patch
Veja no exemplo abaixo um prompt que usa corretamente a chamada de ferramenta recomendada.
APPLY_PATCH_TOOL_DESC = """This is a custom utility that makes it more convenient to add, remove, move, or edit code files. `apply_patch` effectively allows you to execute a diff/patch against a file, but the format of the diff specification is unique to this task, so pay careful attention to these instructions. To use the `apply_patch` command, you should pass a message of the following structure as "input":
%%bash
apply_patch <<"EOF"
*** Begin Patch
[YOUR_PATCH]
*** End Patch
EOF
Where [YOUR_PATCH] is the actual content of your patch, specified in the following V4A diff format.
*** [ACTION] File: [path/to/file] -> ACTION can be one of Add, Update, or Delete.
For each snippet of code that needs to be changed, repeat the following:
[context_before] -> See below for further instructions on context.
- [old_code] -> Precede the old code with a minus sign.
+ [new_code] -> Precede the new, replacement code with a plus sign.
[context_after] -> See below for further instructions on context.
For instructions on [context_before] and [context_after]:
- By default, show 3 lines of code immediately above and 3 lines immediately below each change. If a change is within 3 lines of a previous change, do NOT duplicate the first change’s [context_after] lines in the second change’s [context_before] lines.
- If 3 lines of context is insufficient to uniquely identify the snippet of code within the file, use the @@ operator to indicate the class or function to which the snippet belongs. For instance, we might have:
@@ class BaseClass
[3 lines of pre-context]
- [old_code]
+ [new_code]
[3 lines of post-context]
- If a code block is repeated so many times in a class or function such that even a single @@ statement and 3 lines of context cannot uniquely identify the snippet of code, you can use multiple `@@` statements to jump to the right context. For instance:
@@ class BaseClass
@@ def method():
[3 lines of pre-context]
- [old_code]
+ [new_code]
[3 lines of post-context]
Note, then, that we do not use line numbers in this diff format, as the context is enough to uniquely identify code. An example of a message that you might pass as "input" to this function, in order to apply a patch, is shown below.
%%bash
apply_patch <<"EOF"
*** Begin Patch
*** Update File: pygorithm/searching/binary_search.py
@@ class BaseClass
@@ def search():
- pass
+ raise NotImplementedError()
@@ class Subclass
@@ def search():
- pass
+ raise NotImplementedError()
*** End Patch
EOF
"""
APPLY_PATCH_TOOL = {
"name": "apply_patch",
"description": APPLY_PATCH_TOOL_DESC,
"parameters": {
"type": "object",
"properties": {
"input": {
"type": "string",
"description": " The apply_patch command that you wish to execute.",
}
},
"required": ["input"],
},
}Implementação de referência: apply_patch.py
Esta é uma implementação de referência da ferramenta apply_patch que usamos no treinamento do modelo. Você precisará torná-la executável e disponibilizá-la como `apply_patch` no shell em que o modelo executará os comandos:
#!/usr/bin/env python3
"""
A self-contained **pure-Python 3.9+** utility for applying human-readable
“pseudo-diff” patch files to a collection of text files.
"""
from __future__ import annotations
import pathlib
from collections.abc import Callable
from dataclasses import dataclass, field
from enum import Enum
# --------------------------------------------------------------------------- #
# Domain objects
# --------------------------------------------------------------------------- #
class ActionType(str, Enum):
ADD = "add"
DELETE = "delete"
UPDATE = "update"
@dataclass
class FileChange:
type: ActionType
old_content: str | None = None
new_content: str | None = None
move_path: str | None = None
@dataclass
class Commit:
changes: dict[str, FileChange] = field(default_factory=dict)
# --------------------------------------------------------------------------- #
# Exceptions
# --------------------------------------------------------------------------- #
class DiffError(ValueError):
"""Any problem detected while parsing or applying a patch."""
# --------------------------------------------------------------------------- #
# Helper dataclasses used while parsing patches
# --------------------------------------------------------------------------- #
@dataclass
class Chunk:
orig_index: int = -1
del_lines: list[str] = field(default_factory=list)
ins_lines: list[str] = field(default_factory=list)
@dataclass
class PatchAction:
type: ActionType
new_file: str | None = None
chunks: list[Chunk] = field(default_factory=list)
move_path: str | None = None
@dataclass
class Patch:
actions: dict[str, PatchAction] = field(default_factory=dict)
# --------------------------------------------------------------------------- #
# Patch text parser
# --------------------------------------------------------------------------- #
@dataclass
class Parser:
current_files: dict[str, str]
lines: list[str]
index: int = 0
patch: Patch = field(default_factory=Patch)
fuzz: int = 0
# ------------- low-level helpers -------------------------------------- #
def _cur_line(self) -> str:
if self.index >= len(self.lines):
raise DiffError("Unexpected end of input while parsing patch")
return self.lines[self.index]
@staticmethod
def _norm(line: str) -> str:
"""Strip CR so comparisons work for both LF and CRLF input."""
return line.rstrip("\r")
# ------------- scanning convenience ----------------------------------- #
def is_done(self, prefixes: tuple[str, ...] | None = None) -> bool:
if self.index >= len(self.lines):
return True
if (
prefixes
and len(prefixes) > 0
and self._norm(self._cur_line()).startswith(prefixes)
):
return True
return False
def startswith(self, prefix: str | tuple[str, ...]) -> bool:
return self._norm(self._cur_line()).startswith(prefix)
def read_str(self, prefix: str) -> str:
"""
Consume the current line if it starts with *prefix* and return the text
**after** the prefix. Raises if prefix is empty.
"""
if prefix == "":
raise ValueError("read_str() requires a non-empty prefix")
if self._norm(self._cur_line()).startswith(prefix):
text = self._cur_line()[len(prefix) :]
self.index += 1
return text
return ""
def read_line(self) -> str:
"""Return the current raw line and advance."""
line = self._cur_line()
self.index += 1
return line
# ------------- public entry point -------------------------------------- #
def parse(self) -> None:
while not self.is_done(("*** End Patch",)):
# ---------- UPDATE ---------- #
path = self.read_str("*** Update File: ")
if path:
if path in self.patch.actions:
raise DiffError(f"Duplicate update for file: {path}")
move_to = self.read_str("*** Move to: ")
if path not in self.current_files:
raise DiffError(f"Update File Error - missing file: {path}")
text = self.current_files[path]
action = self._parse_update_file(text)
action.move_path = move_to or None
self.patch.actions[path] = action
continue
# ---------- DELETE ---------- #
path = self.read_str("*** Delete File: ")
if path:
if path in self.patch.actions:
raise DiffError(f"Duplicate delete for file: {path}")
if path not in self.current_files:
raise DiffError(f"Delete File Error - missing file: {path}")
self.patch.actions[path] = PatchAction(type=ActionType.DELETE)
continue
# ---------- ADD ---------- #
path = self.read_str("*** Add File: ")
if path:
if path in self.patch.actions:
raise DiffError(f"Duplicate add for file: {path}")
if path in self.current_files:
raise DiffError(f"Add File Error - file already exists: {path}")
self.patch.actions[path] = self._parse_add_file()
continue
raise DiffError(f"Unknown line while parsing: {self._cur_line()}")
if not self.startswith("*** End Patch"):
raise DiffError("Missing *** End Patch sentinel")
self.index += 1 # consume sentinel
# ------------- section parsers ---------------------------------------- #
def _parse_update_file(self, text: str) -> PatchAction:
action = PatchAction(type=ActionType.UPDATE)
lines = text.split("\n")
index = 0
while not self.is_done(
(
"*** End Patch",
"*** Update File:",
"*** Delete File:",
"*** Add File:",
"*** End of File",
)
):
def_str = self.read_str("@@ ")
section_str = ""
if not def_str and self._norm(self._cur_line()) == "@@":
section_str = self.read_line()
if not (def_str or section_str or index == 0):
raise DiffError(f"Invalid line in update section:\n{self._cur_line()}")
if def_str.strip():
found = False
if def_str not in lines[:index]:
for i, s in enumerate(lines[index:], index):
if s == def_str:
index = i + 1
found = True
break
if not found and def_str.strip() not in [
s.strip() for s in lines[:index]
]:
for i, s in enumerate(lines[index:], index):
if s.strip() == def_str.strip():
index = i + 1
self.fuzz += 1
found = True
break
next_ctx, chunks, end_idx, eof = peek_next_section(self.lines, self.index)
new_index, fuzz = find_context(lines, next_ctx, index, eof)
if new_index == -1:
ctx_txt = "\n".join(next_ctx)
raise DiffError(
f"Invalid {'EOF ' if eof else ''}context at {index}:\n{ctx_txt}"
)
self.fuzz += fuzz
for ch in chunks:
ch.orig_index += new_index
action.chunks.append(ch)
index = new_index + len(next_ctx)
self.index = end_idx
return action
def _parse_add_file(self) -> PatchAction:
lines: list[str] = []
while not self.is_done(
("*** End Patch", "*** Update File:", "*** Delete File:", "*** Add File:")
):
s = self.read_line()
if not s.startswith("+"):
raise DiffError(f"Invalid Add File line (missing '+'): {s}")
lines.append(s[1:]) # strip leading '+'
return PatchAction(type=ActionType.ADD, new_file="\n".join(lines))
# --------------------------------------------------------------------------- #
# Helper functions
# --------------------------------------------------------------------------- #
def find_context_core(
lines: list[str], context: list[str], start: int
) -> tuple[int, int]:
if not context:
return start, 0
for i in range(start, len(lines)):
if lines[i : i + len(context)] == context:
return i, 0
for i in range(start, len(lines)):
if [s.rstrip() for s in lines[i : i + len(context)]] == [
s.rstrip() for s in context
]:
return i, 1
for i in range(start, len(lines)):
if [s.strip() for s in lines[i : i + len(context)]] == [
s.strip() for s in context
]:
return i, 100
return -1, 0
def find_context(
lines: list[str], context: list[str], start: int, eof: bool
) -> tuple[int, int]:
if eof:
new_index, fuzz = find_context_core(lines, context, len(lines) - len(context))
if new_index != -1:
return new_index, fuzz
new_index, fuzz = find_context_core(lines, context, start)
return new_index, fuzz + 10_000
return find_context_core(lines, context, start)
def peek_next_section(
lines: list[str], index: int
) -> tuple[list[str], list[Chunk], int, bool]:
old: list[str] = []
del_lines: list[str] = []
ins_lines: list[str] = []
chunks: list[Chunk] = []
mode = "keep"
orig_index = index
while index < len(lines):
s = lines[index]
if s.startswith(
(
"@@",
"*** End Patch",
"*** Update File:",
"*** Delete File:",
"*** Add File:",
"*** End of File",
)
):
break
if s == "***":
break
if s.startswith("***"):
raise DiffError(f"Invalid Line: {s}")
index += 1
last_mode = mode
if s == "":
s = " "
if s[0] == "+":
mode = "add"
elif s[0] == "-":
mode = "delete"
elif s[0] == " ":
mode = "keep"
else:
raise DiffError(f"Invalid Line: {s}")
s = s[1:]
if mode == "keep" and last_mode != mode:
if ins_lines or del_lines:
chunks.append(
Chunk(
orig_index=len(old) - len(del_lines),
del_lines=del_lines,
ins_lines=ins_lines,
)
)
del_lines, ins_lines = [], []
if mode == "delete":
del_lines.append(s)
old.append(s)
elif mode == "add":
ins_lines.append(s)
elif mode == "keep":
old.append(s)
if ins_lines or del_lines:
chunks.append(
Chunk(
orig_index=len(old) - len(del_lines),
del_lines=del_lines,
ins_lines=ins_lines,
)
)
if index < len(lines) and lines[index] == "*** End of File":
index += 1
return old, chunks, index, True
if index == orig_index:
raise DiffError("Nothing in this section")
return old, chunks, index, False
# --------------------------------------------------------------------------- #
# Patch → Commit and Commit application
# --------------------------------------------------------------------------- #
def _get_updated_file(text: str, action: PatchAction, path: str) -> str:
if action.type is not ActionType.UPDATE:
raise DiffError("_get_updated_file called with non-update action")
orig_lines = text.split("\n")
dest_lines: list[str] = []
orig_index = 0
for chunk in action.chunks:
if chunk.orig_index > len(orig_lines):
raise DiffError(
f"{path}: chunk.orig_index {chunk.orig_index} exceeds file length"
)
if orig_index > chunk.orig_index:
raise DiffError(
f"{path}: overlapping chunks at {orig_index} > {chunk.orig_index}"
)
dest_lines.extend(orig_lines[orig_index : chunk.orig_index])
orig_index = chunk.orig_index
dest_lines.extend(chunk.ins_lines)
orig_index += len(chunk.del_lines)
dest_lines.extend(orig_lines[orig_index:])
return "\n".join(dest_lines)
def patch_to_commit(patch: Patch, orig: dict[str, str]) -> Commit:
commit = Commit()
for path, action in patch.actions.items():
if action.type is ActionType.DELETE:
commit.changes[path] = FileChange(
type=ActionType.DELETE, old_content=orig[path]
)
elif action.type is ActionType.ADD:
if action.new_file is None:
raise DiffError("ADD action without file content")
commit.changes[path] = FileChange(
type=ActionType.ADD, new_content=action.new_file
)
elif action.type is ActionType.UPDATE:
new_content = _get_updated_file(orig[path], action, path)
commit.changes[path] = FileChange(
type=ActionType.UPDATE,
old_content=orig[path],
new_content=new_content,
move_path=action.move_path,
)
return commit
# --------------------------------------------------------------------------- #
# User-facing helpers
# --------------------------------------------------------------------------- #
def text_to_patch(text: str, orig: dict[str, str]) -> tuple[Patch, int]:
lines = text.splitlines() # preserves blank lines, no strip()
if (
len(lines) < 2
or not Parser._norm(lines[0]).startswith("*** Begin Patch")
or Parser._norm(lines[-1]) != "*** End Patch"
):
raise DiffError("Invalid patch text - missing sentinels")
parser = Parser(current_files=orig, lines=lines, index=1)
parser.parse()
return parser.patch, parser.fuzz
def identify_files_needed(text: str) -> list[str]:
lines = text.splitlines()
return [
line[len("*** Update File: ") :]
for line in lines
if line.startswith("*** Update File: ")
] + [
line[len("*** Delete File: ") :]
for line in lines
if line.startswith("*** Delete File: ")
]
def identify_files_added(text: str) -> list[str]:
lines = text.splitlines()
return [
line[len("*** Add File: ") :]
for line in lines
if line.startswith("*** Add File: ")
]
# --------------------------------------------------------------------------- #
# File-system helpers
# --------------------------------------------------------------------------- #
def load_files(paths: list[str], open_fn: Callable[[str], str]) -> dict[str, str]:
return {path: open_fn(path) for path in paths}
def apply_commit(
commit: Commit,
write_fn: Callable[[str, str], None],
remove_fn: Callable[[str], None],
) -> None:
for path, change in commit.changes.items():
if change.type is ActionType.DELETE:
remove_fn(path)
elif change.type is ActionType.ADD:
if change.new_content is None:
raise DiffError(f"ADD change for {path} has no content")
write_fn(path, change.new_content)
elif change.type is ActionType.UPDATE:
if change.new_content is None:
raise DiffError(f"UPDATE change for {path} has no new content")
target = change.move_path or path
write_fn(target, change.new_content)
if change.move_path:
remove_fn(path)
def process_patch(
text: str,
open_fn: Callable[[str], str],
write_fn: Callable[[str, str], None],
remove_fn: Callable[[str], None],
) -> str:
if not text.startswith("*** Begin Patch"):
raise DiffError("Patch text must start with *** Begin Patch")
paths = identify_files_needed(text)
orig = load_files(paths, open_fn)
patch, _fuzz = text_to_patch(text, orig)
commit = patch_to_commit(patch, orig)
apply_commit(commit, write_fn, remove_fn)
return "Done!"
# --------------------------------------------------------------------------- #
# Default FS helpers
# --------------------------------------------------------------------------- #
def open_file(path: str) -> str:
with open(path, "rt", encoding="utf-8") as fh:
return fh.read()
def write_file(path: str, content: str) -> None:
target = pathlib.Path(path)
target.parent.mkdir(parents=True, exist_ok=True)
with target.open("wt", encoding="utf-8") as fh:
fh.write(content)
def remove_file(path: str) -> None:
pathlib.Path(path).unlink(missing_ok=True)
# --------------------------------------------------------------------------- #
# CLI entry-point
# --------------------------------------------------------------------------- #
def main() -> None:
import sys
patch_text = sys.stdin.read()
if not patch_text:
print("Please pass patch text through stdin", file=sys.stderr)
return
try:
result = process_patch(patch_text, open_file, write_file, remove_file)
except DiffError as exc:
print(exc, file=sys.stderr)
return
print(result)
if __name__ == "__main__":
main()Outros formatos de diff eficazes
Se você quiser experimentar outro formato de diff, nossos testes mostraram altas taxas de sucesso tanto com o formato SEARCH/REPLACE usado no benchmark polyglot do Aider quanto com um formato pseudo-XML sem escapes internos.
Esses formatos de diff têm dois aspectos principais em comum: (1) não usam números de linha e (2) fornecem tanto o código exato a ser substituído quanto o código exato que o substituirá, com delimitadores claros entre os dois.
SEARCH_REPLACE_DIFF_EXAMPLE = """
path/to/file.py
```
>>>>>>> SEARCH
def search():
pass
=======
def search():
raise NotImplementedError()
<<<<<<< REPLACE
"""
PSEUDO_XML_DIFF_EXAMPLE = """
`<edit>`
`<file>`
path/to/file.py
`</file>`
`<old_code>`
def search():
pass
`</old_code>`
`<new_code>`
def search():
raise NotImplementedError()
`</new_code>`
`</edit>`
"""














