System prompt para agente com GPT-6 Astra: o que deixar fixo e o que mudar a cada tarefa?

Montar um system prompt GPT-6 Astra é decidir fronteira: o que vale para toda tarefa fica fixo (papel, limites, formato de saída, hierarquia de prioridade, política de ferramentas) e o que muda a cada pedido vai no input. O guia oficial da OpenAI avisa que o Astra segue instrução longa melhor, porém é mais sensível a conflito no contexto, e orientação confusa em arquivo de skill pode travar o trabalho cedo. Some a isso o cache: bloco fixo no início, variável no fim, prefixo mínimo de 1.024 tokens. Contexto de 1.050.000 tokens não é desculpa pra inchar o permanente
Fala aí, beleza? Tem um erro clássico que todo mundo comete no primeiro agente sério: empilhar TUDO no system prompt e depois ficar olhando pro terminal sem entender por que o bicho parou no meio da tarefa
O GPT-6 Astra é o modelo de fronteira mais capaz da OpenAI, sucessor do GPT-5.6 Sol, voltado a raciocínio complexo, código, uso de computador, pesquisa e criação de documentos
O rollout começou em 3 de setembro de 2026, então a maioria dos agentes que tu vê por aí ainda está rodando com system prompt herdado da geração anterior
E aqui mora o problema: o guia oficial diz que o Astra segue instruções longas melhor que os modelos anteriores, mas é MAIS sensível a informação no contexto
Ou seja, aquele bloco gigante de regras que antes era ignorado agora é levado a sério, inclusive as partes que se contradizem
A promessa deste post é simples: separar o que fica permanente no system prompt do que vai por tarefa, com passo a passo, tabela de decisão e a conta de custo no fim
O que você precisa antes de montar o system prompt
Antes de escrever a primeira linha, vale checar o terreno
Acesso ao modelo. O GPT-6 Astra está disponível na API da OpenAI e também via Microsoft Azure e Amazon Bedrock
Segundo a própria OpenAI, ele chegou para usuários Pro, Enterprise e Business Premium no ChatGPT Work e no Codex, além da API, com o rollout para Plus e Business levando alguns dias
Model ID. Na API, o identificador é gpt-6-astra
Os limites que moldam a decisão. Isso aqui não é trivia, é o que define quanto cabe no fixo:
- Janela de contexto: 1.050.000 tokens
- Saída máxima: 128.000 tokens
- Knowledge cutoff: 30 de abril de 2026
Esse cutoff importa mais do que parece: tudo que aconteceu depois dele precisa entrar no contexto, e contexto é justamente o recurso que tu não quer desperdiçar com instrução fixa repetida
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 114 aulas
- 4 projetos
- 9h 18min
Níveis de esforço de raciocínio. O Astra aceita reasoning.effort em low, medium, high, xhigh e max
Atenção nessa: o nível none NÃO é suportado
Mapa dos arquivos que o agente já enxerga. Antes de adicionar instrução nova, saiba o que já existe
Skills carregam instrução sob demanda, e no Codex o arquivo de instruções customizadas é o AGENTS.md
Se tu não sabe quais arquivos o teu agente lê, tu não tem um system prompt, tu tem um palpite 😅
Como montar o system prompt do agente com GPT-6 Astra, passo a passo
A lógica geral: permanente é o que vale pra toda tarefa, variável é tudo que depende do pedido
Vamos por partes
- Definir papel e escopo
Começa pelo que o agente é e, principalmente, pelo que ele NÃO é
Você é um agente de manutenção de código em um repositório Node.js.
Seu escopo: corrigir bugs, escrever testes e atualizar documentação do repositório atual.
Fora do escopo: alterar infraestrutura, tocar em credenciais, publicar pacotes.
O erro comum deste passo: escrever o papel do agente e já emendar o pedido da semana no mesmo bloco
Papel é fixo, pedido é variável, e misturar os dois é o começo do inchaço
Se tu ainda está calibrando o tom das instruções, ajuda entender o que muda ao escrever prompt para modelo de raciocínio antes de fechar esse bloco
- Declarar a hierarquia de prioridade explicitamente
A OpenAI recomenda tornar a precedência explícita: as instruções do usuário vencem as diretrizes de uma skill, e em conflito o modelo prioriza o usuário
Hierarquia de prioridade:
1. Instrução direta do usuário nesta tarefa
2. Diretrizes de skills e arquivos de instrução do repositório
Em caso de conflito entre as duas, siga o usuário e avise em uma linha qual diretriz foi deixada de lado.
O erro comum deste passo: assumir que a hierarquia é óbvia pro modelo
Não é. Se tu não escreve, o Astra fica tentando conciliar as duas fontes, e é exatamente aí que ele empaca
- Definir o formato de saída
O guia oficial diz que o Astra tende a usar listas, tabelas e Markdown pra deixar a resposta escaneável
Se a tua aplicação precisa de prosa corrida, ou de JSON puro, tu PRECISA especificar
Formato de saída padrão: prosa curta, no máximo 2 parágrafos, sem listas,
sem tabelas e sem Markdown. Código apenas quando for entregar arquivo.
O erro comum deste passo: reclamar que "o modelo enche de bullet point" sem nunca ter pedido o contrário
- Escrever os nunca faça e os limites de ferramenta
Aqui entram as proibições duras e a política de uso de ferramenta
Nunca faça:
- executar comandos destrutivos sem confirmação explícita
- alterar arquivos fora do diretório do projeto
- inventar valores de configuração que você não leu no repositório
Ferramentas: leitura de arquivo é livre. Escrita e execução exigem preâmbulo
explicando o motivo antes da chamada.
O erro comum deste passo: transformar a lista de proibições num romance
Cada regra que tu adiciona é uma chance a mais de conflitar com outra regra que já está lá
- Calibrar iniciativa e persistência
Esse é o ajuste mais importante do Astra na prática
O guia oficial afirma que ele tende a perguntar ao usuário quando informação adicional pode mudar materialmente o resultado
Ótimo pra decisão de negócio, péssimo pra agente que deveria assumir premissa razoável e seguir
A saída indicada é orientação de iniciativa e follow-through, incluindo a instrução de resolver a consulta inteira antes de devolver o controle:
Você é um agente: continue trabalhando até a consulta do usuário estar
completamente resolvida antes de devolver o controle.
Quando faltar um dado que não muda o resultado de forma material,
assuma a premissa mais razoável, registre a premissa em uma linha e siga.
Só pergunte quando a informação faltante mudar materialmente o resultado.
O erro comum deste passo: exagerar na dose e desligar a pergunta por completo
Agente que nunca pergunta erra em silêncio, e aí tu descobre tarde
- Aplicar as práticas agênticas do guia
Pra uso agêntico, a OpenAI recomenda três coisas no prompt: planejar a tarefa até a resolução completa, dar preâmbulos claros antes de decisões importantes de uso de ferramenta e usar uma ferramenta de TODO pra rastrear progresso
Antes de agir, decomponha a tarefa em subtarefas e registre no TODO.
Antes de cada decisão importante de ferramenta, escreva uma frase dizendo
o que vai fazer e por quê.
Após cada chamada de ferramenta, reflita sobre o resultado antes do próximo passo.
Atualize o TODO conforme avança.
O erro comum deste passo: pedir plano e TODO, mas não dar ferramenta de TODO nenhuma pro agente
Aí ele simula o controle no texto e tu não tem rastro de nada
- Ordenar o prompt: fixo no início, volátil no fim
A OpenAI orienta manter o começo do prompt estável, com o conteúdo duradouro no início e o conteúdo volátil (entrada do usuário, valores dinâmicos, dados de sessão) no fim
O motivo é mecânico: qualquer alteração nos tokens iniciais invalida o match de prefixo e derruba o cache
E o prompt caching exige um prefixo mínimo cacheável de 1.024 tokens em modelos GPT-5.6 e posteriores
{
"model": "gpt-6-astra",
"instructions": "<bloco fixo: papel, hierarquia, formato, nunca faça, iniciativa>",
"input": "<bloco variável: objetivo do pedido, arquivos, dados de sessão>",
"reasoning": { "effort": "high" }
}
O erro comum deste passo: injetar data, nome do usuário ou ID da sessão logo na primeira linha do bloco fixo
Parece inofensivo, mas muda os tokens iniciais a cada requisição e mata o cache do prompt inteiro
- Reenviar as instruções a cada requisição
Na Responses API, o parâmetro instructions carrega as instruções de alto nível de comportamento (tom, objetivos, exemplos) e tem prioridade sobre o prompt enviado em input
É esse par que monta o system prompt do agente neste post: o permanente vai em instructions, o que muda a cada pedido vai em input
Só que ele NÃO é herdado entre turnos quando tu usa previous_response_id
As instruções do turno anterior não ficam no contexto, precisam ser reenviadas em cada request
O erro comum deste passo: montar conversa multi-turno com previous_response_id, mandar instructions só no primeiro turno e depois jurar que o agente "esqueceu as regras"
Ele não esqueceu, tu que não mandou 😀
O que deixar fixo e o que mandar por tarefa: exemplos reais
A fronteira fica bem mais clara com cenário na mesa
Agente de código no Codex:
Linha fixa: papel de mantenedor do repositório, hierarquia usuário acima de skill, formato de saída (diff mais explicação curta), lista de nunca faça, política de preâmbulo antes de escrita e execução
Linha por pedido: qual bug, qual arquivo, qual branch, qual critério de aceite, qual comando de teste rodar nesta tarefa
O AGENTS.md do repositório é o lugar natural do que vale pra todo mundo que toca naquele projeto, não do que vale pra tarefa de hoje
Agente de pesquisa:
Linha fixa: papel de pesquisador, regra de citar a fonte de cada afirmação, formato de saída, regra de nunca completar lacuna com achismo, lembrete de que o knowledge cutoff é 30 de abril de 2026 e que tudo posterior precisa vir de ferramenta
Linha por pedido: a pergunta, o recorte de tempo, as fontes permitidas, o formato do entregável daquela vez
Como pesquisa vira insumo de código com frequência, vale combinar isso com um processo pra validar a resposta antes de usar no projeto
Agente que delega para outros agentes:
Em sistemas multiagente, o guia recomenda usar o prompt pra calibrar quanto o Astra deve delegar e paralelizar trabalho
E tem um detalhe que muita gente esquece: pedir que as mensagens entre agentes e a resposta final sejam legíveis, porque um humano pode ler aquilo
Delegue subtarefas independentes em paralelo. Tarefas que dependem do
resultado de outra ficam em sequência.
Toda mensagem enviada a outro agente e a resposta final devem ser legíveis
por um humano: sem código interno, sem abreviação particular.
Linha fixa: essa política de delegação e legibilidade
Linha por pedido: quantos agentes, qual o objetivo do lote, qual o orçamento de tempo daquela rodada
Agente que gera documento:
Linha fixa: papel, tom, estrutura padrão do documento, o que nunca entra (dado não verificado, promessa comercial), formato de saída explícito
Linha por pedido: o tema, o público, o tamanho, os dados daquele documento específico
Instrução fixa x instrução por tarefa: tabela de decisão
Antes da tabela, um lembrete do guia oficial: o Astra segue instruções de forma muito precisa e o resultado varia conforme o tipo de prompt usado, system, developer, user ou uma combinação deles
Só que isso é sobre os papéis de prompt citados no guia, e não sobre o esquema que a gente montou aqui: neste post o bloco fixo vai no parâmetro instructions da Responses API e o variável vai no input, com instructions tendo prioridade sobre o input
Então "onde colocar" não é detalhe de organização, muda a saída
| Tipo de informação | Onde colocar | Por quê |
|---|---|---|
| Papel e escopo do agente | Fixo (instructions) |
Vale para toda tarefa e nunca muda entre pedidos |
| Limites e proibições | Fixo | Regra de segurança não pode depender de o usuário lembrar de repetir |
| Formato de saída | Fixo | O Astra tende a listas, tabelas e Markdown; a preferência precisa ser declarada |
| Hierarquia de prioridade | Fixo | Recomendação oficial: usuário vence diretriz de skill, e isso precisa estar escrito |
| Política de ferramentas | Fixo | Preâmbulo antes de decisão de ferramenta e TODO de progresso valem para qualquer tarefa |
| Objetivo do pedido | Por tarefa (input) |
Muda a cada requisição, por definição |
| Dados de sessão | Por tarefa, no fim do prompt | Conteúdo volátil no início invalida o match de prefixo e derruba o cache |
| Arquivos do momento | Por tarefa | O conjunto relevante muda a cada pedido e inchar o fixo com ele desperdiça contexto |
| Critérios de aceite | Por tarefa | "Pronto" para esta tarefa raramente é "pronto" para a próxima |
Por que instrução fixa inchada trava o agente em tarefas longas
Os sintomas são bem reconhecíveis
Sintoma 1: o agente pausa e bloqueia o trabalho cedo. Ele começa, dá dois passos e para esperando alguma coisa
Sintoma 2: pergunta demais. Em vez de assumir premissa razoável, devolve pergunta e fica parado
Sintoma 3: ignora o formato pedido. A resposta volta em bullet quando tu queria prosa, ou em prosa quando tu queria JSON
Sintoma 4: o custo explode. A conta sobe sem a tarefa ficar maior
As causas, ancoradas na doc:
O guia do modelo é bem direto: o Astra segue instruções longas melhor que modelos anteriores, mas é mais sensível a informação no contexto
E afirma que orientação pouco clara ou conflitante em um arquivo de skill pode fazer o modelo pausar e bloquear o trabalho cedo
Junta com o comportamento de perguntar quando informação adicional pode mudar materialmente o resultado, e tu tem o combo: regra ambígua no fixo mais tendência a perguntar igual a agente parado
No custo, o degrau é objetivo: requisições com mais de 272 mil tokens de input passam a ser cobradas em 2x nas taxas de input e cache e 1,5x no output, valendo pra requisição INTEIRA
Repare no detalhe: não é só o excedente, é o request completo
As soluções:
Auditar os arquivos de instrução. A OpenAI recomenda auditar skills e outros arquivos acessíveis ao modelo, como o AGENTS.md, procurando instruções que possam influenciar o comportamento
O guia inclusive oferece um prompt pronto pra encontrar orientação silenciosa ou conflitante quando a aplicação carrega muitos arquivos de instrução, vale pegar direto lá
Mover fluxo repetível para skill. A doc da OpenAI descreve skills na API como adequadas para fluxos repetíveis, porque carregam instruções mais ricas, scripts e referências sem inchar o contexto do agente logo de início
Traduzindo: o passo a passo detalhado do fluxo de deploy não precisa estar no system prompt de toda tarefa, ele carrega sob demanda
Declarar prioridade explícita. Já falei no passo 2, e repito porque é o que resolve conflito sem tu ter que caçar cada contradição
Custo: como a divisão fixo x variável afeta a conta
Essa parte convence até quem não liga pra organização de prompt 😛
O preço padrão do GPT-6 Astra na API, por 1 milhão de tokens:
- Input: US$ 10,00
- Input cacheado: US$ 1,00
- Output: US$ 50,00
A escrita de cache é cobrada a 1,25x a taxa de token de input não cacheado
A leitura de cache custa 0,1x a taxa de input não cacheado
Agora repara na matemática: o mesmo bloco fixo que custa US$ 10,00 por milhão sem cache passa a custar US$ 1,00 por milhão quando o prefixo bate
E ele só bate se tu mantiver os tokens iniciais estáveis, com o conteúdo duradouro no começo e o volátil no fim, respeitando o prefixo mínimo cacheável de 1.024 tokens
Qualquer alteração nos tokens iniciais invalida o match de prefixo
Então aquele timestamp inocente no topo do system prompt não é só desleixo, é a diferença entre pagar 1x e pagar 0,1x pelo bloco que se repete em TODA requisição
E tem o degrau: acima de 272.000 tokens de input, a requisição inteira passa a 2x em input e cache e 1,5x no output
Contexto de 1.050.000 tokens não é convite pra encher, é margem de manobra
Inchar o permanente empurra tuas requisições pra cima desse degrau sem tu perceber, porque o fixo entra em todas elas
Resumo e próximo passo
A regra de bolso cabe em uma linha: permanente é o que vale pra toda tarefa, variável é tudo que depende do pedido
No fixo: papel, escopo, hierarquia de prioridade, formato de saída, os nunca faça, política de ferramenta, calibragem de iniciativa e persistência
No variável: objetivo do pedido, arquivos do momento, dados de sessão, critérios de aceite
E lembra do detalhe operacional que pega muita gente: instructions não é herdado com previous_response_id, então reenvia a cada requisição
O próximo passo é bem concreto
Roda a auditoria dos arquivos de instrução do teu agente, skills e AGENTS.md incluídos, usando o prompt que o guia da OpenAI oferece pra isso
Corta o que conflita, move fluxo repetível pra skill, deixa o fixo estável no início do prompt
Depois mede de novo: quantas vezes o agente parou pra perguntar, quantas vezes ele ignorou o formato, quanto caiu o custo de input
É chato? Um pouco. Mas é isso que separa agente que entrega de agente que fica pedindo permissão pra respirar 😀
até o próximo post!
Perguntas frequentes
Qual a diferença entre o parâmetro instructions e o texto que vai dentro de input na Responses API do GPT-6 Astra?
O parâmetro instructions carrega as instruções de alto nível (tom, objetivos, exemplos) e tem prioridade sobre o que está em input. Mas atenção: instructions não é herdado entre turnos quando tu usa previous_response_id, então precisa reenviar essas instruções a cada requisição.
Por que o system prompt do GPT-6 Astra pode sair mais caro em tarefas com muito contexto?
Porque requisições com mais de 272 mil tokens de input passam a ser cobradas em 2x nas taxas de input e cache, e 1,5x no output, valendo pra requisição inteira. Se o teu system prompt fixo já é grande e ainda soma com dado volátil grande, essa conta sobe rápido.
Quanto custa manter o system prompt em cache no GPT-6 Astra?
A escrita de cache é cobrada a 1,25x a taxa de input padrão, e a leitura sai por 0,1x essa mesma taxa. O prefixo mínimo cacheável é de 1.024 tokens, por isso a OpenAI orienta deixar conteúdo fixo no início do prompt e o variável no fim.
O que acontece se o system prompt tiver instrução conflitante com uma skill carregada pelo agente?
O guia oficial diz que o Astra é mais sensível a informação no contexto, e orientação pouco clara ou conflitante em um arquivo de skill pode fazer ele pausar e bloquear o trabalho cedo. Por isso a recomendação é declarar hierarquia explícita: usuário tem precedência sobre skill.
Dá pra usar reasoning.effort none pra economizar no system prompt do GPT-6 Astra?
Não. O Astra aceita os níveis low, medium, high, xhigh e max, mas não suporta o nível none. Se o objetivo é reduzir custo de raciocínio, o piso é low.
O system prompt do GPT-6 Astra funciona igual quando o agente usa system, developer e user juntos?
Não necessariamente. O guia oficial afirma que o Astra segue instruções de forma muito precisa e que os resultados variam conforme o tipo de prompt usado, seja system, developer, user ou uma combinação deles. Isso é sobre os papéis de prompt citados no guia, e não sobre o esquema descrito neste post, que monta o bloco fixo no parâmetro instructions da Responses API e o variável no input, com instructions tendo prioridade sobre o input. Se o teu agente usa esses papéis separados, vale testar a combinação antes de fixar em produção.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
GPT-6 Astra ou Gemini: qual modelo usar para código no dia a dia?
GPT-6 Astra ou Gemini: qual escolher para código no dia a dia? Compare preço, limite de saída e casos de uso e veja o veredito sem enrolação.
Como usar o GPT-6 Astra para entender um repositório legado que ninguém documentou
O GPT-6 Astra promete entender repositórios legados sem documentação. Veja o passo a passo com 1 milhão de tokens de contexto e como validar cada resposta.
Por que o GPT-6 Astra demora para responder e o que fazer na sua aplicação
GPT-6 Astra lento? Entenda por que modelos de raciocínio pensam antes de responder e veja como ajustar reasoning.effort, contexto e cache na aplicação.
