Gemini 4 Argon, 1M de Tokens de Saída: O Que Uma Resposta Milionária Faz na Sua Pilha de APIs

Os 1 milhão de tokens de saída do Gemini 4 Argon são um limite de saída, não uma janela de contexto. O custo de uma resposta no limite, além de streaming, tempos limite e outras restrições.

Ashley Goolam

Ashley Goolam

2 outubro 2026

Gemini 4 Argon, 1M de Tokens de Saída: O Que Uma Resposta Milionária Faz na Sua Pilha de APIs

Apidog para empresas

Implantação local

SSO & RBAC

Conforme SOC 2

Explorar Apidog Enterprise

O número principal do Gemini 4 Argon, 1M de tokens, é seu limite de saída, não sua janela de contexto. O Google afirma que uma única resposta do Argon pode atingir 1 milhão de tokens, aproximadamente 16 vezes o limite anterior de 64K, e não publicou a janela de entrada do Argon. Também não há nada a chamar ainda: o Argon está disponível hoje apenas para defensores do Fairwind Program, com clientes de API pagantes a seguir, assim que o Google abrir o acesso (consulte o guia de data de lançamento e acesso).

Uma resposta tão longa quebra três premissas nas quais a maioria das pilhas de API se baseia: uma chamada termina em segundos, o corpo cabe na memória e uma solicitação tem um custo pequeno e previsível. Este guia abrange o custo de uma resposta máxima, streaming, timeouts, limites de saída, armazenamento e como testar tudo isso no Apidog antes que o acesso chegue. Para uma visão geral do modelo, consulte o que é o Gemini 4 Argon; para formatos de solicitação, consulte o guia da API Gemini 4 Argon.

1M de tokens de saída não é uma janela de contexto de 1M

Várias páginas que classificam o Argon descrevem o número de 1M como uma janela de contexto, e uma manchete o chama de “janela de contexto 16 vezes maior”. Isso está errado. A publicação de lançamento do Google afirma que ele expandiu “o limite de tokens de saída do modelo para um recorde da indústria de 1M de tokens”. Esse 64K corresponde ao limite de saída de 65.536 tokens no Gemini 3.1 Pro Preview, o modelo Pro top anterior do Google.

A entrada é um número separado que o Google não forneceu. Sua avaliação de contexto longo, descrita na metodologia de avaliação, usou prompts entre 256K e 1M de tokens. Isso é um subconjunto de benchmark, não uma especificação. Há uma ressalva no lado da saída também: a Vals AI lista uma saída máxima de 262K para a configuração do Argon que testou. O Google diz que o limite do modelo é de 1M; pelo menos um avaliador terceirizado viu um limite inferior no endpoint que usou.

Modelo Saída máxima por resposta Janela de entrada ou contexto
Gemini 4 Argon 1M (limite declarado pelo Google) Não publicado
Gemini 3.1 Pro Preview 65.536 1.048.576
Gemini 3.8 Flash 65.536 1.048.576
GPT-6 Astra 128.000 1.050.000 (922K entrada máxima)
Claude Opus 5.5 128K (300K no Batch com um cabeçalho beta) 1M

Todos os concorrentes limitam a saída síncrona a 128K, então o limite declarado do Argon é cerca de 8 vezes o deles. A razão do Google é a profundidade do raciocínio: com margem, o modelo pode “gerar centenas de milhares de tokens em uma única trajetória” e resolver problemas difíceis em uma única passagem. Para ver como outros fornecedores lidam com execuções longas, consulte as tarefas de 18 horas do Claude Opus 5.5 e o guia da API GPT-6 Astra.

Quanto custa uma resposta com limite máximo

Preço máximo primeiro. A saída é cobrada a $10 por 1M de tokens durante o período de introdução do Argon e $20 depois, então uma resposta de comprimento total custa:

A entrada vem por cima. Um prompt de 200.000 tokens adiciona 200.000 x $2/1M = $0,40 nas taxas de introdução ou $0,80 nas taxas padrão, então uma única chamada máxima custa $10,40 ou $20,80. Um trabalho noturno que dispara 100 dessas chamadas custa $1.040 nas taxas de introdução.

