• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Calculadora XIRR con Flujos Irregulares
      • Simulador FIRE (Financial Independence, Retire Early)
    • Negocios
      • CLV
      • Scoring
    • Herramientas
      • Formateador / Minificador de JSON
      • Conversor CSV ↔ JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Cómo usar Ollama con Node.js y TypeScript para ejecutar modelos LLM locales

febrero 19, 2025 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 6 minutos

Los modelos de lenguaje de gran tamaño (LLM, por sus siglas en inglés) como GPT-4, Llama o Phi están revolucionando la forma en que las máquinas procesan y generan texto. Son esenciales para aplicaciones como chatbots, herramientas de análisis de texto y generadores de contenido. Sin embargo, la mayoría de estos modelos se ejecutan en la nube, lo que plantea preocupaciones sobre privacidad, costes recurrentes y dependencia de terceros.

Como explicamos en una entrada anterior, aquí es donde herramientas como Ollama juegan un papel crucial. Ollama permite ejecutar modelos LLM en local, garantizando así un control total sobre los datos, eliminando la necesidad de conexiones externas y reduciendo los costes asociados a APIs.

En esta entrada, aprenderás a utilizar Ollama con Node.js y TypeScript para integrar modelos como Llama 2 o Phi en tus proyectos. Asumimos que ya tienes Ollama instalado en tu máquina; si no es así, consulta nuestra guía previa sobre instalación de Ollama. Además, explicaremos cómo extender esta configuración para crear APIs con Express.

Tabla de contenidos

  • 1 Creación de un proyecto base en Node.js
    • 1.1 Inicialización del proyecto
    • 1.2 Instalación de TypeScript
    • 1.3 Instalación del paquete de Ollama
  • 2 Configuración del cliente de Ollama en TypeScript
    • 2.1 Extensión de la conversación
  • 3 Opciones de configuración del cliente de Ollama para Node.js
    • 3.1 Nota importante
  • 4 Crear una API con Express para publicar Ollama
    • 4.1 Instalación de Express
    • 4.2 Creación del servidor con Express
    • 4.3 Prueba de la API
    • 4.4 Recursos adicionales
  • 5 Conclusiones

Creación de un proyecto base en Node.js

Antes de comenzar, asegúrate de tener instalado Node.js en tu sistema, además de Ollama. Si aún no tienes Node.js, puedes descargarlo desde su página oficial.

Inicialización del proyecto

Primero, crea una carpeta para el proyecto, que llamaremos ollama-ts-demo. Puedes hacerlo desde la interfaz gráfica de tu sistema operativo o desde la terminal ejecutando los siguientes comandos:

Nuevo test de normalidad interactivo en el laboratorio de Analytics Lane
En Analytics Lane
Nuevo test de normalidad interactivo en el laboratorio de Analytics Lane

mkdir ollama-ts-demo
cd ollama-ts-demo

Luego, inicializa un nuevo proyecto de Node.js con el comando:

npm init -y

Esto generará un archivo package.json con la configuración básica del proyecto.

Publicidad


Instalación de TypeScript

A continuación, instala TypeScript y configura el proyecto para usarlo. Ejecuta los siguientes comandos en tu terminal:

npm install typescript --save-dev 
npm install ts-node @types/node --save-dev 
npx tsc --init

Estos pasos crearán un archivo tsconfig.json, que puedes dejar con la configuración predeterminada.

Instalación del paquete de Ollama

Existe un cliente oficial en NPM para integrar Ollama fácilmente en proyectos de Node.js. Para instalarlo, ejecuta el siguiente comando:

npm install ollama

Este paquete incluye definiciones de tipos, por lo que no es necesario instalar dependencias adicionales para TypeScript. Recuerda que necesitas tener el software de Ollama instalado y configurado localmente. Si no lo has hecho, consulta nuestra guía previa sobre instalación de Ollama.

Configuración del cliente de Ollama en TypeScript

Con todas las dependencias instaladas, es momento de configurar el cliente de Ollama. Crea un archivo llamado src/index.ts y añade el siguiente código para probar el modelo:

import ollama from 'ollama';

ollama.chat({
    model: 'llama3.2',
    messages: [{ role: 'user', content: '¿Cuál es la capital de Alemania?' }],
}).then(response => {
    console.log(response.message.content);
}).catch(error => {
    console.error(error);
});

Este script se puede ejecutar utilizando ts-node o compilándolo con TypeScript y luego ejecutándolo con node. Si todo está configurado correctamente, el modelo debería responder con algo similar a:

La capital de Alemania es Berlín.

En este ejemplo, el código importa el cliente de Ollama y utiliza el método chat() para iniciar una conversación con el modelo Llama 3.2. Es importante asegurarse de que este modelo esté instalado en Ollama y que el servidor esté escuchando en el puerto predeterminado; de lo contrario, se producirá un error.

Publicidad


Extensión de la conversación

Si deseas mantener una conversación más larga, puedes agregar más mensajes al historial. A continuación, se muestra un ejemplo que incluye varias interacciones:

ollama.chat({
    model: 'llama3.2',
    messages: [
        { role: 'user', content: '¿Cuál es la capital de Alemania?' },
        { role: 'assistant', content: 'La capital de Alemania es Berlín.' },
        { role: 'user', content: '¿Cuál es la población de la capital de Alemania?' }
    ],
}).then(response => {
    console.log(response.message.content);
}).catch(error => {
    console.error(error);
});

El resultado podría ser algo como lo siguiente:

La población de Berlín, la capital de Alemania, varía según la fuente y la fecha de actualización. Sin embargo, según datos del Instituto Federal de Estadística de Alemania (Destatis), en 2020 la población de Berlín era de aproximadamente 6,7 millones de personas.

Es importante mencionar que la población de Berlín puede variar debido a factores como el crecimiento demográfico, la inmigración y la movilidad urbana. Si necesitas información más actualizada, puedo tratar de proporcionártela.

En este ejemplo, el historial de mensajes incluye tanto preguntas del usuario como respuestas previas del asistente. Esto permite al modelo contextualizar y generar respuestas más coherentes y completas.

Opciones de configuración del cliente de Ollama para Node.js

Si Ollama no se está ejecutando en la máquina local, puedes configurar el cliente para conectarse a una instancia remota. Esto se logra creando un objeto que especifique las opciones de conexión necesarias. Entre las opciones disponibles están:

  • host: Dirección del servidor de Ollama. Por defecto, se usa "http://127.0.0.1:11434".
  • fetch: Biblioteca fetch utilizada para realizar las solicitudes al servidor de Ollama.

A continuación, se muestra un ejemplo de cómo configurar el cliente para conectarse a un servidor Ollama:

import { Ollama } from 'ollama';

const ollama = new Ollama({ host: 'http://127.0.0.1:11434' });

ollama.chat({
    model: 'llama3.2',
    messages: [{ role: 'user', content: '¿Cuál es la capital de Alemania?' }],
}).then(response => {
    console.log(response.message.content);
}).catch(error => {
    console.error(error);
});

En este ejemplo, se utiliza la clase ‘O Ollama para crear un cliente configurado con la dirección del servidor, que en este caso apunta a http://127.0.0.1:11434 (localhost en el puerto predeterminado de Ollama).

Nota importante

Si tu servidor Ollama está en otra máquina o en una red diferente, simplemente cambia el valor de la opción host para que apunte a la dirección IP o dominio correspondiente. Por ejemplo:

const ollama = new Ollama({ host: 'http://192.168.1.100:11434' });

Esto es útil para configurar el cliente en un entorno distribuido o para conectar varios dispositivos a un único servidor de Ollama.

Publicidad


Crear una API con Express para publicar Ollama

Si deseas exponer la funcionalidad de Ollama como una API, puedes utilizar Express, un framework popular para Node.js. A continuación, te explicamos cómo hacerlo paso a paso.

Instalación de Express

Primero, instala la biblioteca de Express en tu proyecto ejecutando el siguiente comando:

npm install express

Creación del servidor con Express

Una vez instalado, crea un archivo llamado src/server.ts con el siguiente código:

import express, { Request, Response } from 'express';
import ollama from 'ollama';

const app = express();
app.use(express.json()); // Middleware para manejar solicitudes JSON

// Ruta para procesar consultas al modelo
app.post('/query', async (req: Request, res: Response) => {
    try {
        const messages = req.body; // Obtiene los mensajes del cuerpo de la solicitud
        const response = await ollama.chat({ model: 'llama3.2', messages });
        res.json(response.message); // Devuelve la respuesta del modelo
    } catch (error) {
        console.error(error);
        res.status(500).send('Error al consultar el modelo');
    }
});

// Inicia el servidor
app.listen(3000, () => console.log('Servidor escuchando en el puerto 3000'));

