Vai al contenuto

Guide alla migrazioneDa gli SDK diretti di OpenAI e Anthropic

Dalle chiamate SDK dirette a un unico piano di controllo

La maggior parte dei team inizia chiamando OpenAI o Anthropic con l'SDK del vendor e una chiave in una variabile d'ambiente. Funziona finché non ci sono diversi servizi, diverse chiavi e una fattura mensile che nessuno sa attribuire. Questa pagina è la modifica che mette INFRO davanti a quelle chiamate senza cambiare SDK, account del provider o contratto.

Il tuo codice, che chiama l'SDK di ogni provider con la chiave di quel provider

Gli account INFRO sono self-service. Il catalogo, la documentazione e il contratto dell'API sono pubblici, il gateway è in produzione e tutto ciò che va oltre la v1 è indicato come "Più avanti". Piani e prova

A che punto siamo

Cosa hai

Chiavi dei provider nell'ambiente di ogni servizio, retry e timeout scritti in ogni codebase, e costi visibili solo sulla fattura o sulla pagina di utilizzo del provider, al massimo per chiave o progetto.

Cosa cambia

Ogni client punta a https://api.infro.io con una chiave del gateway INFRO. Le tue chiavi dei provider passano in INFRO come connessioni, sigillate; i tuoi provider continuano a fatturarti direttamente alle tue tariffe.

Cosa non cambia

Gli SDK, le forme di richiesta e risposta, lo streaming, le chiamate agli strumenti e gli output strutturati su chat completions. INFRO risponde con le forme Chat Completions e Responses di OpenAI e con la forma Messages di Anthropic.

Un gateway è un passaggio in più e un vendor in più. Per alcune configurazioni non ne vale ancora la pena, e questo elenco ne è la versione onesta.

  • Un servizio, un provider, una chiave e una fattura letta da una sola persona. Un gateway aggiunge un passaggio e un abbonamento prima di aggiungere qualcosa che ti serve.
  • Il tuo carico di lavoro è soprattutto Batch, fine-tuning, Files, vector store o la Realtime API. INFRO non serve nessuno di questi; quelle chiamate resterebbero comunque dirette.
  • Ti affidi a una funzionalità del provider che le forme chat non supportano, e usi solo quel provider. Le chiamate che INFRO non può supportare è meglio lasciarle dirette che convertirle a metà.
  • Ti serve che ogni richiesta resti in una sola regione cloud. INFRO gira sulla rete di Cloudflare e il vincolo a una regione oggi non è disponibile.

Le modifiche, una riga ciascuna. Tutto ciò che non è elencato qui resta com'è.

 Chiamate SDK diretteINFRO
URL di baseIl default dell'SDK: api.openai.com/v1, api.anthropic.com.https://api.infro.io/v1 per l'SDK di OpenAI; https://api.infro.io per l'SDK di Anthropic (che aggiunge /v1/messages).
ChiaveOPENAI_API_KEY, ANTHROPIC_API_KEY in ogni servizio.Una chiave del gateway INFRO (Authorization: Bearer; è accettato anche x-api-key dell'SDK di Anthropic). Le chiavi dei provider si inseriscono una volta, nella console, come connessioni.
Id del modellogpt-5.6-terra, claude-sonnet-5-5.openai/gpt-5.6-terra su chat completions, o il nome di una route. L'SDK di Anthropic può mantenere claude-sonnet-5-5: /v1/messages legge gli id di Anthropic.
AttribuzioneDi solito nulla, o il campo user del provider.metadata.user_id, metadata.session_id, metadata.tags nel corpo, oppure gli header X-INFRO-User-Id / X-INFRO-Feature. Registrati sulla richiesta, mai inviati al provider.

Prima · gli SDK dei provider

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" }],
});

Dopo · 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 senza nuovo codice

Collega Claude su Anthropic e su Vertex AI, o due chiavi Anthropic, e una richiesta che indica il modello passa in failover tra loro. Una route con nome stabilisce l'ordine e le regole per tipo di errore (429, 5xx, timeout) nella configurazione.

Budget prima della chiamata

I budget a livello di organizzazione, progetto, membro e chiave riservano il caso peggiore di una richiesta prima che il provider venga chiamato. Al raggiungimento del tetto la risposta è 402 budget_exceeded, nel formato di errore dell'API stessa.

Cosa lasciare com'è

Batch, Files, fine-tuning, vector store, moderazioni e Realtime mantengono il loro client diretto. Un singolo servizio può avere entrambi i client: uno tramite INFRO, uno diretto. Gli embedding si spostano, ma mantieni esattamente il modello che ha costruito il tuo indice: i vettori di modelli diversi non sono confrontabili.

