Escolha Auto, TokenLab Verified ou Official para cada solicitação, com preços exibidos antecipadamente.Veja as novidades

Migre da OpenAI para a TokenLab em 5 Minutos

·19 de setembro de 2026·13 min de leitura·Atualizado 2 de outubro de 2026·3140 visualizações
#tutorial#migração#OpenAI#primeiros passos
Migre da OpenAI para a TokenLab em 5 Minutos

A URL base é a parte fácil de deixar um provedor; os caminhos de falha são onde as migrações dão errado. Para migrar da OpenAI para a TokenLab, você altera dois valores no seu cliente SDK da OpenAI: base_url e api_key. O restante deste guia cobre o que confirmar em torno dessa mudança. Isso significa o ID do modelo que você envia, seu preço atual, streaming, chamadas de ferramentas, tratamento de erros, timeouts e faturamento. Os fatos abaixo vêm da documentação da TokenLab e da API de modelo ao vivo, cada um com sua data de observação.

Principais Pontos

  • A mudança principal consiste em dois valores: a URL base da TokenLab https://api.tokenlab.sh/v1 e uma chave de API da TokenLab (elas começam com sk-).
  • A TokenLab documenta o suporte ao SDK da OpenAI para Chat Completions e Responses. Parâmetros opcionais, opções de ferramentas e campos exclusivos de Responses ainda dependem do modelo selecionado.
  • Verifique o preço do seu modelo na API ao vivo antes de decidir qualquer coisa. Em 03/10/2026, o gpt-5.5 custava US$ 1,50 de entrada e US$ 9,00 de saída por 1 milhão de tokens.
  • Execute o checklist no final antes de mover o tráfego de produção. A maioria das surpresas reside no tratamento de erros, timeouts e faturamento, não no caminho feliz.

A Mudança de Dois Valores para Migrar da OpenAI para a TokenLab

Comece com a chave. De acordo com o Quickstart (observado em 03/10/2026), você cria uma conta, cria uma chave de API e salva o valor completo imediatamente. Ele é exibido apenas uma vez, e o prefixo na lista de chaves não pode autenticar solicitações. Verifique seu saldo antes da primeira chamada, pois as solicitações são cobradas pelo preço atual do modelo selecionado.

Em seguida, altere o cliente. O guia de migração (observado em 03/10/2026) descreve a receita como: definir base_url / baseURL para https://api.tokenlab.sh/v1, substituir a chave e escolher um ID de modelo em GET /v1/models.

Por exemplo, imagine um serviço que tenha a string gpt-5.5 em sua configuração. Após a mudança dos dois valores, essa mesma string é uma solicitação válida, mas ainda confirmaríamos o ID primeiro. GET /v1/models e GET /v1/models/{model} são endpoints de descoberta públicos e funcionam sem uma chave.

Python

import os
from openai import OpenAI

# Antes: client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
client = OpenAI(
    api_key=os.environ["TOKENLAB_API_KEY"],
    base_url="https://api.tokenlab.sh/v1",
    timeout=30.0,
    max_retries=0,
)

response = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Hello, world!"}],
)
print(response.choices[0].message.content)

Node.js

import OpenAI from 'openai';

// Antes: new OpenAI({ apiKey: process.env.OPENAI_API_KEY })
const client = new OpenAI({
  apiKey: process.env.TOKENLAB_API_KEY,
  baseURL: 'https://api.tokenlab.sh/v1',
  timeout: 30_000,
  maxRetries: 0,
});

const completion = await client.chat.completions.create({
  model: 'gpt-5.5',
  messages: [{ role: 'user', content: 'Hello' }],
});
console.log(completion.choices[0].message.content);

cURL

curl https://api.tokenlab.sh/v1/chat/completions \
  -H "Authorization: Bearer $TOKENLAB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-5.5","messages":[{"role":"user","content":"Say hello"}]}'

As configurações de timeout e retry nos dois primeiros exemplos espelham os exemplos do Quickstart (observado em 03/10/2026), que usam um timeout de 30 segundos e zero retries no SDK. Mantemos os retries em zero durante os testes para que uma solicitação com falha seja visível em vez de ser tentada novamente silenciosamente.

Passe a URL base explicitamente na configuração do cliente. O guia de SDK (observado em 03/10/2026) recomenda isso em vez de depender de aliases de variáveis de ambiente mais antigos. Mantenha a chave no servidor e em um gerenciador de segredos, nunca no código do lado do cliente.

Escolha o ID do Modelo e Leia Seu Preço

Uma migração não deve presumir um ID de modelo ou um preço. Ambos residem na API de modelo. Lemos https://api.tokenlab.sh/v1/models/gpt-5.5 e https://api.tokenlab.sh/v1/models/laguna-s-2.1 em 03/10/2026. O preço para ambos foi atualizado pela última vez em 02/10/2026T16:53:30.068Z.

Campo gpt-5.5 laguna-s-2.1
Estágio do ciclo de vida active active
Tokens máx. de entrada / saída 1.000.000 / 128.000 1.048.576 / 131.072
Formatos de solicitação aceitos openai_chat_completions, openai_responses openai_chat_completions
Capacidades listadas coding, json-mode, prompt-cache, reasoning, tool-use, vision tool-use
Entrada, USD por 1M tokens 1.5 0.1
Saída, USD por 1M tokens 9 0.2
Leitura de cache, USD por 1M tokens 0.15 0.01

Fontes: gpt-5.5 e laguna-s-2.1, ambos observados em 03/10/2026.

Para transformar essas taxas em um número, aqui está uma estimativa com o cálculo demonstrado. Considere um trabalho com 1 milhão de tokens de entrada e 100 mil tokens de saída, sem acertos de cache.

  • gpt-5.5: 1 × US$ 1,50 + 0,1 × US$ 9,00 = US$ 1,50 + US$ 0,90 = US$ 2,40.
  • laguna-s-2.1: 1 × US$ 0,10 + 0,1 × US$ 0,20 = US$ 0,10 + US$ 0,02 = US$ 0,12.

Estas são estimativas baseadas nas taxas por token listadas. Sua cobrança final é o registro de Uso. A tokenização difere por modelo, portanto, o mesmo texto produz contagens de tokens diferentes em modelos diferentes.

Não reivindicamos uma economia aqui. Para comparar com o que você paga hoje, coloque as taxas da TokenLab ao lado da sua própria fatura da OpenAI, ou da página de preços da OpenAI, no dia em que você mudar. Os preços mudam, e o guia de faturamento (observado em 03/10/2026) diz para não codificar rigidamente uma tabela de preços copiada. Ele aponta para GET /v1/models/:model/pricing para valores atuais.

Outros IDs de modelo seguem o mesmo padrão. Os exemplos da documentação usam gpt-5.6-terra e gpt-5.6-luna para Chat Completions, e claude-sonnet-5 e gemini-3.5-flash em suas próprias rotas. Leia os formatos aceitos de cada modelo antes de direcionar o tráfego para ele. Para comparações mais amplas, veja o diretório de modelos, a comparação OpenRouter vs TokenLab e os rankings de modelos. Equipes de imagem e vídeo podem começar com a melhor API de modelos de imagem IA 2026 e melhor API de modelos de vídeo IA 2026. Para tarefas de código, veja os melhores modelos de IA para codificação.

O que Verificar a Seguir ao Migrar da OpenAI para a TokenLab

A TokenLab documenta o SDK da OpenAI como funcionando com Chat Completions e Responses. Isso é compatibilidade com o formato de solicitação e resposta, não uma promessa de que todo modelo se comporte da mesma forma. O guia de formatos de API (observado em 03/10/2026) diz que parâmetros opcionais dependem do modelo. Ele também diz que um modelo não aceita necessariamente todos os quatro formatos de API, e tokenlab.accepted_request_formats mostra quais ele aceita. Trate cada área abaixo como algo a ser testado com seu tráfego real.

Streaming

stream: true envia deltas de mensagens parciais como eventos enviados pelo servidor (SSE). Defina stream_options com include_usage: true para receber o uso de tokens em partes de stream, conforme documentado na referência de Create Chat Completion (observado em 03/10/2026).

