Integrar Ollama con Python: ejemplos de API REST y cliente en Python
+ Ejemplos Específicos Utilizando LLMs de Pensamiento
En este post, exploraremos dos formas de conectar tu aplicación Python a Ollama: 1. A través de HTTP REST API; 2. A través de la biblioteca oficial de Python de Ollama.
Cubriremos tanto las llamadas chat como generate, y luego discutiremos cómo usar eficazmente los “modelos de pensamiento”.

Ollama ha llegado rápidamente a ser una de las formas más convenientes de ejecutar modelos de lenguaje grandes (LLMs) localmente. Para ver cómo Ollama se compara con vLLM, Docker Model Runner, LocalAI y proveedores en la nube — incluyendo cuándo elegir cada uno — consulta LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared. Con su interfaz simple y soporte para modelos populares de código abierto como Llama 3, Mistral, Qwen2.5, e incluso variantes de “pensamiento” como qwen3, es fácil integrar capacidades de IA directamente en tus proyectos de Python — sin depender de APIs en la nube externas.
🧩 Requisitos previos
Antes de sumergirte, asegúrate de tener:
pip install requests ollama
Confirma que Ollama está en ejecución ejecutando:
ollama list
Deberías ver modelos disponibles como llama3, mistral o qwen3.
⚙️ Opción 1: Usando la API REST de Ollama
La API REST es ideal cuando deseas el máximo control o al integrar con marcos que ya manejan solicitudes HTTP.
Ejemplo 1: API de chat
import requests
import json
url = "http://localhost:11434/api/chat"
payload = {
"model": "llama3.1",
"messages": [
{"role": "system", "content": "Eres un asistente de Python."},
{"role": "user", "content": "Escribe una función que invierta una cadena."}
]
}
response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
if line:
data = json.loads(line)
print(data.get("message", {}).get("content", ""), end="")
👉 La API REST de Ollama transmite las respuestas línea por línea (similar a la API de transmisión de OpenAI). Puedes acumular contenido o mostrarlo en tiempo real para chatbots o herramientas CLI.
Ejemplo 2: API de generación
Si no necesitas contexto de chat ni roles, usa el punto final más simple /api/generate:
import requests
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama3.1",
"prompt": "Explica la recursión en una oración."
}
response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
if line:
print(line.decode("utf-8"))
Este punto final es ideal para tareas de generación de texto de un solo disparo — resúmenes, fragmentos de código, etc.
🐍 Opción 2: Usando la biblioteca de Python de Ollama
El cliente de Python de Ollama proporciona una interfaz más limpia para desarrolladores que prefieren permanecer completamente en Python.
Ejemplo 1: API de chat
import ollama
response = ollama.chat(
model="llama3.1",
messages=[
{"role": "system", "content": "Eres un asistente de código."},
{"role": "user", "content": "Genera un script de Python que liste todos los archivos en un directorio."}
]
)
print(response['message']['content'])
Esto devuelve el mensaje final como un diccionario. Si deseas transmisión, puedes iterar sobre el flujo de chat:
stream = ollama.chat(
model="llama3.1",
messages=[
{"role": "user", "content": "Escribe un haiku sobre la recursión."}
],
stream=True
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
Ejemplo 2: API de generación
import ollama
output = ollama.generate(
model="llama3.1",
prompt="Resuma el concepto de decoradores en Python."
)
print(output['response'])
O transmite el resultado:
stream = ollama.generate(
model="llama3.1",
prompt="Lista tres ventajas de usar Python para proyectos de IA.",
stream=True
)
for chunk in stream:
print(chunk['response'], end='', flush=True)
🧠 Trabajando con modelos de “pensamiento”
Ollama admite modelos de “pensamiento” como qwen3, diseñados para mostrar sus pasos de razonamiento intermedio. Estos modelos producen una salida estructurada, a menudo en un formato como:
</think>
Paso de razonamiento aquí...
Esto los hace útiles para:
- Depurar el razonamiento del modelo
- Investigación sobre interpretabilidad
- Construir herramientas que separen pensamiento de salida
Ejemplo: Usando un modelo de pensamiento
import ollama
response = ollama.chat(
model="qwen3",
messages=[
{"role": "user", "content": "¿Cuál es la capital de Australia?"}
]
)
content = response['message']['content']
# Opcionalmente extrae la parte de “pensamiento”
import re
thinking = re.findall(r"</think>
(.*?)`", content, re.DOTALL)
answer = re.sub(r"