Guias de migraçãoVindo do SDKs diretos da OpenAI e da Anthropic
De chamadas diretas ao SDK a um único plano de controle
A maioria das equipes começa chamando a OpenAI ou a Anthropic com o SDK do próprio fornecedor e uma chave em uma variável de ambiente. Isso funciona até haver vários serviços, várias chaves e uma fatura mensal que ninguém consegue atribuir. Esta página é a alteração que coloca o INFRO na frente dessas chamadas sem mudar de SDK, de conta no provedor ou de contrato.
Seu próprio código, chamando o SDK de cada provedor com a chave desse provedor
As contas do INFRO são self-service. O catálogo, a documentação e o contrato da API são públicos, o gateway está implantado, e tudo o que vai além da v1 está marcado para depois. Planos e teste
Situação atual
O que você tem
Chaves de provedor no ambiente de cada serviço, retentativas e timeouts escritos em cada base de código, e o custo visível só na fatura ou na página de uso do provedor, por chave ou projeto, no máximo.
O que muda
Cada cliente aponta para https://api.infro.io com uma chave do gateway do INFRO. Suas chaves de provedor passam para o INFRO como conexões, seladas; seus provedores continuam cobrando você diretamente, pelos seus próprios preços.
O que não muda
Os SDKs, os formatos de requisição e resposta, o streaming, as chamadas de ferramentas e as saídas estruturadas em chat completions. O INFRO responde nos formatos Chat Completions e Responses da OpenAI e no formato Messages da Anthropic.
Um gateway é mais um salto e mais um fornecedor. Para algumas configurações, ainda não vale a pena, e esta lista é a versão honesta disso.
- Um serviço, um provedor, uma chave e uma fatura que uma pessoa lê. Um gateway adiciona um salto e uma assinatura antes de adicionar qualquer coisa de que você precise.
- Sua carga de trabalho é principalmente Batch, fine-tuning, Files, vector stores ou a Realtime API. O INFRO não serve nenhum deles; essas chamadas continuariam diretas de qualquer forma.
- Você depende de um recurso do provedor que os formatos de chat não levam, e só usa esse provedor. Chamadas que o INFRO não consegue levar ficam melhor diretas do que convertidas pela metade.
- Você precisa que cada requisição fique dentro de uma única região de nuvem. O INFRO roda na rede da Cloudflare, e a fixação de região não está disponível hoje.
As alterações, uma linha cada. Tudo o que não está listado aqui continua como está.
| Chamadas diretas ao SDK | INFRO | |
|---|---|---|
| URL base | O padrão do SDK: api.openai.com/v1, api.anthropic.com. | https://api.infro.io/v1 para o OpenAI SDK; https://api.infro.io para o Anthropic SDK (ele acrescenta /v1/messages). |
| Chave | OPENAI_API_KEY, ANTHROPIC_API_KEY em cada serviço. | Uma chave do gateway do INFRO (Authorization: Bearer; o x-api-key do Anthropic SDK também é aceito). As chaves dos provedores são informadas uma vez, no console, como conexões. |
| Id do modelo | gpt-5.6-terra, claude-sonnet-5-5. | openai/gpt-5.6-terra em chat completions, ou o nome de uma rota. O Anthropic SDK pode manter claude-sonnet-5-5: /v1/messages lê os ids da própria Anthropic. |
| Atribuição | Geralmente nada, ou o campo user do provedor. | metadata.user_id, metadata.session_id, metadata.tags no corpo, ou os headers X-INFRO-User-Id / X-INFRO-Feature. Registrados na requisição, nunca enviados ao provedor. |
Antes · SDKs dos provedores
import OpenAI from "openai";
import Anthropic from "@anthropic-ai/sdk";
const openai = new OpenAI(); // reads OPENAI_API_KEY
const anthropic = new Anthropic(); // reads ANTHROPIC_API_KEY
await openai.chat.completions.create({
model: "gpt-5.6-terra",
messages: [{ role: "user", content: "Hello" }],
});
await anthropic.messages.create({
model: "claude-sonnet-5-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello" }],
});Depois · INFRO
import OpenAI from "openai";
import Anthropic from "@anthropic-ai/sdk";
const openai = new OpenAI({
baseURL: "https://api.infro.io/v1",
apiKey: process.env.INFRO_API_KEY,
});
const anthropic = new Anthropic({
baseURL: "https://api.infro.io",
apiKey: process.env.INFRO_API_KEY,
});
await openai.chat.completions.create({
model: "openai/gpt-5.6-terra",
messages: [{ role: "user", content: "Hello" }],
});
await anthropic.messages.create({
model: "claude-sonnet-5-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello" }],
});Failover sem código novo
Conecte o Claude na Anthropic e na Vertex AI, ou duas chaves da Anthropic, e uma requisição que nomeia o modelo faz failover entre elas. Uma rota nomeada define a ordem e as regras por tipo de falha (429, 5xx, timeout) na configuração.
Orçamentos antes da chamada
Orçamentos na organização, no projeto, no membro e na chave reservam o pior caso de uma requisição antes de o provedor ser chamado. No teto, a resposta é 402 budget_exceeded, no envelope de erro da própria API.
O que deixar como está
Batch, Files, fine-tuning, vector stores, moderations e Realtime mantêm o cliente direto. Um mesmo serviço pode ter os dois clientes: um pelo INFRO, outro direto. Embeddings migram, mas mantenha exatamente o modelo que construiu seu índice: vetores de modelos diferentes não são comparáveis.
O que a sua configuração faz hoje comparado ao INFRO, conferido com o que o gateway implementa. Uma linha diz que o INFRO não tem nada.
| Chamadas diretas ao SDK | O que faz lá | No INFRO |
|---|---|---|
| Chave de provedor por serviçodiferente | Cada serviço guarda a chave do provedor no próprio ambiente. | A chave é uma conexão, selada no INFRO; os serviços têm chaves do gateway com escopo, que podem ser limitadas a provedores, modelos, faixas de IP e um ambiente, rotacionadas ou desligadas. |
| Retentativas e timeoutsdiferente | As retentativas do próprio SDK, mais o que cada base de código adicionar. | Rotas com destinos por prioridade ou ponderados entre suas conexões e regras de falha por tipo (429, 5xx, timeout). As retentativas do próprio SDK continuam valendo por cima. |
| Custodiferente | A página de uso e a fatura do provedor, por chave ou projeto. | Um custo estimado do provedor em cada resposta (usage.cost, usage.price_source), por projeto, chave, usuário e tag; reconciliado diariamente com as próprias APIs de custo da OpenAI e da Anthropic, com uma chave de administrador que você adiciona. |
| Limites de gastosdiferente | Limites de projeto do lado do provedor, quando o provedor os oferece. | Orçamentos que recusam no teto com 402, em todos os provedores ao mesmo tempo, nos níveis de organização, projeto, membro, chave e cliente final. |
| Chat Completions e Responsesmesmo formato | As duas APIs de texto da OpenAI. | Os dois, em /v1/chat/completions e /v1/responses. previous_response_id e background são recusados: o INFRO não guarda respostas, então envie a conversa a cada turno. |
| Anthropic Messagesmesmo formato | /v1/messages, com thinking, cache_control e ferramentas do servidor. | /v1/messages no formato da Anthropic. Em uma conexão Anthropic, ou no Claude na Vertex AI, o corpo chega ao provedor como escrito. |
| Imagens, fala, transcrição, vídeomesmo formato | Os endpoints de mídia do provedor. | /v1/images, /v1/audio, /v1/videos com jobs assíncronos, nos provedores que servem cada modelo. |
| Embeddingsmesmo formato | /v1/embeddings. | /v1/embeddings no formato da OpenAI na sua conexão OpenAI, Azure OpenAI ou Mistral. Failover apenas para o mesmo modelo, para que os vetores armazenados continuem comparáveis. |
| Batch, Files, fine-tuning e Realtimenada | APIs de provedor no nível da conta. | Não servidos, e não planejados como recursos do gateway. Eles ficam no provedor. |
O que o INFRO não faz
- Batch, Files, fine-tuning, vector stores, moderations, Assistants e a Realtime API.
- Respostas armazenadas:
previous_response_id,conversationebackground: trueem/v1/responsessão recusados com400. - Fixação de região. O INFRO roda na rede da Cloudflare; residência de dados está no roadmap, não disponível.
- Uma implantação auto-hospedada sem contrato enterprise.
O que não é levado
- O histórico de uso de antes da troca. O próprio dashboard do provedor o mantém; o INFRO registra a partir da primeira requisição que atende.
- Limites de projeto do lado do provedor. Defina orçamentos no INFRO em vez disso; os limites do provedor continuam valendo do lado dele.
Perguntas
- Continuo pagando a OpenAI e a Anthropic diretamente?
- Sim. O INFRO chama suas próprias contas de provedor com suas chaves, então seus provedores cobram você pelos seus próprios preços. O INFRO cobra uma assinatura e adiciona 0% ao gasto com modelos.
- Preciso trocar de SDK?
- Não. O OpenAI SDK aceita um
baseURLdehttps://api.infro.io/v1, o Anthropic SDK umbaseURLdehttps://api.infro.io, e os dois aceitam a chave do INFRO como chave de API. - O que precisa continuar diretamente no provedor?
- Batch, Files, fine-tuning, vector stores, moderations e Realtime. O INFRO não os serve. Embeddings podem migrar:
/v1/embeddingsroda em conexões OpenAI, Azure OpenAI e Mistral.
Migre conosco ou por conta própria
O programa de migração mapeia, numa chamada, a sua configuração do SDKs diretos da OpenAI e da Anthropic para conexões, rotas e orçamentos do INFRO e migra o primeiro serviço com você. Seus provedores continuam cobrando você diretamente; o INFRO é uma assinatura e acrescenta 0% ao gasto com modelos.
Fontes
O comportamento do SDK descrito nesta página vem destas fontes, lidas em 19 de outubro de 2026.
- OpenAI — openai-node README (client options)lido em 19 de out. de 2026
- OpenAI — openai-python README (client options)lido em 19 de out. de 2026
- Anthropic — TypeScript SDKlido em 19 de out. de 2026
- Anthropic — Python SDKlido em 19 de out. de 2026