API de Ollama vs API de OpenAI: Endpoints y código
La pregunta sobre la API de Ollama vs API de OpenAI se reduce a dos formatos de petición y dos lugares para ejecutar un modelo. Ollama tiene su propia API nativa y también una capa compatible con OpenAI, por lo que pasar a un endpoint estilo OpenAI alojado puede implicar cambiar la URL base y la clave.


Sin tarjeta. Tras registrarte, reclama $0,50 de crédito de prueba gratis con un clic (una vez por persona).
Obtener clave de APIPuntos clave
- Ollama tiene rutas nativas bajo /api y una capa compatible con OpenAI bajo /v1; los clientes escritos para el SDK de OpenAI suelen funcionar con cualquiera de las dos.
- Ollama envía streaming de JSON delimitado por saltos de línea, mientras que el formato de OpenAI transmite eventos enviados por el servidor (SSE).
- Pasar de local a alojado significa cambiar la URL base, la clave y el nombre del modelo, no tu código.
- Local mantiene los datos en tu máquina; alojado elimina el trabajo de hardware y añade una factura por token.
La versión corta
Ambos te piden POSTear una lista de mensajes y recibir texto de vuelta. La diferencia está en la forma de la petición, dónde vive el servidor y quién paga por la GPU. Ollama ejecuta modelos en tu propia computadora y escucha en el puerto 11434. La API de OpenAI es un servicio alojado con sus propios modelos de pago. En la comparación de ollama api vs openai api, la gente a menudo pasa por alto una tercera cosa: Ollama también expone rutas compatibles con OpenAI, por lo que los dos formatos se superponen.
Ese solapamiento es lo que hace barata la migración. Si tu aplicación ya usa el SDK de OpenAI, puedes apuntarlo a Ollama local hoy y a una URL compatible con OpenAI alojada mañana. El endpoint alojado en este sitio es uno de esos. Sirve un único modelo, uncensored, en https://api.ollamansfw.com/v1, y no es un producto oficial de OpenAI, Meta ni ningún otro laboratorio.
Diferencias punto por punto
| Tarea | Ollama nativo | Estilo OpenAI |
|---|---|---|
| Chat | POST /api/chat | POST /v1/chat/completions |
| Prompt único | POST /api/generate | POST /v1/responses o chat completions |
| Listar modelos | GET /api/tags | GET /v1/models |
| Autenticación | Ninguna por defecto | Authorization: Bearer clave |
| Transmisión | JSON delimitado por saltos de línea | Eventos enviados por el servidor (SSE), finalizando con un marcador done |
| Nombre del modelo | Lo que hayas extraído, como llama3 | Lo que liste el proveedor |
Ollama también sirve /v1/chat/completions y /v1/models en el mismo puerto, lo que permite que los clientes de OpenAI funcionen contra él. Su comportamiento predeterminado para llamadas nativas es activar streaming, así que establece stream: false cuando desees una respuesta JSON única.
El endpoint alojado implementa POST /v1/chat/completions, POST /v1/responses y GET /v1/models, además de comprobaciones de saldo en GET /v1/balance. Consulta la documentación de la API para la lista completa.
La misma petición, tres formas
Ollama nativo desde Python:
import requests
r = requests.post(
"http://localhost:11434/api/chat",
json={
"model": "llama3",
"messages": [{"role": "user", "content": "Say hello in five words."}],
"stream": False,
},
)
print(r.json()["message"]["content"])El SDK de OpenAI, con configuraciones locales y alojadas lado a lado. Solo cambia la línea comentada:
from openai import OpenAI
# Local Ollama through its OpenAI-compatible layer:
# client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
# Hosted endpoint, same code from here on:
client = OpenAI(base_url="https://api.ollamansfw.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored", # local would be e.g. "llama3"
messages=[{"role": "user", "content": "Say hello in five words."}],
)
print(resp.choices[0].message.content)Y curl contra el endpoint alojado con streaming activado:
curl https://api.ollamansfw.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","messages":[{"role":"user","content":"Hello"}],"stream":true}'El análisis difiere en el lado nativo: cada línea transmitida es un objeto JSON con message.content, y la última tiene done: true. En el formato OpenAI cada evento comienza con data: , contiene un fragmento choices[0].delta.content, y el stream termina con [DONE]. Usa el SDK y nunca verás ninguno de los dos.
Cuándo tiene sentido cada uno
Ollama local es la opción adecuada cuando la privacidad es la máxima prioridad, cuando tienes una GPU con suficiente memoria para el modelo que deseas, o cuando experimentas con muchos modelos. Nada sale de tu máquina y no hay factura por token. Los costes aparecen como hardware, energía y tu tiempo. Nuestra guía sobre el uso de Ollama con una GUI cubre el lado amigable de esa ruta.
Un endpoint compatible con OpenAI alojado encaja mejor cuando te falta hardware, necesitas muchas peticiones paralelas, ejecutas un bot o servicio para otras personas, o quieres una URL estable que no dependa de que tu portátil esté despierto. Una clave completa permite 8 peticiones concurrentes y 300 peticiones por minuto. La ventana de contexto es de 100.000 tokens, que es más de lo que muchos entornos locales pueden mantener en memoria.
Un montón de gente usa ambas: local para experimentos, alojado para cualquier cosa que tenga que estar activa. Si estás sopesando otras herramientas locales, lee alternativas de software de Ollama.
Migración de Ollama local a alojado
- Pásate primero al formato OpenAI. Si tu código llama a
/api/chat, muévelo al SDK de OpenAI apuntando a la ruta/v1de Ollama. Confirma que sigue funcionando localmente. - Consigue una clave. Regístrate y reclama los $0,50 de prueba en la página de claves de API. No necesita pago y dura 7 días.
- Cambia tres valores. URL base a
https://api.ollamansfw.com/v1, clave a la tuya, modelo auncensored. - Comprueba los parámetros. Temperature, top_p, stop, seed y las penalizaciones se pasan directamente. Las opciones solo locales como
num_ctxokeep_alivede Ollama no aplican; la ventana está fijada en 100.000 tokens. - Añade lógica de reintento. La API alojada devuelve 429 con
rate_limitedoconcurrencypasado un límite, y 429 conRetry-After: 5durante sobrecarga temporal. Los servidores locales rara vez hacen eso, por lo que el código existente puede no gestionarlo.
Si algo falla tras el cambio, el artículo sobre errores comunes de la API de Ollama cubre causas frecuentes como puertos incorrectos y nombres de modelo faltantes.
Coste de lo alojado y lo que no hará
La facturación es de pago por uso con crédito prepago: $0,15 por cada 1M de tokens de entrada y $0,50 por cada 1M de tokens de salida. Un turno de chat con 1.000 tokens de entrada y 400 de salida cuesta $0,00015 + $0,0002 = $0,00035, por lo que $20 cubren aproximadamente 57.000 de estos turnos. Las peticiones fallidas o rechazadas no se cobran y el crédito no caduca. Las recargas van de $20 a $500 con bonificaciones de +5% desde $50, +10% desde $100 y +15% desde $200. El pago es solo con cripto (USDT en TRC20 o USDC en Base). Más en la página de precios.
Límites a conocer: solo texto, así que sin incrustaciones, generación de imágenes ni ajuste fino. Si dependes de incrustaciones locales, mantén esas locales. El modelo está ajustado para responder sin rechazos de contenido para uso adulto lícito. El contenido sexual que involucre menores de edad nunca está permitido. Los prompts no se usan para entrenamiento.
Más guías
Preguntas y respuestas
¿La API de Ollama es compatible con la API de OpenAI?
Parcialmente. Ollama tiene rutas nativas bajo /api y también sirve rutas estilo OpenAI como /v1/chat/completions, por lo que los clientes del SDK de OpenAI pueden hablar con él.
¿Qué cambio para pasar de Ollama local a un endpoint alojado?
La URL base, la clave de API y el nombre del modelo. Si tu código ya usa el SDK de OpenAI, no hace falta cambiar nada más.
¿La API alojada admite embeddings como Ollama?
No. Solo es generación de texto: completions de chat y respuestas, sin embeddings, imágenes ni ajuste fino.
¿Es gratuito Ollama?
El software es gratuito para descargar y ejecutar. Aún pagas por hardware y energía, mientras que una API alojada cobra por token.