O pensamento torna isso mais difícil de ver. Nos modelos Gemini atuais, os tokens de pensamento são cobrados como saída; o Google não disse se o Argon segue essa regra ou se o pensamento conta para o limite de 1M. De qualquer forma, uma resposta visível curta ainda pode gerar uma grande cobrança de saída. O guia de preços do Gemini 4 Argon apresenta mais cenários, incluindo entrada em cache com 95% de desconto.

Por que o streaming é obrigatório

Uma chamada sem streaming não retorna nada até que toda a resposta seja concluída. Com centenas de milhares de tokens, essa é uma conexão silenciosa longa, e os timeouts de inatividade em sua pilha podem fechá-la antes que o primeiro byte chegue.

Transmita em vez disso. Em generateContent, troque o método por :streamGenerateContent?alt=sse e o Google envia eventos server-sent, um pedaço de candidatos parcial por evento. Leia cada evento à medida que ele chega e grave-o; não colete o corpo primeiro. Isso funciona hoje no Gemini 3.8 Flash, com o modelo em uma variável porque o Google não publicou o ID do modelo Argon (a configuração está em nosso guia da API Gemini 3.8 Flash):

import json, os, requests

MODEL = os.environ.get("GEMINI_MODEL", "gemini-3.8-flash")
URL = ("https://generativelanguage.googleapis.com/v1beta/models/"
       f"{MODEL}:streamGenerateContent?alt=sse")
body = {
    "contents": [{"parts": [{"text": "Write a test plan for every endpoint in a payments API."}]}],
    "generationConfig": {"maxOutputTokens": 60000},
}
usage = None
with requests.post(URL, json=body, stream=True, timeout=(10, 120),
                   headers={"x-goog-api-key": os.environ["GEMINI_API_KEY"]}) as r, \
        open("response.txt", "a", encoding="utf-8") as out:
    r.raise_for_status()
    for line in r.iter_lines(decode_unicode=True):
        if not line or not line.startswith("data:"):
            continue
        event = json.loads(line[5:])
        for cand in event.get("candidates", []):
            for part in cand.get("content", {}).get("parts", []):
                out.write(part.get("text", ""))
        out.flush()
        usage = event.get("usageMetadata", usage)
print(usage)

timeout=(10, 120) define um timeout de conexão de 10 segundos e um timeout de leitura de 120 segundos. Em requests, o timeout de leitura é a maior lacuna entre bytes, não a duração total, então um stream que continua enviando pode ser executado pelo tempo que for necessário. Cada pedaço vai para o disco à medida que chega. No 3.8 Flash, cada evento carrega um usageMetadata contínuo, então o último fornece as contagens finais de tokens para registrar e cobrar.

Timeouts em cada salto

Seu cliente é um salto. Um stream longo também cruza um proxy reverso, um gateway de API, um balanceador de carga e talvez um tempo de execução sem servidor, e qualquer um deles pode encerrar a resposta precocemente:

Salto O que verificar Sintoma quando está errado
Cliente HTTP Timeout de leitura ou inatividade, mais qualquer timeout de solicitação total Exceções no meio do stream apenas em respostas longas
Proxy reverso Timeout de leitura e buffer de resposta para text/event-stream Eventos chegam em rajadas, ou o stream é interrompido
Gateway de API Duração máxima da solicitação Solicitações falham no mesmo tempo decorrido em cada execução
Balanceador de carga Timeout de inatividade Cai durante longas pausas antes do primeiro evento
Função sem servidor Tempo máximo de execução A função termina enquanto o modelo ainda está escrevendo

Observe um corte fixo. Se respostas longas sempre falham no mesmo tempo decorrido, algum salto tem um limite de duração rígido que o streaming não pode corrigir, e esse trabalho precisa sair do caminho da solicitação.

Execute trabalhos longos em segundo plano

Para os trabalhos mais longos, retire o trabalho de uma conexão ativa. A API de Interações suporta execução em segundo plano para tarefas de longa duração usando background=true. As execuções em segundo plano dependem de interações armazenadas: a documentação diz que store=false é incompatível com a execução em segundo plano, então mantenha o armazenamento ativado para essas solicitações. Para recuperar uma interação em segundo plano concluída, siga a documentação do Google; não tente adivinhar os endpoints de polling. Como o Google afirma que novos modelos são lançados na API de Interações, planeje que os trabalhos longos do Argon sejam executados lá.

