Saltar al contenido

Guías de migraciónDesde los SDK directos de OpenAI y Anthropic

De llamadas directas con el SDK a un solo plano de control

La mayoría de los equipos empiezan llamando a OpenAI o Anthropic con el SDK del propio fabricante y una clave en una variable de entorno. Eso funciona hasta que hay varios servicios, varias claves y una factura mensual que nadie puede atribuir. Esta página es el cambio que pone a INFRO delante de esas llamadas sin cambiar de SDK, de cuenta de proveedor ni de contrato.

Tu propio código, que llama al SDK de cada proveedor con la clave de ese proveedor

Las cuentas de INFRO son de autoservicio. El catálogo, la documentación y el contrato de la API son públicos, el gateway está desplegado, y todo lo que va más allá de v1 está marcado como Más adelante. Planes y prueba

Dónde están las cosas

Lo que tienes

Claves de proveedor en el entorno de cada servicio, reintentos y timeouts escritos en cada base de código, y el costo visible solo en la factura o la página de uso del proveedor, como mucho por clave o proyecto.

Qué cambia

Cada cliente apunta a https://api.infro.io con una clave del gateway de INFRO. Tus claves de proveedor pasan a INFRO como conexiones, selladas; tus proveedores te siguen facturando directamente a tus propias tarifas.

Qué no cambia

Los SDK, las formas de solicitud y respuesta, el streaming, las llamadas a herramientas y las salidas estructuradas en chat completions. INFRO responde en las formas Chat Completions y Responses de OpenAI y en la forma Messages de Anthropic.

Un gateway es un salto más y un proveedor más. Para algunas configuraciones todavía no vale la pena, y esta lista es la versión honesta de eso.

  • Un servicio, un proveedor, una clave y una factura que lee una sola persona. Un gateway agrega un salto y una suscripción antes de agregar nada que necesites.
  • Tu carga de trabajo es sobre todo Batch, fine-tuning, Files, vector stores o la API Realtime. INFRO no sirve ninguno de ellos; esas llamadas se quedarían directas de todos modos.
  • Dependes de una función de un proveedor que las formas de chat no transportan, y solo usas ese proveedor. Las llamadas que INFRO no puede transportar es mejor dejarlas directas que convertirlas a medias.
  • Necesitas que cada solicitud se quede dentro de una región de nube. INFRO corre en la red de Cloudflare y la fijación de región no está disponible hoy.

Los cambios, uno por fila. Todo lo que no aparece aquí queda como está.

 Llamadas directas con el SDKINFRO
URL baseEl valor por defecto del SDK: api.openai.com/v1, api.anthropic.com.https://api.infro.io/v1 para el SDK de OpenAI; https://api.infro.io para el SDK de Anthropic (agrega /v1/messages).
ClaveOPENAI_API_KEY, ANTHROPIC_API_KEY en cada servicio.Una clave del gateway de INFRO (Authorization: Bearer; también se acepta el x-api-key del SDK de Anthropic). Las claves de proveedor se ingresan una vez, en la consola, como conexiones.
Id del modelogpt-5.6-terra, claude-sonnet-5-5.openai/gpt-5.6-terra en chat completions, o el nombre de una ruta. El SDK de Anthropic puede conservar claude-sonnet-5-5: /v1/messages lee los ids propios de Anthropic.
AtribuciónNormalmente nada, o el campo user del proveedor.metadata.user_id, metadata.session_id, metadata.tags en el cuerpo, o los encabezados X-INFRO-User-Id / X-INFRO-Feature. Se registran en la solicitud, nunca se envían al proveedor.

Antes · los SDK de los proveedores

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

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

Failover sin código nuevo

Conecta Claude en Anthropic y en Vertex AI, o dos claves de Anthropic, y una solicitud que nombre el modelo hace failover entre ellas. Una ruta con nombre define el orden y las reglas por tipo de fallo (429, 5xx, timeout) en la configuración.

Presupuestos antes de la llamada

Los presupuestos de organización, proyecto, miembro y clave reservan el peor caso de una solicitud antes de llamar al proveedor. En el techo, la respuesta es 402 budget_exceeded, en el propio formato de error de la API.

Qué no tocar

Batch, Files, fine-tuning, vector stores, moderations y Realtime conservan su cliente directo. Un mismo servicio puede tener ambos clientes: uno a través de INFRO y otro directo. Los embeddings se mueven, pero conserva exactamente el modelo que construyó tu índice: los vectores de modelos distintos no son comparables.

