Volver al inicio

LLM local en Python: Inicio rápido con Ollama y LiteLLM

Guía paso a paso para implementar e integrar un LLM local en Python. Usa Ollama para ejecutar modelos y LiteLLM para la interacción, sin claves API ni servicios en la nube. Ideal para desarrolladores.

LLM local en Python: Inicio rápido con Ollama y LiteLLM para Desarrolladores
Advertisement 728x90

# LLM Local en Python: Inicio Rápido con Ollama y LiteLLM para Desarrolladores

Muchos desarrolladores que se inician en el mundo de los Modelos de Lenguaje Grandes (LLM) suelen toparse con obstáculos: la necesidad de registrarse en servicios en la nube, gestionar claves API y enfrentar costos continuos por tokens. Aunque funcional, este enfoque no siempre es ideal para experimentos iniciales y desarrollo local. Este artículo presenta una alternativa efectiva: desplegar e integrar LLM directamente en tu ordenador. Te guiaremos paso a paso para configurar un entorno local usando Ollama para ejecutar modelos y LiteLLM para integrarlos en aplicaciones Python, demostrando cómo obtener tu primera respuesta significativa de tu propio LLM sin depender de servicios externos.

Ventajas del Desarrollo con LLM Local

El despliegue local de LLM ofrece varias ventajas innegables, especialmente para aprender y prototipar. En primer lugar, elimina por completo la necesidad de claves API y los costos asociados, permitiendo experimentación ilimitada. En segundo lugar, suprime la dependencia de una conexión a internet para cada solicitud, lo cual es crucial para desarrollo offline o en entornos con redes inestables. En tercer lugar, este enfoque hace que el proceso de interacción con el LLM sea altamente transparente: puedes observar cómo tu código Python se comunica con LiteLLM, que a su vez pasa la solicitud a Ollama y finalmente al modelo local. No es 'magia de IA', sino lógica de software claramente trazable, lo que simplifica enormemente la depuración y la comprensión arquitectónica. Para desarrolladores que buscan entender a fondo los mecanismos de integración de LLM, el enfoque local es el punto de partida ideal.

Ollama y LiteLLM: Componentes Arquitectónicos Clave

Antes de sumergirnos en la instalación, es crucial diferenciar las funciones de las dos herramientas principales que usaremos: Ollama y LiteLLM.

Google AdInline article slot
  • Ollama es una herramienta potente para ejecutar modelos de lenguaje grandes localmente. Actúa como un servidor que gestiona la descarga, almacenamiento y ejecución de LLM en tu ordenador, proporcionando una API unificada para acceder a ellos. En esencia, Ollama es un runtime para LLM locales, facilitando el trabajo con diversos modelos como Llama, Mistral, Qwen y otros.
  • LiteLLM es una biblioteca ligera de Python diseñada para unificar solicitudes API a diferentes proveedores de LLM. Su característica clave es ofrecer una interfaz única para interactuar tanto con servicios en la nube (OpenAI, Anthropic, Google Gemini) como con soluciones locales como Ollama. Esto significa que el código escrito para un modelo local vía LiteLLM se puede adaptar fácilmente para funcionar con proveedores en la nube con cambios mínimos.

En resumen, Ollama 'levanta' el modelo local, LiteLLM proporciona una forma estandarizada de interactuar con él desde Python, y tu código construye una aplicación completa alrededor de esto.

Instalando Ollama y Descargando un Modelo Local

Para empezar a trabajar con un LLM local, debes seguir unos pasos secuenciales.

Instalando Ollama

Primero, descarga e instala Ollama desde el sitio web oficial (ollama.com) para tu sistema operativo (Windows, macOS, Linux). Tras la instalación, verifica su correcto funcionamiento ejecutando este comando en tu terminal:

Google AdInline article slot
ollama --version

Una salida exitosa con el número de versión confirma que Ollama está listo. En Windows, asegúrate de que el icono de Ollama (🦙) aparezca en la bandeja del sistema, indicando un servicio en segundo plano activo.

Descargando un LLM Local

Ollama en sí no es un modelo, sino una plataforma para ejecutarlos. Ahora, debes descargar un modelo de lenguaje grande específico. Para nuestros fines, qwen2.5:3b es una excelente opción: es compacto pero lo suficientemente potente, funciona bien en la mayoría de portátiles y soporta el español. Inicia la descarga desde tu terminal:

ollama run qwen2.5:3b

La primera vez que lo ejecutes, el modelo comenzará a descargarse y se guardará localmente. Una vez completada la descarga, entrarás en un chat interactivo de Ollama. Prueba su funcionamiento preguntándole algo en español, por ejemplo: ¡Hola! Cuéntame en dos frases qué es Python. Si el modelo responde, has superado el principal obstáculo. Para salir del chat, usa /bye.

Google AdInline article slot

Nota: Si el rendimiento de qwen2.5:3b es insuficiente para tu hardware, prueba una versión más ligera: ollama run qwen2.5:1.5b. La lógica del código Python permanecerá igual.

Preparando tu Entorno Python

Para aislar las dependencias del proyecto, se recomienda usar un entorno virtual.

  • Crea una carpeta para el proyecto y entra en ella:

```bash

mkdir llm-chat

cd llm-chat

```

  • Inicializa un entorno virtual:

```bash

python -m venv venv

```

  • Actívalo.

* Windows: venv\Scripts\activate

* macOS / Linux: source venv/bin/activate

La activación exitosa se indicará con el prefijo (venv) en tu línea de comandos.

  • Instala la biblioteca LiteLLM:

```bash

pip install litellm

```

Ahora todos los componentes están listos para programar.