Limite a saída intencionalmente

O limite de 1M é um teto, não um objetivo. Em generateContent, generationConfig.maxOutputTokens limita cada resposta; o exemplo de streaming define 60.000. No 3.8 Flash, o pensamento conta para esse limite: nossa execução de teste limitada a 2.000 retornou 1.340 tokens de pensamento e 656 visíveis. Para a API de Interações, confirme o campo de limite de saída na documentação do Google antes de depender dele. Então escolha o limite com base no custo que você aceitará por chamada:

Limite de saída Custo de saída no pior caso, padrão ($20/1M) Intro ($10/1M)
64.000 64.000 x $20/1M = $1,28 $0,64
128.000 $2,56 $1,28
500.000 $10,00 $5,00
1.000.000 $20,00 $10,00

Uma resposta que atinge o limite para cedo, então trate-a como incompleta. Verifique o finishReason do evento final: MAX_TOKENS significa que o limite o interrompeu. Em seguida, continue em uma nova rodada ou aumente o limite para esse trabalho específico.

Armazene e analise grandes saídas sem buffer

Um milhão de tokens são megabytes de texto por resposta. Algumas regras impedem que isso derrube um worker:

Teste no Apidog antes que o acesso seja liberado

Você pode ensaiar tudo isso contra um substituto. Baixe o Apidog e faça três verificações.

Observe o stream. Envie a solicitação de streaming contra o 3.8 Flash com GEMINI_API_KEY e GEMINI_MODEL como variáveis de ambiente. O Apidog analisa as respostas text/event-stream e mostra cada evento em sua visualização de linha do tempo à medida que chega, para que você possa ver os tamanhos dos pedaços, as lacunas e o usageMetadata final.

Transmita uma resposta falsa muito mais longa. A saída real do 3.8 Flash atinge no máximo 65.536 tokens, então execute um mock local que transmita muito mais no mesmo formato de evento:

# long_stream_mock.py: SSE em formato Gemini para testes de parser e timeout (dados falsos)
import json, time
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer

EVENTS, DELAY, CHUNK = 20000, 0.005, "lorem ipsum " * 40

class Handler(BaseHTTPRequestHandler):
    def do_POST(self):
        self.rfile.read(int(self.headers.get("Content-Length", 0)))
        self.send_response(200)
        self.send_header("Content-Type", "text/event-stream")
        self.end_headers()
        for i in range(EVENTS):
            event = {"candidates": [{"content": {"parts": [{"text": CHUNK}]}}]}
            if i == EVENTS - 1:  # contagens falsas dimensionadas como uma resposta quase máxima
                event["usageMetadata"] = {"promptTokenCount": 1200,
                    "candidatesTokenCount": 950000, "thoughtsTokenCount": 40000,
                    "totalTokenCount": 991200}
            self.wfile.write(f"data: {json.dumps(event)}\n\n".encode())
            self.wfile.flush()
            time.sleep(DELAY)

ThreadingHTTPServer(("127.0.0.1", 8787), Handler).serve_forever()

Aponte a URL base de um ambiente “mock” para http://127.0.0.1:8787 e envie a mesma solicitação de streaming através dele. O stream é executado por cerca de dois minutos (128 segundos em nosso teste) e carrega 9,6 milhões de caracteres de texto, o suficiente para expor um parser com buffer, um proxy que retém eventos ou um timeout definido muito curto.

Afirme sobre as contagens de tokens. Em uma solicitação generateContent sem streaming, afirme que candidatesTokenCount mais thoughtsTokenCount em usageMetadata permanece igual ou abaixo do seu limite e que o custo calculado permanece abaixo do seu teto nos preços do Argon. O guia da API Argon possui um script de custo pronto.

Perguntas Frequentes

Seu próximo passo

Adicione streaming e um limite de saída ao seu cliente Gemini agora, no 3.8 Flash, e execute-o contra o stream mock longo até que nada em sua pilha o interrompa. Quando o ID do Argon for lançado, altere GEMINI_MODEL e execute novamente os mesmos testes no Apidog.

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs