Usar LangChain con Ollama para crear un Agente IA Tools

Tiempo de lectura: 2 minutos

Hoy vamos a aprender mediante un pequeño ejemplo cómo conectar LangChain a nuestro servidor Ollama desplegado para hacer por ejemplo un IA Tools.

Chaing - Pexels

Primero debemos tener Ollama desplegado: aquí te explico cómo.

Una vez despelgado Ollama, obtenemos el endpoint y vamos a usar LangChain con Python para conectarnos a él remotamente.

Obtener la Dirección del Servidor Ollama

Necesitas la dirección completa donde tu servidor Ollama está escuchando.

  • Dirección (URL): Usualmente es http://<IP_del_servidor>:<puerto>.
  • Puerto: El puerto por defecto de Ollama es 11434.

Asegúrate de que:

  • El firewall del servidor remoto permite el tráfico entrante al puerto 11434 desde la IP pública de Colab (aunque las IPs de Colab cambian, por lo que a veces es necesario abrir el puerto a todo internet temporalmente, lo cual tiene implicaciones de seguridad).
  • El servicio Ollama en el servidor remoto esté configurado para escuchar en una interfaz pública (no solo localhost o 127.0.0.1). Esto se logra típicamente configurando la variable de entorno OLLAMA_HOST a la IP pública del servidor o a 0.0.0.0.

Configurar LangChain

Instalamos la librería:

pip install langchain langchain-community langchain-core

Configurar la URL de Ollama: Importa la clase Ollama y especifica la URL de tu servidor usando el parámetro base_url.

from langchain_community.llms import Ollama
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser

# ⚠️ PASO CRÍTICO: Reemplaza con la dirección IP/dominio y puerto de tu servidor Ollama
OLLAMA_SERVER_URL = "http://TU_IP_O_DOMINIO:11434"
MODEL_NAME = "llama3.2:3b" # Asegúrate de que este modelo esté descargado en tu servidor

# 1. Inicializar el LLM con la URL del servidor remoto
try:
    llm = Ollama(
        model=MODEL_NAME,
        base_url=OLLAMA_SERVER_URL,
        temperature=0.7 # Opcional: para respuestas deterministas
    )
    print(f"Conectado a Ollama en: {OLLAMA_SERVER_URL}")

except Exception as e:
    print(f"Error al inicializar la conexión. Revisa la URL y la accesibilidad del servidor. Detalle: {e}")
    # Si la conexión falla aquí, el problema es de red (firewall o OLLAMA_HOST mal configurado)

Probar la Conexión

from langchain_core.messages import HumanMessage

messages = [
    HumanMessage(content="¿Cuál es la capital de Alemania?")
]

print("Enviando consulta al servidor Ollama remoto...")

try:
    response = chat_model.invoke(messages)
    print("\n--- Respuesta del Servidor Remoto ---")
    print(response.content)
    print("-------------------------------------")

except Exception as e:
    print(f"\n--- ERROR DE CONEXIÓN ---")
    print(f"No se pudo conectar al servidor. Verifica la IP/Puerto y el firewall. Error: {e}")
    print("-------------------------")

Si la conexión es exitosa, verás la respuesta generada por el modelo en tu servidor remoto. Si falla, el problema casi siempre está relacionado con el firewall o la configuración de OLLAMA_HOST en tu servidor remoto.

Deja un comentario