Uso de Ollama Python
Ollama proporciona un SDK de Python que nos permite interactuar con los modelos que se ejecutan localmente en el entorno de Python.
Con el SDK de Python de Ollama, se pueden integrar fácilmente tareas de procesamiento de lenguaje natural en proyectos de Python, realizar diversas operaciones como generación de texto, generación de diálogos, gestión de modelos, etc., sin necesidad de invocar la línea de comandos manualmente.
Instalación del SDK de Python
Primero, necesitamos instalar el SDK de Python de Ollama.
Se puede instalar usando pip:
pip install ollama
Asegúrate de tener Python 3.x instalado en tu entorno y de que la red pueda acceder al servicio local de Ollama.
Iniciar el servicio local
Antes de usar el SDK de Python, asegúrate de que el servicio local de Ollama esté iniciado.
Puedes usar la herramienta de línea de comandos para iniciarlo:
ollama serve
Una vez iniciado el servicio local, el SDK de Python se comunicará con el servicio local para realizar tareas como la inferencia de modelos.
Usar el SDK de Python de Ollama para inferencia
Después de instalar el SDK y de iniciar el servicio local, podemos interactuar con Ollama mediante código Python.
Primero, importa `chat` y `ChatResponse` desde la librería `ollama`:
from ollama import chat from ollama import ChatResponse
A través del SDK de Python, puedes enviar solicitudes al modelo especificado para generar texto o diálogos:
Ejemplo
from ollama import ChatResponse
response: ChatResponse = chat(model='qwen3.5', messages=[
{
'role': 'user',
'content': '¿Quién eres?',
},
])
# Imprimir el contenido de la respuesta
print(response['message']['content'])
# O acceder directamente a los campos del objeto de respuesta
#print(response.message.content)
Al ejecutar el código anterior, el resultado es:
你好!我是 Qwen3.5,是通义千问系列中最新推出的大语言模型。我具备强大的语言理解与生成能力,能协助你完成多种任务!
El SDK de Ollama también admite respuestas en streaming; al enviar una solicitud, podemos, mediante la configuraciónstream=Truehabilitar la transmisión de la respuesta.
Ejemplo
stream = chat(
model='qwen3.5',
messages=[{'role': 'user', 'content': '¿Quién eres?'}],
stream=True,
)
# Imprimir el contenido de la respuesta por bloques
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
Cliente personalizado
También puedes crear un cliente personalizado para controlar mejor la configuración de las solicitudes, por ejemplo, estableciendo encabezados personalizados o especificando la URL del servicio local.
Crear un cliente personalizado
Con `Client`, puedes personalizar la configuración de las solicitudes (como cabeceras, URL, etc.) y enviar solicitudes.
Ejemplo
client = Client(
host='http://localhost:11434',
headers={'x-some-header': 'some-value'}
)
response = client.chat(model='qwen3.5', messages=[
{
'role': 'user',
'content': '¿Quién eres?',
},
])
print(response['message']['content'])
Cliente asíncrono
Si deseas ejecutar solicitudes de forma asíncrona, puedes usar la clase `AsyncClient`, adecuada para escenarios que requieren concurrencia.
Ejemplo
from ollama import AsyncClient
async def chat():
message = {'role': 'user', 'content': '¿Quién eres?'}
response = await AsyncClient().chat(model='qwen3.5', messages=[message])
print(response['message']['content'])
asyncio.run(chat())
El cliente asíncrono admite las mismas funciones que las solicitudes síncronas tradicionales; la única diferencia es que las solicitudes se ejecutan de forma asíncrona, lo que puede mejorar el rendimiento, especialmente en escenarios de alta concurrencia.
Respuesta de streaming asíncrono
Si necesitas procesar respuestas de streaming de forma asíncrona, puedes hacerlo configurandostream=Truecomo un generador asíncrono.
Ejemplo
from ollama import AsyncClient
async def chat():
message = {'role': 'user', 'content': '¿Quién eres?'}
async for part in await AsyncClient().chat(model='qwen3.5', messages=[message], stream=True):
print(part['message']['content'], end='', flush=True)
asyncio.run(chat())
Aquí, la respuesta se devuelve de forma asíncrona por partes, y cada parte se puede procesar inmediatamente.
Métodos comunes de la API
El SDK de Python de Ollama proporciona algunos métodos comunes de API para operar y gestionar modelos.
1. Método `chat`
Genera diálogos con el modelo, enviando mensajes del usuario y obteniendo la respuesta del modelo:
ollama.chat(model='llama3.2', messages=[{'role': 'user', 'content': 'Why is the sky blue?'}])
2. Método `generate`
Se usa para tareas de generación de texto. Similar al método `chat`, pero solo requiere un parámetro `prompt`:
ollama.generate(model='llama3.2', prompt='Why is the sky blue?')
3. Método `list`
Enumera todos los modelos disponibles:
ollama.list()
4. Método `show`
Muestra la información detallada del modelo especificado:
ollama.show('llama3.2')5. Método `create`
Crea un nuevo modelo a partir de un modelo existente:
ollama.create(model='example', from_='llama3.2', system="You are Mario from Super Mario Bros.")
6. Método `copy`
Copia el modelo a otra ubicación:
ollama.copy('llama3.2', 'user/llama3.2')
7. Método `delete`
Elimina el modelo especificado:
ollama.delete('llama3.2')
8. Método `pull`
Extrae el modelo desde un repositorio remoto:
ollama.pull('llama3.2')
9. Método `push`
Envía el modelo local a un repositorio remoto:
ollama.push('user/llama3.2')
10. Método `embed`
Genera incrustaciones (embeddings) de texto:
ollama.embed(model='llama3.2', input='The sky is blue because of rayleigh scattering')
11. Método `ps`
Consulta la lista de modelos en ejecución:
ollama.ps()
Manejo de errores
El SDK de Ollama lanza errores cuando una solicitud falla o cuando surge un problema en la transmisión de la respuesta.
Podemos usar sentencias `try-except` para capturar estos errores y manejarlos según sea necesario.
Ejemplo
try:
response = ollama.chat(model)
except ollama.ResponseError as e:
print('Error:', e.error)
if e.status_code == 404:
ollama.pull(model)
En el ejemplo anterior, si el modelo `does-not-yet-exist` no existe, se lanza un error `ResponseError`; después de capturarlo, puedes optar por extraer el modelo o realizar otro procesamiento.
Otras extensiones