Reemplazo de la API de OpenAI: lista de verificación de migración
Un reemplazo de la API de OpenAI solo funciona sin problemas si verificas tres cosas primero: qué endpoints llama tu código, en qué funciones depende y cómo se comporta el nuevo modelo con tus prompts. Esta lista de verificación cubre los tres, con comandos que puedes ejecutar hoy.

Resumen
- Las completaciones de chat, las respuestas, el streaming, las herramientas y el modo JSON funcionan con el SDK estándar de OpenAI tras cambiar la URL base.
- Los endpoints de embeddings, imagen, audio y ajuste fino no están disponibles. Mantén esos servicios en tu proveedor actual.
- El modelo es diferente, así que prueba prompts antes de cambiar. Mantén una bandera para volver atrás.
- La facturación es prepago y por token: $0,15 por cada 1M de entrada y $0,50 por cada 1M de salida.
Paso 1: inventaria qué llama tu código
Antes de cambiar algo, enumera qué funcionalidades de OpenAI usas realmente. La mayoría de los proyectos usan menos de lo que creen, y la lista decide si este cambio es un trabajo de cinco minutos o parcial. Ejecuta esto desde la raíz del proyecto:
# New values you will point the project at:
export OPENAI_BASE_URL="https://api.alternativeapiopenai.com/v1"
export OPENAI_API_KEY="YOUR_API_KEY"
export MODEL="uncensored"
# What does the code call today?
grep -rnE "embeddings|images\.|audio\.|fine_tuning|moderations|assistants|batches" --include="*.py" --include="*.js" --include="*.ts" .
grep -rnE "model *[=:] *['\"]" --include="*.py" --include="*.js" --include="*.ts" .
El primer grep encuentra los endpoints que esta API no ofrece. El segundo lista cada nombre de modelo codificado a mano, que deberás cambiar. Pon los hallazgos en una tabla corta con una fila por característica: usado, no usado, y qué hacer al respecto.
Paso 2: compara con lo que se admite
| Función de OpenAI | Aquí | Notas |
|---|---|---|
| Completados de chat | Sí | POST /v1/chat/completions |
| API de respuestas | Sí | POST /v1/responses |
| Listar modelos | Sí | GET /v1/models devuelve uncensored |
| Transmisión | Sí | SSE, con el uso al final |
| Llamada de herramientas | Sí | tools, tool_choice, tool_calls en streaming, resultados de role: "tool" |
| Modo JSON | Sí | response_format: {"type":"json_object"} |
| Parámetros | Sí | temperature, top_p, stop, seed, penalizaciones |
| Embeddings | No | No disponible |
| Generación de imágenes, audio, video | No | Solo texto |
| Fine-tuning | No | No disponible |
Todo lo que no esté en el lado de lo compatible de esta tabla debe considerarse no disponible hasta que lo confirmes en la documentación. Eso incluye la salida con esquema restringido: el modo JSON hace que el modelo devuelva JSON válido, pero no aplica tu propio esquema, así que mantén tu código de validación. Las entradas de imagen en un mensaje de chat tampoco están listadas, así que planifica solo con prompts de texto.
El modelo es un único modelo de pesos abiertos gestionado por un proveedor independiente. No es el modelo de OpenAI ni una API oficial de ningún proveedor, y no enruta entre proveedores. Espera un estilo diferente, fortalezas distintas y modos de fallo diferentes.
Paso 3: haz el cambio
Con el SDK oficial de Python, cambian tres valores:
from openai import OpenAI
client = OpenAI(
base_url="https://api.alternativeapiopenai.com/v1", # was the default OpenAI URL
api_key="YOUR_API_KEY", # was your old key
)
resp = client.chat.completions.create(
model="uncensored", # was your old model name
messages=[{"role": "user", "content": "Give me three names for a coffee shop."}],
)
print(resp.choices[0].message.content)
Mejor aún, mantén la URL base, la clave y el nombre del modelo en la configuración para que la misma build pueda apuntar a cualquier proveedor. Un patrón simple son tres variables de entorno: LLM_BASE_URL, LLM_API_KEY y LLM_MODEL. Luego, un rollback significa cambiar tres valores y reiniciar, no enviar un nuevo lanzamiento.
Si tu código usa la API de respuestas, se aplican los mismos tres valores. Para frameworks como LangChain o LlamaIndex, busca el conector compatible con OpenAI y pasa la misma URL base y nombre del modelo.
Paso 4: prueba antes de producción
El riesgo en cualquier cambio de modelo es el comportamiento, no la conexión. Prueba estos en orden:
- Conexión. Una petición con curl. Si devuelve una respuesta, la clave y la URL son correctas.
- Tus prompts reales. Reproduce al menos veinte prompts de producción y revisa la salida. Verifica el tono, la longitud y el seguimiento de instrucciones.
- Llamadas a herramientas. Ejecuta cada una de tus herramientas y verifica los argumentos que produce el modelo. Confirma que tu bucle maneja
tool_callsen una respuesta en streaming. - Salida JSON. Ejecuta cien llamadas en modo JSON y cuenta cuántas fallan en tu parser o esquema.
- Entradas largas. La ventana de contexto es de 100.000 tokens para prompt más completion. Prueba un prompt grande una vez para saber cuánto tarda.
- Límites. Una clave completa permite 8 peticiones simultáneas y 300 por minuto. Haz load-test en tu pico real.
Los conteos de tokens diferirán
Si tu código estima tokens con una librería tokenizer diseñada para otro modelo, trata el resultado como aproximado. Usa el objeto usage en cada respuesta para facturación y presupuesto, y deja un margen de seguridad cuando recortes el historial para ajustarse a la ventana de 100.000 tokens. Configurar max_tokens es opcional aquí, pero un límite sensato evita que una respuesta descontrolada gaste más de lo planeado.
Cómo se ven los errores
Superado un límite, la API devuelve HTTP 429 con el código rate_limited (peticiones por minuto) o concurrency (demasiadas a la vez). Una sobrecarga temporal también devuelve 429, con un encabezado Retry-After: 5. Una petición en streaming mantiene su slot de concurrencia hasta que termina el flujo, así que los clientes lentos cuentan contra ti. Las peticiones fallidas o rechazadas no se cobran.
Paso 5: verifica el costo
El precio es $0.15 por cada 1M de tokens de input y $0.50 por cada 1M de tokens de output, pagados desde crédito prepago. Para comparar con tu factura actual, usa tus propios conteos de tokens del campo usage y aplica la fórmula: cost = input_tokens x 0.15 / 1,000,000 + output_tokens x 0.50 / 1,000,000. Para otros proveedores, verifica su pricing actual y aplica los mismos conteos.
Un ejemplo práctico: una tool de soporte maneja 30.000 requests al mes con 1.200 tokens de input y 250 de output cada una. El input es de 36M tokens, costando $5,40. El output es de 7.5M tokens, costando $3,75. El total mensual es $9,15. Si la misma carga llena la ventana de contexto, con 100.000 tokens de input, cada request cuesta $0,015 solo en input, así que el tamaño del prompt es lo que debes vigilar.
La página de pricing lista montos de top-up. Van desde $20 a $500, con +5% desde $50, +10% desde $100 y +15% desde $200, pagados solo en crypto (USDT en TRC20 o USDC en Base). El crédito no caduca, y no hay suscripción. La guía relacionada sobre precios de API para modelos uncensored explica la estructura de costos en más profundidad.
Paso 6: despliega y mantén una forma de volver
Envía una pequeña parte del tráfico al nuevo endpoint primero. Registra el request ID del encabezado X-Request-Id para rastrear una mala respuesta, y registra X-Balance-USD después de las llamadas para que el crédito nunca se agote sin que te des cuenta. Configura una alerta cuando el balance baje por debajo de unos días de gasto.
Cuando el tráfico shadow se vea bien, sube la parte en pasos y mantén válida la clave del proveedor anterior por una semana. Para cualquier cosa que involucre contenido para adultos, el modelo está pensado para uso adulto legal, y el contenido sexual que involucre menores de edad siempre es rechazado. Los prompts no se usan para entrenamiento.
Las cuentas nuevas pueden reclamar $0,50 de crédito de prueba con un solo clic en la página de clave de API, válido por 7 días, lo cual es suficiente para ejecutar toda la lista de verificación con una muestra de tu tráfico.
Más guías
Preguntas frecuentes
¿Funcionará mi código existente del SDK de OpenAI?
Para completados de chat y respuestas, sí. Cambia la Base URL, la clave y el nombre del modelo. Las llamadas a embeddings, imágenes, audio o fine-tuning no funcionarán.
¿La calidad de la respuesta es la misma que la de los modelos de OpenAI?
No, es un modelo de pesos abiertos diferente. Prueba tus propios prompts en lugar de asumir paridad en ninguna dirección.
¿Cómo hago un rollback si algo falla?
Mantén la Base URL, la clave y el modelo en la configuración y mantén activa la clave de tu proveedor anterior. Volver atrás es entonces solo un cambio de configuración.
¿Admite llamadas a funciones?
Sí. Usa herramientas y tool_choice, y devuelve los resultados como mensajes con role tool. Se admiten tool_calls en streaming.
La generación de claves requiere solo un formulario
Regístrate, copia tu clave y actualiza tu Base URL. Eso es toda la configuración necesaria.