Usa el SDK de OpenAI con Claude y Gemini
Cambia base_url y la clave para llamar a Claude, GPT y Gemini desde un mismo cliente de OpenAI en Python o Node.js, y mira dónde deja de servir el atajo.
El SDK de OpenAI es el cliente con más soporte del ecosistema, y te deja cambiar dos cosas: la URL base y la clave de API. Apúntalos a Half Off Dev y el mismo cliente puede llamar a modelos GPT, Claude y Gemini, así que cambiar de modelo es cambiar una palabra. Esta página muestra la configuración en Python y Node.js, cómo listar los modelos y, lo más importante, a qué renuncias frente a la API propia de cada proveedor.
El cambio de dos líneas
from openai import OpenAI
client = OpenAI(base_url="https://halfoff.dev/v1", api_key="ho-...")
reply = client.chat.completions.create(
model="claude-sonnet-5.5",
messages=[{"role": "user", "content": "Say hello in French."}],
)
print(reply.choices[0].message.content)Deja /v1 en la URL base aquí: el SDK de OpenAI solo añade la ruta que viene después. Las variables de entorno también funcionan: los SDK oficiales leen OPENAI_BASE_URL y OPENAI_API_KEY, así que puedes redirigir código y herramientas existentes sin editarlos.
Lista los modelos
for m in client.models.list():
print(m.id)GET https://halfoff.dev/v1/models es público y devuelve cada modelo con su precio. Usa esos ids tal cual; la lista de modelos también los muestra.
Dónde deja de servir el atajo
Chat Completions es el formato de OpenAI. Cuando lo envías a un modelo de Claude o de Gemini, la petición se convierte para ese modelo, así que las funciones que solo existen en la API del proveedor pueden descartarse o rechazarse. En la práctica:
| Quieres | Usa |
|---|---|
| Chat simple, streaming, llamada a funciones, salida JSON | El cliente de OpenAI sirve con todos los modelos |
cache_control de Claude, razonamiento extendido | El SDK de Anthropic contra https://halfoff.dev (guía) |
thinkingConfig de Gemini, entrada nativa de audio y video | El SDK de Gemini o REST (guía) |
| API Responses de GPT, Codex CLI | https://halfoff.dev/v1/responses (guía) |
Si el precio te importa, el formato nativo también: el descuento de caché de Claude necesita cache_control, que solo está garantizado en el formato de Anthropic. Caché de prompts explica la forma de cada proveedor.
Solución de problemas
401la clave no está llegando al servidor, o está mal escrita. Revisa el nombre de la variable de entorno que lee tu código.
404 que menciona el modeloel id no está en GET /v1/models. Cópialo de ahí.
404 con /v1/v1/ en la rutala URL base termina en /v1 y la herramienta lo añade otra vez. Quítalo en las herramientas que añaden /v1 por su cuenta.
402el saldo está vacío o se alcanzó un límite de gasto. Mira Facturación.
La lista completa está en Errores.
Preguntas frecuentes
¿Puedo usar el SDK de OpenAI con Claude?+
Sí. Define la URL base como https://halfoff.dev/v1, usa tu clave y pon en model un id de Claude como claude-sonnet-5.5. Para funciones exclusivas de Claude, como los controles de caché de prompts, usa en cambio el SDK de Anthropic.
¿La biblioteca de OpenAI para Python admite una URL base personalizada?+
Sí: pasa base_url al cliente o define OPENAI_BASE_URL. Lo mismo vale para la biblioteca de Node.js con baseURL.
¿Es compatible con OpenAI o es la API real?+
Ambas cosas: los formatos se sirven de forma nativa en el mismo host: Chat Completions y Responses de OpenAI, Messages de Anthropic y Gemini. Elige el que ya habla tu código.
¿Con qué modelo empiezo?+
Con un modelo mediano de cualquier proveedor; compara con la calculadora y con las guías de precios de Claude, GPT y Gemini.
¿Cuánto cuesta?+
Todos los modelos cuestan la mitad de su precio de lista oficial, facturado por token desde un saldo prepago. Crea una cuenta y genera una clave para empezar.
Una clave prepago para modelos, datos y agentes
Sin suscripción. Recarga, usa lo que necesites y ve cada cargo en tus registros.