Lo que hace hoy tu configuración frente a INFRO, comprobado contra lo que implementa el gateway. Una fila dice que INFRO no tiene nada.

Llamadas directas con el SDKQué hace allíEn INFRO
Clave de proveedor por serviciodistintoCada servicio guarda la clave del proveedor en su entorno.La clave es una conexión, sellada en INFRO; los servicios tienen claves del gateway con alcance, que se pueden limitar a proveedores, modelos, rangos de IP y un entorno, rotar o desactivar.
Reintentos y timeoutsdistintoLos reintentos propios del SDK, más lo que agregue cada base de código.Rutas con destinos por prioridad o ponderados entre tus conexiones y reglas de fallo por tipo (429, 5xx, timeout). Los reintentos propios del SDK siguen aplicándose encima.
CostodistintoLa página de uso y la factura del proveedor, por clave o proyecto.Un costo estimado del proveedor en cada respuesta (usage.cost, usage.price_source), por proyecto, clave, usuario y etiqueta; conciliado a diario con las API de costos de OpenAI y Anthropic mediante una clave de administrador que agregas.
Límites de gastodistintoLímites por proyecto del lado del proveedor, donde el proveedor los ofrece.Presupuestos que rechazan en el techo con 402, en todos los proveedores a la vez, a nivel de organización, proyecto, miembro, clave y cliente final.
Chat Completions y Responsesmisma formaLas dos API de texto de OpenAI.Ambas, en /v1/chat/completions y /v1/responses. previous_response_id y background se rechazan: INFRO no guarda respuestas, así que envía la conversación en cada turno.
Anthropic Messagesmisma forma/v1/messages, con razonamiento, cache_control y herramientas de servidor./v1/messages con la forma de Anthropic. En una conexión de Anthropic, o Claude en Vertex AI, el cuerpo llega al proveedor tal como está escrito.
Imágenes, voz, transcripción, videomisma formaLos endpoints de medios del proveedor./v1/images, /v1/audio, /v1/videos con trabajos asíncronos, en los proveedores que sirven cada modelo.
Embeddingsmisma forma/v1/embeddings./v1/embeddings con la forma de OpenAI en tu conexión de OpenAI, Azure OpenAI o Mistral. Failover solo al mismo modelo, para que los vectores almacenados sigan siendo comparables.
Batch, Files, fine-tuning, RealtimenadaAPI de proveedor a nivel de cuenta.No se sirven, y no están previstos como funciones del gateway. Se quedan en el proveedor.

Lo que INFRO no hace

  • Batch, Files, fine-tuning, vector stores, moderations, Assistants y la API Realtime.
  • Respuestas almacenadas: previous_response_id, conversation y background: true en /v1/responses se rechazan con 400.
  • Fijación de región. INFRO corre en la red de Cloudflare; la residencia está en la hoja de ruta, no disponible.
  • Un despliegue autoalojado sin un acuerdo empresarial.

Lo que no se traslada

  • El historial de uso de antes del cambio. Lo conserva el panel del propio proveedor; INFRO registra desde la primera solicitud que sirve.
  • Límites por proyecto del lado del proveedor. Define presupuestos de INFRO en su lugar; los límites del proveedor siguen aplicándose de su lado.

Preguntas

¿Sigo pagando directamente a OpenAI y Anthropic?
Sí. INFRO llama a tus propias cuentas de proveedor con tus claves, así que tus proveedores te facturan a tus propias tarifas. INFRO cobra una suscripción y agrega 0% al gasto en modelos.
¿Tengo que cambiar de SDK?
No. El SDK de OpenAI acepta una baseURL de https://api.infro.io/v1, el SDK de Anthropic una baseURL de https://api.infro.io, y ambos aceptan la clave de INFRO como su clave de API.
¿Qué tiene que quedarse directamente en el proveedor?
Batch, Files, fine-tuning, vector stores, moderations y Realtime. INFRO no los sirve. Los embeddings sí se pueden mover: /v1/embeddings funciona en conexiones de OpenAI, Azure OpenAI y Mistral.

Migra con nosotros o por tu cuenta

El programa de migración traslada en una llamada tu configuración de los SDK directos de OpenAI y Anthropic a conexiones, rutas y presupuestos de INFRO, y migra contigo el primer servicio. Tus proveedores te siguen facturando directamente; INFRO es una suscripción y agrega 0% al gasto en modelos.

Fuentes

El comportamiento del SDK descrito en esta página proviene de estas fuentes, leídas el 19 de octubre de 2026.