Integración de Ollama con Python: Ejemplos de API REST y Cliente en Python

Ejemplos Específicos Utilizando Modelos de Lenguaje Pensantes

Índice

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 and python

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:

  • Ollama instalado y ejecutándose localmente (ollama serve)
  • Python 3.9+
  • Dependencias requeridas:
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
Funciona con modelos de pensamiento

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