← Blog
October 6, 2025

Guía del comprador sobre las API compatibles con OpenAI

«Compatible con OpenAI» debería significar que puedes cambiar una URL base, girar una clave y enviar, lo que supone un verdadero reemplazo. Muchas API se acercan, unas pocas lo hacen bien y otras ocultan peculiaridades que interrumpen la producción. Utilice las siguientes comprobaciones para averiguarlo antes de migrar.

Prueba Compute hoy: Lanzar un VLLM servidor de inferencia en Calcular en Francia (UE), EE.UU., o EAU. Obtienes un punto final HTTPS con rutas al estilo de OpenAI. Dirija su SDK de OpenAI existente a la nueva URL base y comience a realizar pruebas.

Qué debe significar la compatibilidad

  • Rutas compatibles: /v1/chat/completions, /v1/completions (opcional), /v1/embeddings.
  • Formas de carga útil compatibles: modelo, mensajes, max_tokens, temperature, top_p, stop, stream.
  • Transmisión compatible vía Eventos enviados por el servidor (SSE) con formato de fragmentos, tu SDK ya analiza.
  • Esquema de errores admitido con campos estables (type, message, code, param, request_id).
  • Cabeceras de límite de velocidad compatibles y un Retry‑After honesto.
  • Incumplimientos razonables con documentos claros (tokens, muestreo, tiempos de espera).
  • Seguridad y residencia compatibles botones: región, política de registro, retención.

Start in seconds with the fastest, most affordable cloud GPU clusters.

Launch an instance in under a minute. Enjoy flexible pricing, powerful hardware, and 24/7 support. Scale as you grow—no long-term commitment needed.

Try Compute now

Inicio rápido: cambia la URL base

Pitón

Para autenticar tus solicitudes, inserta tu clave de API en el parámetro api_key. El siguiente ejemplo de código muestra cómo enviar solicitudes al punto final de la API compatible con OpenAI:

desde openai importar OpenAI
client = OpenAI (base_url=» https://YOUR-ENDPOINT/v1 «, API_KEY="Your_key»)

resp = client.chat.completions.create (
model="f3-7b-instruct»,
messages= [{"role» :"user», "content» :"Escribe una actualización de estado de una frase. «}],
max_tokens=60
)
imprimir (resp.choices [0] .message.content)

Nodo

Asegúrate de configurar tu clave de API en el campo ApiKey para autenticar las solicitudes. Este código muestra cómo enviar solicitudes al punto final de la API compatible con OpenAI:

importar OpenAI desde «openai»;
const client = new OpenAI ({baseUrl: "https://YOUR-ENDPOINT/v1 «, apiKey: process.env.key});

const r = esperar a client.chat.completions.create ({
modelo: «f3-7b-instruct»,
messages: [{role: «user», content: «Dime un riesgo clave para este proyecto».}],
número máximo de tokens: 60
});
console.log (r.choices [0] .message.content);

Si esto funciona sin cambios de código más allá de la URL base, estás cerca. Ahora verifica los bordes.

Puntos finales para probar (mínimos pero reveladores)

  1. Finalizaciones de chat — no streaming y streaming.
  2. Finalizaciones — si aún utiliza puntos finales de texto.
  3. Incruzaciones — lote >1 entrada; verifique el orden y el tamaño del vector.
  4. Lista de modelos — OBTENGA /v1/models; compruebe que los ID coincidan con los documentos y la política de acceso.
  5. Moderación (opcional): si el proveedor afirma ser compatible, verifique el esquema y asegúrese de que la configuración del punto final sea correcta.

Qué afirmar

  • Códigos de estado: 200 en caso de éxito, 4xx en errores del cliente, 5xx en el servidor.
  • Nombres de campo: choices [] .message.content, usage.prompt_tokens, usage.completion_tokens.
  • Estabilidad de pedidos: los resultados de las incrustaciones se alinean con las entradas, lo que garantiza que los resultados sean consistentes y estén en el orden esperado.
  • Uso de tokens: los números se suman y tienen sentido para tus indicaciones; comprueba que los resultados reflejen un recuento exacto de fichas.

Streaming y SSE (donde muchas API se desvían)

  • encabezados SSE conjunto y sin almacenamiento en búfer de proxy.
  • Formato de fragmentos: El SDK puede analizar los deltas incrementales a partir de la respuesta del servidor; el mensaje final contiene usage y finish_reason. El manejo correcto de la respuesta garantiza una transmisión fluida y un análisis preciso.
  • Cancelación: la anulación de la solicitud libera rápidamente los recursos del servidor al detener el flujo de respuestas.
  • Hora del primer token (TTFT): mida p50/p95; compárelo con su proveedor actual.

Bucle de flujo de nodos (debería funcionar)

const stream = await client.chat.completions.create ({
modelo: «f3-7b-instruct»,
messages: [{role: «user», content: «Transmite 3 frases cortas».}],
transmisión: verdadera,
número máximo de tokens: 120
});
para await (parte constante de la transmisión) {
const delta = chunk.choices?. ¿[0]?. ¿delta?. contenido;
si (delta) process.stdout.write (delta);
}

Errores, límites y encabezados

  • Errores estructurados: campos legibles por máquina (tipo, mensaje, código, request_id). Ten en cuenta los problemas conocidos relacionados con la gestión de errores, como los códigos de error incoherentes o los formatos de carga inesperados.
  • Límites de tarifas: borrar documentos + encabezados; Retry‑After debe coincidir con la realidad. En algunos entornos, es posible que surjan problemas con la aplicación de los límites de velocidad o con la precisión de los encabezados.
  • 429 comportamiento: los clientes se recuperan con un retraso nervioso; las transmisiones terminan limpiamente cuando se alcanzan los límites.
  • Tiempos de espera: confirme los tiempos de espera razonables del servidor y manténgalo activo para la transmisión.

Ejemplo de carga útil de error

{
«error»: {
«tipo»: «rate_limit_exceeded»,
«message»: «La clave superó los 60 000 tokens/minuto. «,
«código»: «tpm_exceeded»,
«request_id»: «...»
}
}

Nombres de modelos, valores predeterminados y muestreo

  • ID de modelo: coherente y documentado; es posible que necesite asignar los ID de modelo de OpenAI al nuevo proveedor mediante una tabla de mapeo si migra desde los nombres de OpenAI.
  • Valores predeterminados: penalizaciones de temperatura, top_p, presencia/frecuencia; max_tokens sanos.
  • Detener secuencias: honrado y no alterado silenciosamente.
  • Llamada a herramientas /modos JSON (si se ofrecen): esquemas y ejemplos estables.
  • Cuantificación y longitud del contexto: límites revelados y compensaciones.

Indicaciones de evaluación y comprobaciones de paridad

  • Los desarrolladores deben crear un conjunto de semillas (30 a 60 indicaciones) a partir de su carga de trabajo real y ejecute las pruebas de evaluación.
  • Medir TTFT y tokens/seg junto con la calidad.
  • Mantener tapas ajustadas durante las pruebas para exponer la imparcialidad del procesamiento por lotes.
  • Comparar paridad de funcionalidad: comportamiento de transmisión, secuencias de parada, tipos de errores y recuentos de tokenizadores.

Seguridad, privacidad y residencia

  • Selección de región con ubicaciones documentadas. Asegúrese de seleccionar la región adecuada para mantener los requisitos de seguridad y privacidad.
  • Política de registro: números frente a texto sin procesar; retención y eliminación predeterminadas. Asegúrese de que las configuraciones de registro protejan los datos confidenciales.
  • Llaves y acceso: claves por servicio, rotación, listas de direcciones IP permitidas para el administrador. Asegúrese de que existan controles de acceso y administración de claves adecuados.
  • Contratos: DPA/BAA cuando sea necesario; lista de subprocesadores y política de cambios.
Prueba Compute hoy: Dirija su cliente de OpenAI a un VLLM punto final activado Calcular. Mantén el tráfico dentro de la región, transmite los tokens y aplica los límites. Usa la lista de verificación anterior comparándola con tus instrucciones reales.

Un plan de pruebas sencillo que convierte en realidad lo que es «compatible con OpenAI»

Cambie la URL base y, a continuación, verifique los puntos finales, la transmisión y los errores con sus propias instrucciones. Mantén el control sobre los puntos finales y las configuraciones de tu API durante todo el proceso de migración y prueba. Mida tiempo hasta el primer token y fichas por segundo, comprueba los encabezados y los valores predeterminados de los límites de velocidad y exige documentos claros sobre la región y los registros. Si supera esta lista, puedes cambiar con confianza y volver a hacerlo con la misma facilidad.

PREGUNTAS MÁS FRECUENTES

¿Qué abarca realmente la expresión «compatible con OpenAI»?

Rutas, cargas útiles, streaming, errores y comportamiento de límite de velocidad que ya manejan los clientes y los SDK de OpenAI existentes. Para obtener información más detallada, consulte la sección correspondiente de la documentación o guía.

¿Tengo que cambiar mi tokenizador o mis indicaciones?

No para el envoltorio del cliente; quizás para el modelo. Al migrar, compruebe qué ha cambiado en los recuentos y los valores predeterminados y, a continuación, haga una pequeña asignación de los ID del modelo antiguo al nuevo.

¿Cómo pruebo el SSE sin una biblioteca?

Usa las solicitudes HTTP con curl y la opción -N, o la API Streams del navegador. Deberías ver fragmentos incrementales y un final de flujo claro.

¿Qué pasa si los números de uso no coinciden con mis estimaciones?

Trate el uso del lado del servidor como si fuera verdad. Alinee el contador de su cliente con el tokenizador modelo y normalice las entradas.

¿Puedo confiar en Retry‑After para dar marcha atrás?

Sí, si el proveedor es honesto. Es posible que los distintos proveedores implementen Retry‑After de forma diferente, por lo que siempre hay que dejar de lado la fluctuación y respetar la opción Retry‑After; las transmisiones deben terminar limpiamente con cuotas flexibles.

¿Cómo mantengo la opción de volver a cambiar?

Incluya la URL base y los ID del modelo en la configuración. Añada opciones de configuración o paneles de métricas para facilitar el cambio de sistema. Tenga listos sus conjuntos de evaluaciones y sus paneles de métricas para poder comparar en cualquier momento.