Cosa fa oggi la tua configurazione rispetto a INFRO, verificato con ciò che il gateway implementa. Una riga dice che INFRO non ha nulla.

Chiamate SDK diretteCosa fa lìIn INFRO
Chiave del provider per serviziodiversoOgni servizio tiene la chiave del provider nel proprio ambiente.La chiave è una connessione, sigillata in INFRO; i servizi detengono chiavi del gateway con ambito limitato, che possono essere ristrette a provider, modelli, intervalli IP e un ambiente, ruotate o disattivate.
Retry e timeoutdiversoI retry dell'SDK, più quelli che aggiunge ogni codebase.Route con destinazioni a priorità o pesate tra le tue connessioni e regole di errore per tipo (429, 5xx, timeout). I retry dell'SDK continuano ad applicarsi in aggiunta.
CostodiversoLa pagina di utilizzo e la fattura del provider, per chiave o progetto.Un costo stimato del provider su ogni risposta (usage.cost, usage.price_source), per progetto, chiave, utente e tag; riconciliato ogni giorno con le API dei costi di OpenAI e Anthropic tramite una chiave amministrativa che aggiungi tu.
Limiti di spesadiversoLimiti di progetto lato provider, dove il provider li offre.Budget che rifiutano al raggiungimento del tetto con 402, su tutti i provider insieme, a livello di organizzazione, progetto, membro, chiave e cliente finale.
Chat Completions e Responsesstessa formaLe due API di testo di OpenAI.Entrambe, su /v1/chat/completions e /v1/responses. previous_response_id e background vengono rifiutati: INFRO non conserva risposte, quindi invia la conversazione a ogni turno.
Anthropic Messagesstessa forma/v1/messages, con thinking, cache_control e strumenti lato server./v1/messages nella forma di Anthropic. Su una connessione Anthropic, o con Claude su Vertex AI, il corpo arriva al provider così com'è scritto.
Immagini, sintesi vocale, trascrizione, videostessa formaGli endpoint multimediali del provider./v1/images, /v1/audio, /v1/videos con job asincroni, sui provider che servono ciascun modello.
Embeddingstessa forma/v1/embeddings./v1/embeddings nella forma di OpenAI sulla tua connessione OpenAI, Azure OpenAI o Mistral. Failover solo verso lo stesso modello, così i vettori archiviati restano confrontabili.
Batch, Files, fine-tuning, RealtimenienteAPI dei provider a livello di account.Non serviti, e non previsti come funzionalità del gateway. Restano sul provider.

Cosa non fa INFRO

  • Batch, Files, fine-tuning, vector store, moderazioni, Assistants e la Realtime API.
  • Risposte archiviate: previous_response_id, conversation e background: true su /v1/responses vengono rifiutati con 400.
  • Vincolo a una regione. INFRO gira sulla rete di Cloudflare; la residenza dei dati è nella roadmap, non disponibile.
  • Un deployment self-hosted senza un accordo enterprise.

Cosa non si porta con sé

  • Lo storico di utilizzo precedente al passaggio. Lo conserva la dashboard del provider; INFRO registra dalla prima richiesta che serve.
  • Limiti di progetto lato provider. Imposta invece i budget INFRO; i limiti del provider continuano ad applicarsi dal suo lato.

Domande

Pago ancora direttamente OpenAI e Anthropic?
Sì. INFRO chiama i tuoi account dei provider con le tue chiavi, quindi i tuoi provider ti fatturano alle tue tariffe. INFRO addebita un abbonamento e aggiunge lo 0% alla spesa per i modelli.
Devo cambiare SDK?
No. L'SDK di OpenAI accetta un baseURL pari a https://api.infro.io/v1, l'SDK di Anthropic un baseURL pari a https://api.infro.io, ed entrambi accettano la chiave INFRO come chiave API.
Cosa deve restare direttamente sul provider?
Batch, Files, fine-tuning, vector store, moderazioni e Realtime. INFRO non li serve. Gli embedding possono spostarsi: /v1/embeddings gira su connessioni OpenAI, Azure OpenAI e Mistral.

Migra con noi, o da solo

Il programma di migrazione mappa in una call la tua configurazione gli SDK diretti di OpenAI e Anthropic su connessioni, route e budget di INFRO e migra con te il primo servizio. I tuoi provider continuano a fatturarti direttamente; INFRO è un abbonamento e aggiunge 0% alla spesa per i modelli.

Fonti

Il comportamento degli SDK descritto in questa pagina proviene da queste fonti, lette il 19 ottobre 2026.