Aller au contenu

Guides de migrationDepuis les SDK OpenAI et Anthropic en direct

Des appels SDK directs à un seul plan de contrôle

La plupart des équipes commencent par appeler OpenAI ou Anthropic avec le SDK de l'éditeur et une clé dans une variable d'environnement. Cela fonctionne jusqu'à ce qu'il y ait plusieurs services, plusieurs clés et une facture mensuelle que personne ne sait attribuer. Cette page décrit la modification qui place INFRO devant ces appels sans changer de SDK, de compte fournisseur ni de contrat.

Votre propre code, qui appelle le SDK de chaque fournisseur avec la clé de ce fournisseur

Les comptes INFRO sont en libre-service. Le catalogue, la documentation et le contrat d'API sont publics, la passerelle est déployée, et tout ce qui va au-delà de la v1 est marqué Plus tard. Offres et essai

Où en sont les choses

Ce que vous avez

Des clés fournisseur dans l'environnement de chaque service, des relances et des timeouts écrits dans chaque base de code, et un coût visible uniquement sur la facture ou la page d'usage du fournisseur, au mieux par clé ou par projet.

Ce qui change

Chaque client pointe vers https://api.infro.io avec une clé de passerelle INFRO. Vos clés fournisseur passent dans INFRO sous forme de connexions, scellées ; vos fournisseurs continuent de vous facturer directement à vos propres tarifs.

Ce qui ne change pas

Les SDK, les formats de requête et de réponse, le streaming, les appels d'outils et les sorties structurées sur chat completions. INFRO répond aux formats Chat Completions et Responses d'OpenAI et au format Messages d'Anthropic.

Une passerelle, c'est un saut de plus et un éditeur de plus. Pour certaines configurations, elle n'en vaut pas encore la peine, et cette liste en est la version honnête.

  • Un service, un fournisseur, une clé, et une facture lue par une seule personne. Une passerelle ajoute un saut et un abonnement avant d'ajouter quoi que ce soit dont vous ayez besoin.
  • Votre charge est surtout Batch, fine-tuning, Files, vector stores ou l'API Realtime. INFRO ne sert aucun d'eux ; ces appels resteraient de toute façon en direct.
  • Vous dépendez d'une fonctionnalité fournisseur que les formats chat ne transportent pas, et vous n'utilisez que ce fournisseur. Mieux vaut laisser en direct les appels qu'INFRO ne peut pas transporter que les convertir à moitié.
  • Chaque requête doit rester dans une seule région cloud. INFRO s'exécute sur le réseau de Cloudflare et l'épinglage à une région n'est pas disponible aujourd'hui.

Les modifications, une ligne chacune. Tout ce qui n'est pas listé ici reste tel quel.

 Appels SDK directsINFRO
URL de baseLa valeur par défaut du SDK : api.openai.com/v1, api.anthropic.com.https://api.infro.io/v1 pour le SDK OpenAI ; https://api.infro.io pour le SDK Anthropic (il ajoute /v1/messages).
CléOPENAI_API_KEY, ANTHROPIC_API_KEY dans chaque service.Une clé de passerelle INFRO (Authorization: Bearer ; le x-api-key du SDK Anthropic est aussi accepté). Les clés fournisseur sont saisies une fois, dans la console, sous forme de connexions.
ID du modèlegpt-5.6-terra, claude-sonnet-5-5.openai/gpt-5.6-terra sur chat completions, ou un nom de route. Le SDK Anthropic peut garder claude-sonnet-5-5 : /v1/messages lit les identifiants propres à Anthropic.
AttributionEn général rien, ou le champ user du fournisseur.metadata.user_id, metadata.session_id, metadata.tags dans le corps, ou les en-têtes X-INFRO-User-Id / X-INFRO-Feature. Enregistrés sur la requête, jamais envoyés au fournisseur.

Avant · les SDK des fournisseurs

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

Après · 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" }],
});

Basculement sans nouveau code

Connectez Claude sur Anthropic et sur Vertex AI, ou deux clés Anthropic, et une requête qui nomme le modèle bascule de l'un à l'autre. Une route nommée définit l'ordre et les règles par type d'échec (429, 5xx, timeout) dans la configuration.

Budgets avant l'appel

Les budgets d'organisation, de projet, de membre et de clé réservent le pire cas d'une requête avant l'appel au fournisseur. Au plafond, la réponse est 402 budget_exceeded, dans l'enveloppe d'erreur propre à l'API.

Ce qu'il faut laisser en l'état

Batch, Files, fine-tuning, les vector stores, les modérations et Realtime gardent leur client direct. Un même service peut contenir les deux clients : l'un via INFRO, l'autre en direct. Les embeddings migrent, mais gardez exactement le modèle qui a construit votre index : les vecteurs de modèles différents ne sont pas comparables.

