En el mundo del procesamiento del lenguaje natural (NLP) y la inteligencia artificial (IA), la compatibilidad entre distintas plataformas y modelos es clave para la flexibilidad y la optimización de costos. Christian Rice, en su reciente video (ver aquí), nos muestra una forma innovadora de usar modelos LLM locales y en la nube utilizando la API de OpenAI y LangChain.
Ejecutando Modelos LLM con la API de OpenAI
Gracias a las recientes actualizaciones en Ollama, ahora es posible ejecutar modelos LLM locales a través de la API de OpenAI. Esto significa que, con unos pocos ajustes en el código, podemos alternar entre un modelo en la nube y uno alojado localmente sin necesidad de modificar significativamente la infraestructura de nuestra aplicación.
Christian explica en su video que este proceso se logra con simples anulaciones de configuración, permitiendo a los desarrolladores alternar entre:
- Modelos LLM locales ejecutados con Ollama.
- Modelos serverless en la nube a través de Juntos (Together AI).
- Modelos de OpenAI mediante su API tradicional.
Esta capacidad es especialmente útil para quienes buscan una alternativa más económica o necesitan ejecutar modelos en un entorno privado sin depender de servidores externos.
Configuración y Anulación de Parámetros
Para lograr esta interoperabilidad, la configuración de la API se modifica de la siguiente manera:
- Se define la clave de API y la URL base en un archivo de entorno.
- Para OpenAI, la configuración se mantiene con la URL base predeterminada de OpenAI.
- Para Ollama, se cambia la URL base para apuntar a
localhost
, donde se está ejecutando el modelo. - Para Together AI u otros proveedores de modelos serverless, se ajusta la URL y la clave de API correspondiente.
Ejemplo de código para realizar esta transición:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1", # Cambia según el proveedor
api_key="tu_api_key"
)
response = client.chat.completions.create(
model="llama-2-7b-chat", # O el modelo alojado en la nube
messages=[{"role": "system", "content": "Eres un asistente de IA."},
{"role": "user", "content": "¿Cuál es la capital de Francia?"}]
)
print(response.choices[0].message["content"])
Compatibilidad con LangChain y Herramientas de Llamada de Funciones
Uno de los aspectos más interesantes de esta solución es que permite integrar la compatibilidad con LangChain. Si bien OpenAI y algunos modelos serverless admiten llamadas a funciones directamente, Ollama aún no soporta esta funcionalidad. Esto significa que, si necesitas herramientas avanzadas de LangChain como agentes o herramientas de llamada de funciones, debes elegir un modelo compatible.
Comparativa de Rendimiento y Costos
Opción | Ventajas | Desventajas |
---|---|---|
OpenAI | Alto rendimiento, soporte completo | Mayor costo, dependencia de la nube |
Ollama (local) | Privacidad, control total, sin costos variables | Requiere hardware potente, no soporta tool calling |
Together AI (serverless) | Bajo costo, fácil de implementar | Latencia variable, puede cambiar políticas |
Ejemplo de Aplicación: Generación de Haikus
Para demostrar la flexibilidad de este enfoque, Christian implementó un sistema que genera haikus sobre patos usando diferentes modelos LLM. Al hacer peticiones a distintos modelos, observó diferencias en la calidad de los resultados, el tiempo de respuesta y la compatibilidad con herramientas auxiliares.
Conclusión
Esta capacidad de alternar entre modelos locales y en la nube utilizando la API de OpenAI y LangChain abre muchas posibilidades para los desarrolladores de IA. Ya sea por razones de costo, privacidad o rendimiento, tener la flexibilidad de cambiar entre distintos modelos sin modificar la infraestructura principal es un avance significativo.
Para quienes deseen probar esta implementación, el código completo está disponible en el GitHub de Christian Rice: ver repositorio.
Este tipo de innovaciones seguirá evolucionando conforme los modelos de IA de código abierto se vuelvan más potentes y accesibles. Sin duda, el futuro de la IA será más flexible y personalizado que nunca.