Explicación del código

  1. Configuración básica:
    • Se importa Express y la biblioteca de Ollama.
    • Se crea una instancia de la aplicación con express().
    • Se utiliza el middleware express.json() para procesar las solicitudes con formato JSON.
  2. Definición de la ruta /query:
    • La ruta escucha solicitudes HTTP POST en http://localhost:3000/query.
    • En el cuerpo de la solicitud (req.body), se envía la conversación (los mensajes).
    • El servidor utiliza el método chat() de Ollama para procesar la solicitud y devolver la respuesta del modelo.
  3. Gestión de errores:
    • Si ocurre un error al consultar el modelo, se devuelve un mensaje de error con un código de estado HTTP 500
  4. Inicio del servidor:
    • El servidor escucha en el puerto 3000 y muestra un mensaje en la consola cuando está listo.

Publicidad


Prueba de la API

Puedes probar esta API fácilmente utilizando herramientas como Postman o cURL. Por ejemplo, envía una solicitud POST a http://localhost:3000/query con un cuerpo en formato JSON similar al siguiente:

[
    {
        "role": "user",
        "content": "¿Cuál es la capital de Alemania?"
    }
]

La respuesta debería ser algo como:

{
  "content": "La capital de Alemania es Berlín."
}
Pantalla de Postman en la que se prueba la API con la pregunta y la respuesta que ha generado el modelo.
Prueba de la API desde Postman en la que se puede ver la respuesta

Recursos adicionales

Para más detalles sobre cómo trabajar con Express, te recomendamos consultar nuestra serie previa sobre este framework publicada en el blog.

Conclusiones

En esta guía, hemos explorado cómo configurar y utilizar Ollama con Node.js y TypeScript para ejecutar modelos LLM, como Llama, tanto localmente como de forma remota. También hemos aprendido a extender esta funcionalidad creando APIs con Express, lo que permite integrar la inteligencia artificial generativa en tus proyectos de manera sencilla y eficiente.

Al utilizar Ollama, obtienes control total sobre tus datos mientras aprovechas el poder de los modelos de lenguaje modernos. Esto te brinda la flexibilidad de implementar soluciones robustas que respeten la privacidad y reduzcan la dependencia de servicios externos.

Nota: La imagen de este artículo fue generada utilizando un modelo de inteligencia artificial.

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicidad


Publicaciones relacionadas

  • Nuevo test de normalidad interactivo en el laboratorio de Analytics Lane
  • Nuevo conversor de timestamp Unix en el laboratorio de Analytics Lane
  • Calculadora de Contrastes de Hipótesis: interpreta correctamente el p-valor y toma decisiones estadísticas con confianza
  • Calculadora de Tamaño del Efecto: la herramienta clave para entender cuánto importa realmente una diferencia
  • Simulador de DBSCAN: descubre cómo encontrar clusters reales (y ruido) sin fijar K
  • Conversor de Colores: convierte, compara y valida cualquier color en tiempo real
  • Analytics Lane lanza su Generador de UUIDs: identificadores únicos, seguros y listos para producción en segundos
  • 1200 publicaciones en Analytics Lane
  • Analytics Lane lanza su Conversor TIN ↔ TAE: la herramienta definitiva para entender el coste real de depósitos, préstamos e hipotecas

Publicado en: JavaScript Etiquetado como: Express, IA Generativa, Llama, LLM, TypeScript

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos

mayo 21, 2026 Por Daniel Rodríguez

De la Regresión Logística al Scorecard: La Transformación Matemática

mayo 19, 2026 Por Daniel Rodríguez

Noticias

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

mayo 18, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Creación de gráficos de barras y gráficos de columnas con Seaborn publicado el julio 18, 2023 | en Python
  • Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python) publicado el octubre 7, 2025 | en Herramientas, Productividad
  • Cómo calcular el tamaño de la muestra para encuestas publicado el septiembre 9, 2025 | en Ciencia de datos
  • Regresión de Vectores de Soporte (SVR, Support Vector Regression) publicado el diciembre 17, 2021 | en Ciencia de datos
  • pandas Eliminar las filas con valores nulos en Pandas publicado el abril 24, 2023 | en Python

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.9 (11)

Pandas: Cambiar los tipos de datos en los DataFrames

Comentarios recientes

  • bif en JSON en bases de datos: cuándo es buena idea y cuándo no
  • bif en Cómo desinstalar Oracle Database 19c en Windows
  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto