PT ▾
Começar agora
por 1M de tokens de entrada
$0.15
Tokens de saída / 1M
$0.50
contexto de tokens
100,000
crédito de teste
$0.50
requisições por minuto
300

Substituição da API OpenAI: Checklist de Migração

Uma substituição da API OpenAI só funciona bem se você verificar três coisas antes: quais endpoints seu código chama, quais recursos ele depende e como o novo modelo se comporta com seus prompts. Este checklist cobre os três, com comandos que você pode executar hoje.

Última atualização

Um tubo de vidro sendo redirecionado entre duas válvulas ao lado de um painel de status com luzes acesas e apagadas

Resumo

  • Chat completions, respostas, streaming, tools e modo JSON funcionam com o SDK OpenAI padrão após uma alteração na base URL.
  • Os endpoints de embeddings, imagem, áudio e ajuste fino não estão disponíveis. Mantenha-os no provedor atual.
  • O modelo é diferente, então teste prompts antes de fazer a troca. Mantenha um indicador para reverter.
  • O faturamento é pré-pago e por token: $0,15 por 1M de entrada e $0,50 por 1M de saída.

Passo 1: inventariar o que seu código chama

Antes de alterar qualquer coisa, liste quais recursos da OpenAI você realmente usa. A maioria dos projetos usa menos do que imagina, e a lista decide se esta troca é uma tarefa de cinco minutos ou parcial. Execute estes comandos na raiz do projeto:

# New values you will point the project at:
export OPENAI_BASE_URL="https://api.alternativeapiopenai.com/v1"
export OPENAI_API_KEY="YOUR_API_KEY"
export MODEL="uncensored"

# What does the code call today?
grep -rnE "embeddings|images\.|audio\.|fine_tuning|moderations|assistants|batches" --include="*.py" --include="*.js" --include="*.ts" .
grep -rnE "model *[=:] *['\"]" --include="*.py" --include="*.js" --include="*.ts" .

O primeiro grep encontra endpoints que esta API não oferece. O segundo lista todos os nomes de modelo codificados, que você precisará alterar. Coloque os resultados em uma tabela curta com uma linha por recurso: usado, não usado e o que fazer a respeito.

Passo 2: comparar com o que é suportado

Recurso OpenAIAquiNotas
Completions de chatSimPOST /v1/chat/completions
API de RespostasSimPOST /v1/responses
Listar modelosSimGET /v1/models retorna uncensored
StreamingSimSSE, com uso no final
Chamada de funçõesSimtools, tool_choice, tool_calls em streaming, resultados com role: "tool"
Modo JSONSimresponse_format: {"type":"json_object"}
ParâmetrosSimtemperature, top_p, stop, seed, penalidades
EmbeddingsNãoNão oferecido
Geração de imagem, áudio, vídeoNãoApenas texto
Fine-tuningNãoNão oferecido

Qualquer coisa que não esteja no lado suportado desta tabela deve ser tratada como indisponível até que você confirme na documentação. Isso inclui saída com esquema restrito: o modo JSON faz o modelo retornar JSON válido, mas não impõe seu próprio esquema, então mantenha seu código de validação. Entradas de imagem em uma mensagem de chat também não estão listadas, então planeje-se para usar apenas prompts de texto.

O modelo é um único modelo de pesos abertos executado por um provedor independente. Não é o modelo da OpenAI nem uma API oficial de nenhum fornecedor, e não faz roteamento entre fornecedores. Espere estilo diferente, pontos fortes diferentes e modos de falha diferentes.

Passo 3: fazer a troca

Com o SDK oficial Python, três valores mudam:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.alternativeapiopenai.com/v1",  # was the default OpenAI URL
    api_key="YOUR_API_KEY",                               # was your old key
)

resp = client.chat.completions.create(
    model="uncensored",                                   # was your old model name
    messages=[{"role": "user", "content": "Give me three names for a coffee shop."}],
)
print(resp.choices[0].message.content)

Melhor ainda, mantenha a Base URL, a chave e o nome do modelo na configuração para que a mesma compilação possa apontar para qualquer provedor. Um padrão simples são três variáveis de ambiente: LLM_BASE_URL, LLM_API_KEY e LLM_MODEL. Assim, uma reversão significa alterar três valores e reiniciar, sem enviar uma nova versão.

Se seu código usa a API de Respostas, os mesmos três valores se aplicam. Para frameworks como LangChain ou LlamaIndex, procure o conector compatível com OpenAI e passe a mesma base URL e nome do modelo.

Passo 4: testar antes da produção