Integrando un LLM en Python: Tu Primera Solicitud

Crea un archivo llamado main.py en la raíz de tu proyecto y añade el siguiente código:

from litellm import completion
 
MODEL = "ollama_chat/qwen2.5:3b"
API_BASE = "http://localhost:11434"
 

def ask(question: str) -> str:
    response = completion(
        model=MODEL,
        messages=[
            {"role": "user", "content": question}
        ],
        api_base=API_BASE,
        request_timeout=120,
    )
    return response.choices[0].message.content
 
answer = ask("¡Hola! Escribe una frase corta sobre Python.")
print(answer)

Ejecuta el script desde tu entorno virtual activado:

python main.py

Si aparece una respuesta significativa del modelo en tu consola, has integrado con éxito un LLM local en tu código Python. Este es un momento clave, que demuestra cómo un modelo abstracto se convierte en un componente funcional de tu aplicación.

Desglose del Código de main.py

Examinemos los elementos principales de este script minimalista pero funcional:

  • from litellm import completion: Importamos la función principal completion de la biblioteca LiteLLM, diseñada para enviar solicitudes a LLM.
  • MODEL = "ollama_chat/qwen2.5:3b": Esta variable define el modelo que usamos. El prefijo ollama_chat/ le indica a LiteLLM que la solicitud debe dirigirse al servicio local de Ollama. Aquí debes especificar el nombre del modelo que descargaste (p. ej., qwen2.5:1.5b).
  • API_BASE = "http://localhost:11434": Especifica la dirección del servidor API local de Ollama. Por defecto, Ollama se ejecuta en el puerto 11434.
  • messages=[{"role": "user", "content": question}]: Esta es la estructura fundamental para interactuar con la mayoría de las API de LLM modernas. Las solicitudes se pasan como una lista de mensajes, donde cada mensaje tiene un role (p. ej., "user", "assistant", "system") y content (el texto del mensaje). Incluso para una sola pregunta, se usa esta estructura, sentando las bases para trabajar con historial de diálogo y contexto en el futuro.
  • request_timeout=120: Establece el tiempo máximo de espera para una respuesta del modelo en segundos. Los modelos locales pueden requerir más tiempo para su inicio inicial o para procesar solicitudes complejas.
  • response.choices[0].message.content: Del objeto de respuesta completo devuelto por el modelo, extraemos el texto generado directamente. El objeto response contiene mucha otra información útil que podemos explorar en partes posteriores.

Solucionando Problemas Comunes de Inicio

Durante el proceso de configuración, podrías encontrarte con diversas dificultades. Aquí tienes las más frecuentes y cómo resolverlas:

  • Problema 1: Connection refused o Failed to connect

* Causa: El servicio de Ollama no está ejecutándose o es inaccesible.

* Solución: Asegúrate de que Ollama esté activo. Verifica el icono 🦙 en la bandeja del sistema (Windows/macOS) o ejecuta ollama list en tu terminal. Si el comando responde, el servicio funciona.

  • Problema 2: Model not found

* Causa: El modelo especificado en el código no se ha descargado, o su nombre no coincide con el instalado.

* Solución: Ejecuta ollama list para ver la lista de modelos locales disponibles y corrige el nombre del modelo en la variable MODEL de main.py.

  • Problema 3: Respuesta lenta o bajo rendimiento

* Causa: El primer lanzamiento de un modelo puede ser lento por la carga en memoria, o el modelo puede ser demasiado exigente para tu hardware.

* Solución: Espera más tiempo. Cierra aplicaciones que consuman muchos recursos. Prueba una versión más ligera del modelo, como qwen2.5:1.5b.

  • Problema 4: ModuleNotFoundError: No module named 'litellm'

* Causa: El script se ejecutó fuera del entorno virtual activado donde está instalado LiteLLM.

* Solución: Asegúrate de haber activado tu entorno virtual (indicado por el prefijo (venv) en tu terminal) antes de ejecutar el script.

  • Problema 5: Problemas de codificación en PowerShell (caracteres corruptos)

* Causa: Desajuste en la codificación de la terminal.

* Solución: En PowerShell, ejecuta $OutputEncoding = [System.Text.Encoding]::UTF8 antes de correr el script.

Lecciones Clave

  • El despliegue local de LLM con Ollama y LiteLLM evita costos de API y dependencia de internet, ofreciendo control total sobre el proceso.
  • Ollama actúa como runtime para modelos locales, mientras que LiteLLM unifica la API para interactuar con ellos desde Python.
  • El primer paso implica instalar Ollama y descargar un modelo adecuado, como qwen2.5:3b.
  • El script Python usa litellm.completion para enviar solicitudes, donde MODEL apunta al modelo local vía ollama_chat/, y API_BASE especifica la dirección de Ollama.
  • Las solicitudes al LLM se pasan como una lista de mensajes con roles (role) y contenido (content), formando la base para construir sistemas conversacionales.

Conclusión y Próximos Pasos

En esta etapa, hemos implementado con éxito la integración básica de un LLM local en una aplicación Python. El modelo ha pasado de ser una tecnología abstracta a un componente manejable capaz de responder consultas directamente desde tu código. Este paso significativo abre la puerta a más experimentación y al desarrollo de aplicaciones de IA más complejas.

En la siguiente parte, transformaremos este ejemplo minimalista en un chat de consola completo, añadiendo un bucle de conversación, capacidad de entrada de usuario y preparación básica para gestionar el contexto del diálogo. Esto te permitirá pasar de preguntas puntuales a una interacción interactiva con tu LLM local.

— Editorial Team

Advertisement 728x90

Leer después