stream = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Count to five."}],
    stream=True,
    stream_options={"include_usage": True},
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="")

Dois comportamentos para planejar. Se um stream for interrompido após a chegada da saída, não o trate como uma resposta completa. O guia de tratamento de erros (observado em 03/10/2026) alerta que repeti-lo pode produzir uma saída diferente ou uma segunda cobrança. E o streaming pode terminar antes do faturamento, portanto, o ID de faturamento pode estar ausente.

Chamadas de ferramentas

A referência de Chat Completions lista tools, tool_choice e parallel_tool_calls. Ela diz que chamadas paralelas funcionam "quando suportadas pelo modelo selecionado". A chamada de função é documentada como "suportada pelo modelo selecionado", então verifique a lista de capacidades. Na tabela acima, tanto gpt-5.5 quanto laguna-s-2.1 listam tool-use, mas apenas gpt-5.5 lista json-mode e vision. Envie seus esquemas de ferramentas reais, não um exemplo de brinquedo, e verifique se os argumentos retornados são analisados corretamente.

Se você planeja chamar modelos Claude, observe a regra do guia de migração. Chamadas de ferramentas Claude, blocos de pensamento e campos de mensagem Anthropic pertencem a /v1/messages, e Chat Completions não os garante.

Formatos de erro

Chat Completions e Responses retornam um objeto error no estilo OpenAI. De acordo com o guia de tratamento de erros, apenas message e type estão sempre presentes. Campos como code, param, retryable e retry_after aparecem quando relevantes. Ramifique com base no status HTTP e no code, não no texto da mensagem, e faça com que seu analisador tolere campos ausentes. Anthropic Messages e Gemini mantêm seus próprios formatos de erro, portanto, um analisador não cobrirá todas as rotas.

Status Código O que significa
401 invalid_api_key Chave ausente, inválida, inativa ou revogada
401 expired_api_key A chave expirou
402 insufficient_balance O saldo da conta não pode cobrir a solicitação
402 quota_exceeded O limite de uso da própria chave foi atingido
403 model_not_allowed Esta chave não pode usar o modelo solicitado
429 rate_limit_exceeded Muitas solicitações; aguarde pelo Retry-After

Fontes: Autenticação e tratamento de erros, observados em 03/10/2026.

Esta tabela corrige uma suposição comum. Um saldo vazio é um 402, não um 401. Se o seu código atual trata todo 4xx como uma chave ruim, atualize-o.

Timeouts e retries

O guia de migração diz que o código existente de retry, timeout e streaming geralmente pode permanecer. Revise-o em relação às regras de retry documentadas.

  • Não repita respostas 400, 401, 402, 403, 404 ou 413 inalteradas.
  • Tente novamente 429 após o atraso fornecido pelo servidor.
  • Tente novamente 500–504 apenas quando retryable for true, e respeite retry_after.
  • Um 503 all_channels_failed pode retornar com retryable: false. Nesse caso, a operação não tem oferta na camada de entrega selecionada, portanto, repeti-la não ajudará.

Salve o ID da Solicitação dos cabeçalhos de resposta com o modelo e seu próprio ID de trabalho. É o que você precisa para uma investigação.

Faturamento

Um saldo funciona em todos os modelos, sem assinatura ou gasto mínimo, de acordo com o guia de faturamento. Cada solicitação concluída é cobrada uma vez, pela opção de entrega que a produziu. As opções são TokenLab Verified, Official e Auto, e Auto tenta Verified primeiro, depois Official. Defina um limite de gastos em cada chave de API se quiser uma parada rígida. Quando o limite é atingido, as solicitações com essa chave retornam 402.

Respostas compatíveis com OpenAI sem streaming incluem billing_transaction_id quando o faturamento termina antes que a resposta seja enviada. Ele também pode aparecer no cabeçalho X-Billing-Transaction-ID. Armazene-o e reconcilie com a página de Uso em vez de sua própria matemática de tokens.

