Por que o GPT-6 Astra corta a resposta no meio? O limite de 128 mil tokens de saída e como fatiar tarefas longas

Resposta cortada no meio quase nunca é falta de contexto. O GPT-6 Astra lê até 1.050.000 tokens de entrada, mas gera no máximo 128.000 tokens de saída por resposta, e é esse teto que trunca teu documento. Pior: max_output_tokens conta raciocínio, texto visível e formatação não visível, então dá pra pagar input e reasoning e receber resposta vazia. A saída é checar o status de término de cada chamada (finish_reason == "length" ou incomplete_details.reason == "max_output_tokens"), reservar folga e fatiar a tarefa longa em partes nomeadas, uma por requisição.
Fala aí, beleza? Poucas coisas irritam mais que pedir um documentão pro modelo, esperar, e ver o texto parar assim: "e para configurar o serviço basta"
E acabou 😅
Se liga no que quase sempre está por trás disso: o GPT-6 Astra tem janela de contexto de 1.050.000 tokens e limite máximo de 128.000 tokens de saída
São dois números BEM diferentes, e é o segundo que corta a tua resposta no meio
É tipo caixa d’água e torneira: a caixa (o contexto) é gigante, mas a vazão da torneira (a saída por resposta) tem um teto fixo
O modelo entrou em rollout escalonado no dia 3 de setembro de 2026, começando pelas empresas do Trusted Access Program, com acesso mais amplo via API e nos planos ChatGPT Plus, Pro, Business e Enterprise anunciado para os dias seguintes
Então muita gente está batendo nesse teto agora, pela primeira vez, e achando que é bug
Não é. É orçamento de saída, e dá pra trabalhar com ele
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 114 aulas
- 4 projetos
- 9h 18min
Sintoma 1: a resposta para no meio de uma frase ou de um bloco de código
O sintoma é o mais óbvio de todos: o texto simplesmente encerra
Às vezes no meio de uma palavra, às vezes com a cerca de código aberta e nunca fechada
A causa:
A geração bateu no teto de tokens de saída daquela chamada
Não importa se sobrou contexto de sobra. O contexto é o quanto ele consegue LER, o max_output_tokens é o quanto ele pode ESCREVER naquela resposta
Quem já brigou com limites de resposta longa em outros modelos já conhece esse padrão de cabeça
Como identificar (sem achismo):
Não fique adivinhando pelo texto. A própria resposta te conta
Na Responses API, o retorno vem com status igual a incomplete e incomplete_details.reason igual a max_output_tokens
# Responses API
if resp.status == "incomplete" and resp.incomplete_details.reason == "max_output_tokens":
print("truncou por limite de saída, precisa continuar em outra chamada")
Os valores possíveis de reason são max_output_tokens ou content_filter, então se veio o primeiro, é teto de saída mesmo
Na Chat Completions API o sinal é outro campo:
# Chat Completions API
if finish_reason == "length":
print("truncou por ter atingido o teto de tokens de saída")
A solução:
Reduzir o escopo POR REQUISIÇÃO e continuar a geração numa nova chamada
Não é gambiarra, é o jeito certo de lidar com um teto por resposta
Como prevenir:
Definir o tamanho do entregável ANTES de pedir
"Escreva a documentação completa do sistema" é um pedido sem tamanho, e pedido sem tamanho estoura
"Escreva o capítulo 3, cobrindo só autenticação, em no máximo X seções" é um pedido com contorno
Sintoma 2: você pagou a requisição e recebeu resposta vazia
Esse é o que dói no bolso 😛
Nenhum token visível voltou, a tela ficou em branco, mas a requisição contou na fatura
A causa:
O max_output_tokens limita o TOTAL de tokens que o modelo gera, e isso inclui tokens de raciocínio, tokens de saída visível e tokens de formatação não visíveis
Ou seja: o corte pode acontecer antes de qualquer token visível ser produzido
Aí você paga input e raciocínio e não recebe resposta nenhuma
Tome cuidado com isso, porque é justamente quando a pessoa aperta o limite "pra economizar" que a conta vira desperdício puro
A solução:
A OpenAI recomenda reservar pelo menos 25.000 tokens para raciocínio e saída ao começar a usar modelos de raciocínio
E o segundo ajuste é o esforço de raciocínio: no GPT-6 Astra o reasoning.effort aceita low, medium, high, xhigh e max
O nível none não é suportado nesse modelo, então não adianta tentar zerar o raciocínio pra sobrar tudo pro texto
{
"model": "gpt-6-astra",
"max_output_tokens": 25000,
"reasoning": { "effort": "medium" }
}
O valor de max_output_tokens aí em cima é a reserva mínima recomendada, ajuste ao teu entregável (o teto do modelo continua sendo 128.000)
Como prevenir:
Nunca apertar o max_output_tokens no tamanho exato do texto que você espera receber
Se você acha que o capítulo vai dar X, o orçamento precisa ser maior que X, porque o raciocínio come do mesmo pote
Sintoma 3: a contagem de tokens de saída não bate com o texto que você recebeu
Esse aqui é o clássico "mas eu recebi meia página, por que a contagem tá tão alta?"
A resposta veio curtinha, e mesmo assim o output_tokens (Responses) ou o completion_tokens (Chat Completions) apareceu MUITO acima do tamanho aparente
A causa:
O uso de tokens de saída reportado inclui todos os tokens gerados pelo modelo, não só o texto visível
E tem mais: tokens de raciocínio são cobrados como tokens de saída, na tarifa padrão de output do modelo
Então não existe raciocínio "de graça" acontecendo nos bastidores. Ele está na conta e está no orçamento
A solução:
Tratar raciocínio como parte do orçamento de saída na hora de dimensionar cada fatia
A fatia não é "o texto que eu quero". A fatia é "o texto que eu quero + o que o modelo vai pensar pra escrever isso"
Como prevenir:
Medir o custo real de UMA fatia antes de escalar o processo pras outras cinquenta
Roda uma, olha o output_tokens, compara com o texto que voltou
Aí sim você sabe o tamanho de fatia que cabe, e não vai descobrir isso na fatura do mês
Como fatiar um documento longo ou um refactor grande em etapas
Bora ver na prática? A ideia é simples: em vez de um pedido gigante que morre no meio, você monta uma linha de produção
- Defina o entregável e quebre em partes nomeadas. Antes de qualquer chamada, escreva a lista: "capítulo 1: instalação", "capítulo 2: configuração", "capítulo 3: autenticação". Parte sem nome é parte que você não consegue conferir depois. O erro comum deste passo: pedir "a documentação inteira" e deixar o recorte por conta do modelo.
- Peça primeiro só o esqueleto, numa requisição curta. Índice, títulos e uma linha de escopo por parte. É barato, é rápido e vira o contrato do resto do trabalho. O erro comum deste passo: já mandar o esqueleto junto com o pedido do conteúdo, o que devolve o problema pro mesmo teto de saída.
- Gere uma parte por requisição, passando o esqueleto como contexto. Cada chamada recebe o índice completo e a instrução de escrever SÓ a parte da vez. É isso que mantém coerência entre as fatias sem inflar a saída. O erro comum deste passo: mandar duas ou três partes "que são curtinhas" na mesma chamada, e aí a terceira trunca.
- Reserve folga de saída e ajuste o
reasoning.effortpor etapa. Esqueleto e revisão pedem menos esforço, trecho difícil pede mais. E não perca tempo tentando calibrar por outro caminho: o GPT-6 Astra não aceita valores customizados detemperature,top_pnemlogprobs. O erro comum deste passo: apertar omax_output_tokensno limite exato do texto esperado e cair direto no sintoma 2.
- Cheque o status de término de CADA chamada antes de seguir.
finish_reason == "length"na Chat Completions,incomplete_details.reason == "max_output_tokens"na Responses. Se truncou, essa parte volta pra fila menor, não vai pro documento final. O erro comum deste passo: juntar tudo primeiro e só descobrir o buraco na hora da revisão final.
- Junte as partes na ordem do esqueleto. Como cada fatia foi gerada contra o mesmo índice, a costura é montagem, não reescrita. O erro comum deste passo: pedir pro modelo "juntar e revisar tudo de uma vez" no final, que é exatamente o pedido gigante que você estava evitando desde o começo 😅
Quando fatiar de verdade compensa: documentação, migração de código e relatórios
Nem toda tarefa longa se fatia igual. O segredo é achar a unidade natural de corte de cada uma
Documentação técnica: a fatia é o capítulo
Capítulo é uma unidade que já nasce autocontida: tem começo, meio e fim próprios
Você gera o índice primeiro, depois um capítulo por chamada
Se um capítulo estourar, ele vira duas seções e pronto, o resto do documento nem sente
Migração de código: a fatia é o arquivo
Aqui a unidade é óbvia e quase ninguém usa: um arquivo por requisição
Migrar dez arquivos numa chamada só é o caminho mais curto pra receber sete arquivos completos e o oitavo cortado no meio de uma função, o que é bem pior que não ter feito nada
E tem um detalhe que só aparece na prática: arquivo cortado no meio parece pronto se você não conferir o status de término, aí o pedaço quebrado entra no commit e você descobre no build
Vale o mesmo raciocínio de consumo de tokens em tarefas longas com agente de código: tarefa grande sem recorte vira token queimado
Relatório: a fatia é a seção
Relatório tem estrutura fixa (resumo, dados, análise, conclusão), então o recorte já vem pronto de fábrica
Gera seção por seção passando o sumário como contexto, e deixa a conclusão por último, quando as outras seções já existem e podem ser resumidas de verdade
Se uma seção de dados for pesada, quebra ela por tabela ou por indicador, que a lógica é a mesma: cada fatia precisa caber com folga no orçamento de saída, contando o raciocínio junto
O outro lado da conta: contexto gigante custa caro mesmo sem estourar a saída
Tem gente que resolve o truncamento do jeito errado: enfia TUDO no contexto de uma vez pra não precisar fatiar
Só que o contexto tem preço, se liga na tabela
| Item | Preço padrão da API | Acima de 272.000 tokens de entrada |
|---|---|---|
| Entrada | US$ 10 por 1M de tokens | 2x |
| Entrada em cache | US$ 1 por 1M de tokens | 2x |
| Saída | US$ 50 por 1M de tokens | 1,5x |
E olha o detalhe que pega: prompts com mais de 272.000 tokens de entrada são cobrados com 2x nas taxas de entrada e de cache e 1,5x na taxa de saída, valendo para a REQUISIÇÃO INTEIRA
Não é só o excedente que fica mais caro. É tudo
Conclusão prática: encher o contexto de 1.050.000 tokens só pra fugir do trabalho de fatiar sai mais caro que fatiar
E, de quebra, você continua com o mesmo teto de 128.000 tokens de saída no fim da linha, então nem resolveu o problema original 🙂
Vídeo: por que boa parte dos tokens do seu agente vai pro lixo
Orçamento de saída é só metade da história: tem também o token que você gasta à toa antes mesmo de gerar qualquer coisa
Pra começar do zero nesse assunto de desperdício de tokens em agente, este vídeo do canal mostra o problema e apresenta o FastContext:
Conclusão
Guarda essas duas ideias e você para de apanhar:
Janela de contexto é o quanto o modelo lê (1.050.000 tokens), teto de saída é o quanto ele escreve por resposta (128.000 tokens)
E checar o status de término de cada chamada precisa virar hábito, não algo que você faz só quando desconfia: finish_reason == "length" ou incomplete_details.reason == "max_output_tokens" já te contam tudo
Próximo passo, bem concreto: no teu próximo documento longo, gaste UMA requisição curta só pro esqueleto antes de gerar qualquer conteúdo
É a chamada mais barata do processo e é ela que segura o resto de pé
Ah, e pra fechar o operacional: o modelo aparece como gpt-6-astra na API da OpenAI e também está disponível no Amazon Bedrock, e tool calling só rola pela Responses API
até o próximo post! 😀
Perguntas frequentes
Qual a diferença entre a janela de contexto e o limite de tokens de saída no GPT-6 Astra?
O GPT-6 Astra tem janela de contexto de 1.050.000 tokens, que é o quanto ele consegue ler (prompt, histórico, arquivos anexados). Já o limite máximo de tokens de saída é de 128.000 tokens, e esse é o teto do que ele pode escrever numa única resposta. São orçamentos separados: sobrar contexto não ajuda em nada se o corte for por saída.
Onde já dá pra usar o GPT-6 Astra?
O modelo entrou em rollout escalonado no dia 3 de setembro de 2026, começando pelas empresas do Trusted Access Program. O acesso mais amplo pela API e nos planos ChatGPT Plus, Pro, Business e Enterprise foi anunciado para os dias seguintes. Na API, o identificador é gpt-6-astra, e ele também está disponível no Amazon Bedrock.
Quanto custa usar o GPT-6 Astra pela API?
O preço padrão é 10 dólares por 1 milhão de tokens de entrada, 50 dólares por 1 milhão de tokens de saída e 1 dólar por 1 milhão de tokens de entrada em cache. Vale lembrar que tokens de raciocínio entram na conta de saída, na mesma tarifa de output. Então um max_output_tokens alto com reasoning.effort em high ou max pesa mais na fatura do que parece.
O que acontece se o prompt passar de 272.000 tokens de entrada?
Prompts acima de 272.000 tokens de entrada são cobrados com 2x nas taxas de entrada e de cache e 1,5x na taxa de saída. Essa sobretaxa vale para a requisição inteira, não só pelo trecho excedente. Isso é mais um motivo pra fatiar documentos grandes em vez de mandar tudo de uma vez.
Dá pra ajustar temperature ou top_p no GPT-6 Astra pra controlar a resposta?
Não. O GPT-6 Astra não aceita valores customizados de temperature, top_p nem logprobs. E se o teu fluxo usa tool calling, isso só funciona pela Responses API, então já vale planejar a integração em cima dela.
Quais níveis de reasoning.effort o GPT-6 Astra aceita?
O parâmetro reasoning.effort aceita low, medium, high, xhigh e max. O nível none não é suportado nesse modelo, ou seja, não tem como zerar o raciocínio pra sobrar mais espaço pro texto visível. Por isso o raciocínio sempre precisa entrar na conta do teu orçamento de max_output_tokens.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
Como testar o GPT-6 Astra no seu projeto antes de migrar (passo a passo)
Testar o GPT-6 Astra antes de migrar: monte de 10 a 20 tarefas reais do seu produto, compare com seu modelo atual e veja nota, tokens e custo lado a lado.
Como migrar seu projeto para o GPT-6 Astra sem quebrar o que já funciona: checklist antes de trocar o modelo
Migrar para o GPT-6 Astra sem quebrar o que já funciona: checklist com baseline, rota por vez, parâmetros revisados e rollback pronto antes de trocar o modelo.
reasoning.effort no GPT-6 Astra: qual nível usar em cada tipo de tarefa?
Reasoning.effort no GPT-6 Astra tem 5 níveis: low, medium, high, xhigh e max. Veja qual usar em cada tarefa, custo por token e volume de raciocínio.