O risco em qualquer troca de modelo é o comportamento, não a conexão. Teste estes na ordem:

  1. Conexão. Uma requisição com curl. Se retornar uma resposta, a chave e a URL estão corretas.
  2. Seus prompts reais. Reproduza pelo menos vinte prompts de produção e analise a saída. Verifique tom, comprimento e aderência às instruções.
  3. Chamadas de ferramentas. Execute cada uma de suas ferramentas e verifique os argumentos que o modelo produz. Confirme que seu loop lida com tool_calls em uma resposta em streaming.
  4. Saída JSON. Execute cem chamadas no modo JSON e conte quantas falham no seu parser ou esquema.
  5. Entradas longas. A janela de contexto é de 100.000 tokens para prompt mais resposta. Teste um prompt grande uma vez para saber quanto tempo leva.
  6. Limites. Uma chave completa permite 8 requisições simultâneas e 300 por minuto. Faça load-test no seu pico real.

As contagens de tokens diferirão

Se seu código estima tokens com uma biblioteca de tokenizer feita para outro modelo, trate o resultado como aproximado. Use o objeto usage em cada resposta para faturamento e orçamento, e deixe uma margem de segurança ao cortar o histórico para caber na janela de 100.000 tokens. Definir max_tokens é opcional aqui, mas um limite sensato impede que uma resposta descontrolada gaste mais do que você planejou.

Como os erros se parecem

Ao ultrapassar o limite, a API retorna HTTP 429 com o código rate_limited (requisições por minuto) ou concurrency (muitas de uma vez). Uma sobrecarga temporária também retorna 429, com o cabeçalho Retry-After: 5. Uma solicitação em streaming mantém sua cota de concorrência até o fim do stream, então clientes lentos contam contra você. Solicitações falhas ou recusadas não são cobradas.

Passo 5: verificar o custo

O preço é $0,15 por 1M de tokens de input e $0,50 por 1M de tokens de output, pagos a partir de crédito pré-pago. Para comparar com sua conta atual, use suas próprias contagens de tokens do campo usage e aplique a fórmula: custo = input_tokens x 0,15 / 1.000.000 + output_tokens x 0,50 / 1.000.000. Para outros provedores, verifique seus preços atuais e aplique as mesmas contagens.

Um exemplo prático: uma ferramenta de suporte lida com 30.000 requisições por mês com 1.200 tokens de input e 250 de output cada. Input é 36M tokens, custando $5,40. Output é 7,5M tokens, custando $3,75. O total mensal é $9,15. Se a mesma carga preencher a janela de contexto em vez disso, com 100.000 tokens de input, cada requisição custa $0,015 apenas em input, então o tamanho do prompt é o número a observar.

A página de preços lista valores de recarregar. Eles variam de $20 a $500, com +5% de $50, +10% de $100 e +15% de $200, pagos apenas em cripto (USDT no TRC20 ou USDC na Base). O crédito nunca expira e não há assinatura. O guia relacionado sobre preços de API para modelos uncensored explica a estrutura de custos em mais profundidade.

Passo 6: lançar e manter uma via de retorno

Envie uma pequena parte do tráfego para o novo endpoint primeiro. Registre o ID da requisição do cabeçalho X-Request-Id para rastrear uma resposta ruim, e registre X-Balance-USD após as chamadas para que o crédito nunca acabe sem aviso. Alerta quando o saldo cair abaixo de alguns dias de gasto.

Quando o tráfego sombra parecer bom, aumente a parte em etapas e mantenha a chave do provedor antigo válida por uma semana. Para qualquer coisa envolvendo conteúdo adulto, o modelo é destinado para uso adulto legal, e conteúdo sexual envolvendo menores de idade é sempre recusado. Prompts não são usados para treinamento.

Contas novas podem solicitar $0,50 de crédito de teste com um clique na página da chave de API, válido por 7 dias, o suficiente para executar toda a lista de verificação em uma amostra do seu tráfego.

Perguntas frequentes

Meu código existente do SDK OpenAI funcionará?

Para chat completions e respostas, sim. Altere a Base URL, a chave e o nome do modelo. Chamadas para embeddings, imagens, áudio ou fine-tuning não funcionarão.

A qualidade da resposta é a mesma dos modelos da OpenAI?

Não, é um modelo de pesos abertos diferente. Teste seus próprios prompts em vez de assumir paridade em qualquer direção.

Como reverter se algo quebrar?

Mantenha a base URL, a chave e o modelo na configuração e mantenha a chave do seu provedor antigo ativa. Voltar atrás é apenas uma alteração de configuração.

Suporta chamada de funções?

Sim. Use ferramentas e tool_choice, e retorne os resultados como mensagens com role: tool. tool_calls em streaming são suportados.

A geração de chave requer apenas um formulário

Entre, copie sua chave e atualize sua Base URL. Essa é toda a configuração necessária.