TutoriaisTutorial

Como usar a API do GPT-5.4 com 1 milhão de tokens de contexto

Beatriz Oliveira·Editora de Tutoriais & Prática
8 min de leitura

Ouvir conteudo

Ouca este artigo narrado por uma voz natural, ideal para quem prefere consumir conteudo em audio.

Terminal com código Python chamando a API do GPT-5.4 da OpenAI

TL;DR: , com , . Este tutorial mostra como autenticar, enviar requisições, controlar o nível de raciocínio e otimizar custos via cache de prompts. Os exemplos de código são em Python usando a biblioteca oficial da OpenAI. Preços variam conforme o provedor, então consulte a documentação oficial da OpenAI para valores atualizados.


Colar um milhão de tokens em uma janela de contexto parecia ficção científica há dois anos. Hoje é um parâmetro de API.

com capacidade de processar volumes de texto equivalentes a um romance completo, um repositório de código médio, ou centenas de transcrições de reuniões em uma única chamada. Isso muda o tipo de problema que você pode resolver com uma requisição. Em vez de quebrar documentos em chunks, você manda o documento inteiro. Em vez de orquestrar múltiplos agentes para cobrir contexto, um único modelo lê tudo de uma vez.

Mas contexto grande por si só não é mágica. Saber quando ativar raciocínio profundo, como estruturar mensagens para economizar tokens, e quando usar tool search faz diferença real no resultado e no custo. Este tutorial cobre tudo isso com código que você consegue rodar hoje.


Configurando o ambiente e a autenticação básica

Antes de qualquer coisa: você precisa de acesso à API da OpenAI com o modelo gpt-5.4 habilitado na sua conta. A biblioteca Python é a mesma que você já usa para outros modelos OpenAI, sem surpresas.

pip install openai

A autenticação segue o padrão do ecossistema OpenAI:

import openai

client = openai.OpenAI(api_key="SUA_CHAVE_AQUI")

response = client.chat.completions.create(
    ,
    messages=[
        {"role": "user", "content": "Explique a diferença entre supervised e unsupervised learning em duas frases."}
    ]
)

print(response.choices[0].message.content)

Se você usa um proxy ou gateway como OpenRouter, basta passar o base_url na inicialização do cliente:

client = openai.OpenAI(
    api_key="SUA_CHAVE_AQUI",
    base_url="https://openrouter.ai/api/v1"
)

O modelo aceita o parâmetro `` da mesma forma em ambos os casos.

Variáveis de ambiente: a forma certa de guardar credenciais

Nunca coloque sua chave de API diretamente no código. Use variáveis de ambiente:

import os
import openai

client = openai.OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))

No terminal, antes de rodar o script:

export OPENAI_API_KEY="sk-..."

Usando o contexto de 1 milhão de tokens na prática

A janela de 1 milhão de tokens de input (com 128K de output) é o recurso mais impactante do GPT-5.4 para aplicações de negócio. O que isso significa na prática:

Um exemplo direto: uma equipe jurídica que precisa analisar contratos extensos. Em vez de dividir um contrato de 400 páginas em partes e perder o fio entre seções, você manda o arquivo inteiro e pede ao modelo para identificar cláusulas de risco, inconsistências, e obrigações de cada parte.

def analisar_documento_longo(caminho_arquivo: str) -> str:
    with open(caminho_arquivo, "r", encoding="utf-8") as f:
        conteudo = f.read()

    response = client.chat.completions.create(
        model="gpt-5.4",
        messages=[
            {
                "role": "developer",
                "content": "Você é um assistente especializado em análise de documentos jurídicos. Seja preciso e aponte referências ao número da cláusula."
            },
            {
                "role": "user",
                "content": f"Analise o contrato abaixo e liste: (1) obrigações de cada parte, (2) cláusulas de penalidade, (3) pontos de risco.\n\n{conteudo}"
            }
        ]
    )

    return response.choices[0].message.content

resultado = analisar_documento_longo("contrato_fornecedor.txt")
print(resultado)

Uma ressalva importante sobre custo e contexto

Contexto grande tem custo proporcional. Mandar 800 mil tokens em cada chamada para uma tarefa que precisaria de 50 mil é desperdício direto de budget. Use o contexto grande quando o problema genuinamente exige leitura integral do documento. Para tarefas pontuais, recorte o trecho relevante.


Controlando o nível de raciocínio com o parâmetro reasoning

Esta é a funcionalidade que mais diferencia o GPT-5.4 de modelos anteriores para tarefas complexas.

response = client.chat.completions.create(
    model="gpt-5.4",
    ,
    messages=[
        {
            "role": "user",
            "content": "Revise este código Python e identifique race conditions e possíveis deadlocks:\n\n[seu código aqui]"
        }
    ]
)

O nível high é recomendado para análises de segurança de código, revisões de arquitetura, e qualquer tarefa onde um erro tem custo alto.

Para geração de rascunhos, sumarização simples, ou respostas rápidas de suporte, o nível low ou medium é suficiente e mais barato. Uma boa heurística: se você pagaria uma hora de trabalho de um especialista humano para revisar o output, vale usar high. Se é uma tarefa de rotina, low funciona.

Quando usar xhigh

O tempo de resposta aumenta, e o custo também. Reserve para situações onde a qualidade do raciocínio é não negociável.


Visão de alta resolução: analisando imagens com detalhe "original"

É relevante para blueprints técnicos, imagens médicas, dashboards financeiros, ou qualquer caso onde os detalhes finos importam.

import base64