Checklist de Verificação Após Migrar da OpenAI para a TokenLab

Execute estes em ordem contra uma chave de staging antes que o tráfego de produção se mova. Cada linha rastreia um comportamento documentado acima.

Passo O que executar O que você deve ver
1. Descoberta de modelo GET /v1/models/gpt-5.5 (sem necessidade de chave) Ciclo de vida active e os formatos aceitos que você planeja usar
2. Solicitação autenticada O exemplo Python ou cURL acima Uma resposta não vazia; a solicitação aparece na visualização de Solicitações com modelo, status e uso
3. Campos de uso Ler usage em uma resposta sem streaming prompt_tokens, completion_tokens, total_tokens
4. Streaming stream: true com include_usage: true Partes SSE, depois uso; um stream interrompido é tratado como incompleto
5. Chamadas de ferramentas Suas tools e tool_choice reais Argumentos analisados e correspondentes ao seu esquema
6. Vision ou modo JSON Apenas se o modelo listar vision ou json-mode Saída esperada; pule o teste se a capacidade não estiver listada
7. Chave ruim Solicitação com uma chave excluída ou errada 401 invalid_api_key
8. Sem saldo ou limite de chave Use uma chave com limite baixo ou um workspace vazio 402 insufficient_balance ou quota_exceeded
9. Restrição de modelo Restrinja a lista de modelos de uma chave, depois solicite outro modelo 403 model_not_allowed
10. Timeout e retry Force um timeout em staging Seu código tenta novamente apenas conforme retryable e retry_after
11. Faturamento Compare billing_transaction_id e Uso com sua estimativa A cobrança corresponde ao preço atual do modelo e aos tokens registrados

Após a tabela passar, altere sua configuração de produção e implante. Mantenha a chave antiga da OpenAI ativa até que o Uso confirme que o novo caminho está estável.

Perguntas Frequentes

Preciso alterar meus nomes de modelo quando mudar da OpenAI?

Não necessariamente, mas confirme cada um. Os IDs de modelo da TokenLab são strings exatas, então verifique-os com GET /v1/models ou GET /v1/models/{model}. Em 03/10/2026, a API ao vivo listou gpt-5.5 como active. Se uma solicitação retornar model_not_found, o ID é desconhecido ou indisponível. Leia a lista de modelos e use um ID atual.

O streaming e as chamadas de ferramentas se comportarão exatamente como a API da OpenAI?

A TokenLab documenta o streaming através de SSE e a chamada de função através do formato de solicitação compatível com OpenAI. A documentação também diz que as opções suportadas dependem do modelo selecionado. Portanto, tratamos o resultado como compatível, não idêntico. Teste o streaming, tools, tool_choice e qualquer response_format que você use com o modelo específico que planeja executar.

Qual código de status recebo quando meu saldo acaba?

Você recebe HTTP 402 com o código insufficient_balance. Uma chave que atingiu seu próprio limite de gastos também retorna 402, com quota_exceeded. Uma chave ausente, inválida ou revogada retorna 401. Não tente novamente nenhum deles inalterado. Adicione saldo, aumente o limite da chave ou substitua a chave.

Posso chamar modelos Claude ou Gemini do mesmo cliente OpenAI?

O catálogo de modelos lista claude-sonnet-5 e gemini-3.5-flash com openai_chat_completions entre seus formatos de solicitação. O chat básico pode, portanto, passar pelo mesmo cliente. Campos específicos do Claude, como blocos de pensamento e uso de ferramentas Claude, pertencem a /v1/messages. Campos nativos do Gemini permanecem na rota /v1beta. Mantenha um formato de API por conversa.

Comece a Construir na TokenLab

Crie uma chave em TokenLab, defina a URL base para https://api.tokenlab.sh/v1 e execute a solicitação do Quickstart antes de tocar na produção.

Fontes

Preço observado em 2026-10-03

← Voltar ao blog
Compartilhar:

Modelos relacionados

Modelos lançados recentemente

Crie com os modelos deste guia

Compare preços, teste rotas e transforme a pesquisa em uma chamada de API funcional.