Documentación
API de Ollama compatible con OpenAI
Ollama ofrece una API compatible con OpenAI para modelos locales. Así puedes llamarla con el SDK de OpenAI y usar el mismo código para acceder a Claude y GPT alojados cambiando solo base_url y model.
Ollama ejecuta modelos abiertos en tu propio equipo y los ofrece a través de una API compatible con OpenAI en http://localhost:11434/v1. Como el formato de comunicación coincide con el de OpenAI, el SDK oficial de OpenAI funciona con Ollama sin cambios; con el mismo código puedes acceder a modelos de vanguardia alojados cambiando solo la URL base.
http://localhost:11434/v1. Configura ahí el base_url del cliente de OpenAI y usa cualquier api_key como marcador de posición. Para usar Claude/GPT alojados, cambia base_url a https://api.kunavo.com/v1 y el identificador del modelo; no hace falta cambiar nada más.Qué es la API de Ollama compatible con OpenAI
Ollama es un proyecto independiente de código abierto para ejecutar localmente modelos como Llama, Qwen y Mistral. Además de su API nativa, ofrece una interfaz compatible con OpenAI, por lo que las herramientas creadas para OpenAI funcionan sin reescribirlas. Implementa los endpoints que usan la mayoría de las aplicaciones:
| Punto de conexión | Propósito |
|---|---|
POST /v1/ | Chat: el endpoint que usan la mayoría de las aplicaciones |
POST /v1/ | Completions de texto heredadas |
POST /v1/ | Embeddings para modelos locales |
GET /v1/models | Enumerar modelos descargados localmente |
Ofrece chat, completions y embeddings (además de entrada visual en modelos locales multimodales). No genera imágenes, vídeo ni audio. Kunavo implementa el mismo contrato /v1/chat/completions: esa referencia documenta cada parámetro, la estructura de los deltas de streaming y el objeto usage, e incluye una tabla de paridad línea por línea con la interfaz v1 de Ollama.
Llamar a Ollama con el SDK de OpenAI
Dirige base_url a http://localhost:11434/v1. El SDK requiere un api_key, pero Ollama local ignora su valor; pasa cualquier cadena. Establece model con un modelo que hayas descargado (por ejemplo, ollama pull llama3.2).
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1", # Ollama's OpenAI-compatible API
api_key="ollama", # required by the SDK, ignored by local Ollama
)
resp = client.chat.completions.create(
model="llama3.2",
messages=[{"role": "user", "content": "Explain quicksort in one paragraph."}],
)
print(resp.choices[0].message.content)O con curl:
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.2",
"messages": [{"role": "user", "content": "Hello, Ollama"}]
}'El mismo código, con modelos de vanguardia alojados
Ollama es ideal para el desarrollo sin conexión y para trabajos sensibles a la privacidad, pero los modelos locales están por detrás de los de vanguardia en razonamiento complejo, programación y contexto largo. Como Kunavo también es compatible con OpenAI, trasladar una llamada a un modelo alojado requiere cambiar dos líneas: base_url y el identificador del modelo:
from openai import OpenAI
client = OpenAI(
base_url="https://api.kunavo.com/v1", # only this line changes
api_key="sk-kn-...", # a real key now
)
resp = client.chat.completions.create(
model="claude-sonnet-5", # a hosted frontier model
messages=[{"role": "user", "content": "Explain quicksort in one paragraph."}],
)
print(resp.choices[0].message.content)| Ollama (local) | Kunavo (alojado) | |
|---|---|---|
| URL base | localhost: | api. |
| Se ejecuta en | Tu equipo | API administrada |
| Modelos | Modelos locales abiertos | Claude, GPT, Veo, Suno |
| Modalidades | Texto + embeddings | Texto, imagen, vídeo, audio |
| Costo | Tu hardware / electricidad | Por token, según la tarifa publicada |
| Ideal para | Desarrollo sin conexión, privacidad | Calidad de vanguardia en producción |
Cambiar mediante una variable de entorno
Un patrón habitual consiste en usar Ollama para el desarrollo local y modelos alojados en producción, seleccionados mediante una variable de entorno. El cliente y el código de la solicitud son idénticos; solo cambian base_url y el modelo:
import os
from openai import OpenAI
# One client, switched by environment. Local for dev, hosted for prod.
if os.getenv("APP_ENV") == "production":
client = OpenAI(base_url="https://api.kunavo.com/v1",
api_key=os.environ["KUNAVO_API_KEY"])
MODEL = "claude-haiku-4-5"
else:
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
MODEL = "llama3.2"
resp = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": "ping"}],
)
print(resp.choices[0].message.content)Preguntas frecuentes
¿Ollama tiene una API compatible con OpenAI?
Sí. Ollama ofrece una API REST compatible con OpenAI en http://localhost:11434/v1, con /chat/completions, /completions, /embeddings y /models. Configura el SDK oficial de OpenAI con esa base_url, pasa cualquier cadena como api_key (Ollama la ignora localmente) y establece model en un modelo descargado, como llama3.2. Los formatos de solicitud y respuesta coinciden con los de OpenAI.
¿Qué URL base usa la API de OpenAI de Ollama?
http://localhost:11434/v1 by default. Set the OpenAI client base_url to that value. If Ollama runs on another host or port, substitute it — the /v1 suffix stays.
¿Cómo cambio de Ollama a un modelo alojado?
Como ambos son compatibles con OpenAI, solo tienes que cambiar base_url y model. Sustituye http://localhost:11434/v1 por https://api.kunavo.com/v1, usa una clave sk-kn- real y establece model con un identificador de modelo alojado, como claude-sonnet-5 o claude-haiku-4-5. No hace falta cambiar ningún otro código.
¿La API de OpenAI de Ollama admite imágenes o vídeo?
La interfaz compatible con OpenAI de Ollama ofrece chat, completions y embeddings, además de entrada visual en modelos locales multimodales. No genera imágenes, vídeo ni audio. Para generar imágenes, vídeo y audio alojados mediante la misma API de estilo OpenAI, usa los endpoints /v1/images, /v1/video y /v1/audio de Kunavo.