Ce que fait votre configuration aujourd'hui face à INFRO, vérifié par rapport à ce que la passerelle implémente. Une ligne indique que INFRO n'a rien.

Appels SDK directsCe que cela y faitDans INFRO
Clé fournisseur par servicedifférentChaque service conserve la clé du fournisseur dans son environnement.La clé est une connexion, scellée dans INFRO ; les services détiennent des clés de passerelle à portée limitée, qui peuvent être restreintes à des fournisseurs, des modèles, des plages IP et un environnement, renouvelées ou désactivées.
Relances et timeoutsdifférentLes relances propres au SDK, plus ce que chaque base de code ajoute.Des routes avec des cibles prioritaires ou pondérées sur vos connexions et des règles d'échec par type (429, 5xx, timeout). Les relances propres au SDK s'appliquent toujours en plus.
CoûtdifférentLa page d'usage et la facture du fournisseur, par clé ou projet.Un coût fournisseur estimé sur chaque réponse (usage.cost, usage.price_source), par projet, clé, utilisateur et tag ; rapproché chaque jour des API de coûts d'OpenAI et d'Anthropic avec une clé admin que vous ajoutez.
Limites de dépensesdifférentLes limites de projet côté fournisseur, lorsque le fournisseur en propose.Des budgets qui refusent au plafond avec 402, sur tous les fournisseurs à la fois, au niveau de l'organisation, du projet, du membre, de la clé et du client final.
Chat Completions et Responsesmême formeLes deux API texte d'OpenAI.Les deux, sur /v1/chat/completions et /v1/responses. previous_response_id et background sont refusés : INFRO ne conserve aucune réponse, envoyez donc la conversation à chaque tour.
Anthropic Messagesmême forme/v1/messages, avec la réflexion, cache_control et les outils serveur./v1/messages au format d'Anthropic. Sur une connexion Anthropic, ou Claude sur Vertex AI, le corps parvient au fournisseur tel qu'écrit.
Images, synthèse vocale, transcription, vidéomême formeLes endpoints médias du fournisseur./v1/images, /v1/audio, /v1/videos avec des tâches asynchrones, chez les fournisseurs qui servent chaque modèle.
Embeddingsmême forme/v1/embeddings./v1/embeddings au format OpenAI sur votre connexion OpenAI, Azure OpenAI ou Mistral. Basculement uniquement vers le même modèle, pour que les vecteurs stockés restent comparables.
Batch, Files, fine-tuning, RealtimerienAPI fournisseur au niveau du compte.Non servis, et non prévus comme fonctionnalités de passerelle. Ils restent chez le fournisseur.

Ce que INFRO ne fait pas

  • Batch, Files, fine-tuning, les vector stores, les modérations, Assistants et l'API Realtime.
  • Réponses stockées : previous_response_id, conversation et background: true sur /v1/responses sont refusés avec 400.
  • L'épinglage à une région. INFRO s'exécute sur le réseau de Cloudflare ; la résidence des données est sur la feuille de route, pas disponible.
  • Un déploiement auto-hébergé sans contrat entreprise.

Ce qui n'est pas repris

  • L'historique d'usage d'avant la bascule. Le tableau de bord du fournisseur le conserve ; INFRO enregistre à partir de la première requête qu'il sert.
  • Les limites de projet côté fournisseur. Définissez plutôt des budgets INFRO ; les limites du fournisseur s'appliquent toujours de son côté.

Questions

Est-ce que je paie toujours OpenAI et Anthropic directement ?
Oui. INFRO appelle vos propres comptes fournisseurs avec vos clés, vos fournisseurs vous facturent donc à vos propres tarifs. INFRO facture un abonnement et ajoute 0 % aux dépenses de modèles.
Dois-je changer de SDK ?
Non. Le SDK OpenAI accepte une baseURL https://api.infro.io/v1, le SDK Anthropic une baseURL https://api.infro.io, et tous deux prennent la clé INFRO comme clé API.
Qu'est-ce qui doit rester directement chez le fournisseur ?
Batch, Files, fine-tuning, les vector stores, les modérations et Realtime. INFRO ne les sert pas. Les embeddings peuvent migrer : /v1/embeddings fonctionne sur les connexions OpenAI, Azure OpenAI et Mistral.

Migrez avec nous, ou seul

Le programme de migration transpose votre configuration les SDK OpenAI et Anthropic en direct en connexions, routes et budgets INFRO lors d'un appel, et migre le premier service avec vous. Vos fournisseurs continuent de vous facturer directement ; INFRO est un abonnement et ajoute 0 % aux dépenses de modèles.

Sources

Le comportement des SDK décrit sur cette page provient de ces sources, lues le 19 octobre 2026.