Integración de Ollama con Python: Ejemplos de API REST y Cliente en Python
Ejemplos Específicos Utilizando Modelos de Lenguaje Pensantes
En este artículo, exploraremos dos formas de conectar su aplicación Python con Ollama: 1. A través del API REST HTTP; 2. A través de la biblioteca oficial de Ollama para Python.
Cubriremos tanto las llamadas de chat como las de generación, y luego discutiremos cómo utilizar los “modelos de pensamiento” de manera efectiva.
Ollama se ha convertido rápidamente en una de las formas más convenientes de ejecutar modelos de lenguaje grandes (LLMs) localmente. Con su interfaz sencilla y soporte para modelos abiertos populares como Llama 3, Mistral, Qwen2.5 e incluso variantes “de pensamiento” como qwen3, es fácil integrar capacidades de IA directamente en sus proyectos de Python, sin depender de APIs en la nube externas.
🧩 Requisitos previos
Antes de comenzar, asegúrese de tener:
pip install requests ollama
Confirme que Ollama está en funcionamiento ejecutando:
ollama list
Debería ver modelos disponibles como llama3
, mistral
o qwen3
.
⚙️ Opción 1: Usar el API REST de Ollama
El API REST es ideal cuando desea un control máximo o cuando se integra 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="")
👉 El API REST de Ollama transmite respuestas línea por línea (similar al API de transmisión de OpenAI). Puede acumular contenido o mostrarlo en tiempo real para chatbots o herramientas de interfaz de línea de comandos.
Ejemplo 2: API de Generación
Si no necesita contexto de chat ni roles, utilice el endpoint más sencillo /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 endpoint es ideal para tareas de generación de texto único — resúmenes, fragmentos de código, etc.
🐍 Opción 2: Usar la Biblioteca de Python de Ollama
El cliente de Python de Ollama proporciona una interfaz más limpia para los 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 en Python que liste todos los archivos en un directorio."}
]
)
print(response['message']['content'])
Esto devuelve el mensaje final como un diccionario. Si desea transmisión, puede iterar sobre la transmisión de chat:
stream = ollama.chat(
model="llama3.1",
messages=[
{"role": "user", "content": "Escribe un haiku sobre 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 transmita el resultado:
stream = ollama.generate(
model="llama3.1",
prompt="Liste 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 soporta modelos “de pensamiento” como qwen3, diseñados para mostrar sus pasos de razonamiento intermedios. Estos modelos producen salida estructurada, a menudo en un formato como:
<think>
Pasos de razonamiento aquí...
</think>
Respuesta final aquí.
Esto los hace útiles para:
- Depurar el razonamiento del modelo
- Investigación sobre interpretabilidad
- Construir herramientas que separen pensamiento de salida
Ejemplo: Usar 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, extraer la parte "de pensamiento"
import re
thinking = re.findall(r"<think>(.*?)</think>", content, re.DOTALL)
answer = re.sub(r"<think>.*?</think>", "", content, flags=re.DOTALL)
print("🧠 Proceso de pensamiento:\n", thinking[0].strip() if thinking else "N/A")
print("\n✅ Respuesta final:\n", answer.strip())
Cuándo Usar Modelos de Pensamiento
Caso de Uso | Modelo Recomendado | Por Qué |
---|---|---|
Interpretabilidad / Depuración | qwen3 |
Ver trazas de razonamiento |
Aplicaciones sensibles al rendimiento | modo no pensante de qwen3 |
Más rápido, menos verboso |
Educacional / Explicativo | qwen3 |
Muestra lógica paso a paso |
✅ Resumen
Tarea | API REST | Cliente de Python |
---|---|---|
Generación simple de texto | /api/generate |
ollama.generate() |
Chat conversacional | /api/chat |
ollama.chat() |
Soporte de transmisión | Sí | Sí |
Funciona con modelos de pensamiento | Sí | Sí |
El diseño local-first de Ollama lo hace ideal para aplicaciones de IA seguras, fuera de línea o sensibles a la privacidad. Ya sea que esté construyendo un chatbot interactivo o un servicio de enriquecimiento de datos en segundo plano, puede integrar LLMs sin problemas en su flujo de trabajo de Python — con control total sobre modelos, latencia y datos.
Enlaces útiles
- https://pypi.org/project/ollama/
- Guía rápida de Ollama
- Guía rápida de Python
- Instalar y configurar Ollama
- Controlar LLMs con Salida Estructurada: Ollama, Qwen3 & Python o Go
- Comparación de salida estructurada entre proveedores populares de LLM - OpenAI, Gemini, Anthropic, Mistral y AWS Bedrock
- Problemas de Salida Estructurada en Ollama GPT-OSS
- Cómo maneja Ollama las solicitudes paralelas
- Prueba: Programación de asignación de memoria y modelos en la nueva versión de Ollama - v0.12.1