def analisar_imagem_hd(caminho_imagem: str, pergunta: str) -> str:
    with open(caminho_imagem, "rb") as f:
        imagem_base64 = base64.b64encode(f.read()).decode()

    extensao = caminho_imagem.split(".")[-1].lower()
    mime_type = f"image/{extensao}" if extensao != "jpg" else "image/jpeg"

    response = client.chat.completions.create(
        model="gpt-5.4",
        messages=[
            {
                "role": "user",
                "content": [
                    {"type": "text", "text": pergunta},
                    {
                        "type": "image_url",
                        "image_url": {
                            "url": f"data:{mime_type};base64,{imagem_base64}",
                            "detail": "high"
                        }
                    }
                ]
            }
        ]
    )

    return response.choices[0].message.content

resultado = analisar_imagem_hd(
    "planta_eletrica.png",
    "Identifique os componentes desta planta elétrica e aponte qualquer inconsistência no circuito."
)
print(resultado)

Para imagens simples onde resolução completa não é crítica, o modo padrão ("detail": "auto") consome menos tokens e é mais rápido.


Tool search: reduzindo tokens em workflows com múltiplas APIs

Na prática, você registra suas ferramentas normalmente via o parâmetro tools, e o modelo decide quais acionar:

ferramentas = [
    {
        "type": "function",
        "function": {
            "name": "buscar_preco_produto",
            "description": "Busca o preço atual de um produto no estoque pelo SKU.",
            "parameters": {
                "type": "object",
                "properties": {
                    "sku": {"type": "string", "description": "Código SKU do produto"}
                },
                "required": ["sku"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "verificar_disponibilidade",
            "description": "Verifica se um produto está disponível em determinado CD.",
            "parameters": {
                "type": "object",
                "properties": {
                    "sku": {"type": "string"},
                    "centro_distribuicao": {"type": "string"}
                },
                "required": ["sku", "centro_distribuicao"]
            }
        }
    }
]

response = client.chat.completions.create(
    model="gpt-5.4",
    tools=ferramentas,
    tool_choice="auto",
    messages=[
        {"role": "user", "content": "Qual o preço do SKU-4821 e ele está disponível em SP?"}
    ]
)

if response.choices[0].message.tool_calls:
    for tool_call in response.choices[0].message.tool_calls:
        print(f"Ferramenta chamada: {tool_call.function.name}")
        print(f"Argumentos: {tool_call.function.arguments}")

O modelo pode chamar buscar_preco_produto e verificar_disponibilidade, cabendo ao seu código processar as chamadas de ferramenta retornadas.


Otimizando custos com cache de prompts

Para aplicações com alto volume de chamadas que reutilizam partes fixas do prompt (como instruções de sistema, documentos de referência, ou exemplos few-shot), o cache de prompts da OpenAI pode reduzir o custo de tokens repetidos em chamadas subsequentes. Consulte a documentação oficial da OpenAI para verificar quais modelos suportam esse recurso e as condições de ativação.

A estratégia é simples: coloque tudo que é fixo no início da mensagem de developer ou system, e o conteúdo variável no final.

instrucoes_fixas = """
Você é um assistente de suporte técnico para o produto X.
Regras:
1. Responda sempre em português.
2. Se não souber a resposta, diga explicitamente.
3. Cite o número do artigo da base de conhecimento quando disponível.

[Base de conhecimento: 50 páginas de documentação aqui...]
"""

def responder_ticket(pergunta_usuario: str) -> str:
    response = client.chat.completions.create(
        model="gpt-5.4",
        messages=[
            {"role": "developer", "content": instrucoes_fixas},
            {"role": "user", "content": pergunta_usuario}
        ]
    )
    return response.choices[0].message.content

Nas chamadas subsequentes com as mesmas instrucoes_fixas, a OpenAI reutiliza o cache, e você paga uma fração do preço pelos tokens de prefixo. Para aplicações de suporte ou análise com alto volume, a diferença no custo mensal é substancial.


Casos de uso onde o GPT-5.4 faz diferença real

Vale mencionar casos concretos para calibrar quando o upgrade para o GPT-5.4 justifica o custo frente a modelos menores.

Análise de código em repositórios grandes. Com 1 milhão de tokens de contexto, você passa o repositório inteiro (ou uma fração grande dele) para análise de segurança, identificação de dívida técnica, ou geração de documentação. Antes, isso exigia pipelines de chunking com perda de coerência entre arquivos.

Workflows de automação de processos.

Análise financeira e jurídica. A visão de alta resolução combinada com o contexto longo permite processar relatórios financeiros com gráficos e tabelas em imagem junto com o texto, sem perda de detalhe visual. Se você quiser ver como isso se encaixa em automação mais ampla, veja como automatizar tarefas repetitivas com ChatGPT em outros fluxos do negócio.


Conclusão

O GPT-5.4 não é só uma atualização incremental: a janela de 1 milhão de tokens muda a classe de problema que você consegue resolver com uma única chamada de API. Mas aproveitar isso bem exige escolhas deliberadas: quando usar raciocínio profundo, quando o contexto longo realmente se justifica, e como estruturar prompts para que o cache faça seu trabalho.

O ponto de partida prático é este: comece com reasoning={"effort": "medium"} para a maioria das tarefas, suba para high quando a qualidade for crítica, e monitore o uso de tokens desde o início para evitar surpresas na fatura. Cache de prompts e tool search são os dois mecanismos de otimização com maior retorno para aplicações em produção.

Para entender como o GPT-5.4 se encaixa em arquiteturas mais complexas com múltiplos agentes, veja também o nosso artigo sobre ferramentas de IA agêntica para empresas.

Continue lendo