Ollama: Modelos locales de IA

Cómo crear un ChatGPT en nuestro sistema local


Hoy en día, todos conocemos ChatGPT. Sin embargo, debemos ser conscientes que tanto ChatGPT como otros productos como Gemini, Claude o Grok, por citar algunos, son modelos de IA (LLM) basados en Cloud.

¿Qué quiere decir que están basados en Cloud? Pues que realmente estamos usando un servicio de una empresa, y por lo tanto, estamos enviando nuestra información a dicha empresa. En muchas empresas esto es un tema bastante delicado, ya que trabajan con datos sensibles, o incluso es ilegal enviar esos datos a estas compañías.

¿Qué es Ollama?

Ollama es una aplicación que sirve como cliente y centro neurálgico para el uso de modelos LLM de inteligencia artificial. Lo que hace es centralizarlo todo, y permitir la carga de modelos, así como interactuar con ellos.

Para instalar Ollama, basta con descargarla desde su página de descargas, que está disponible tanto para Windows, para Mac como para Linux.

Interfaz gráfica visual

Una vez instalado, en la bandeja del sistema tendremos una interfaz de usuario muy similar a la de ChatGPT, donde podemos gestionar las conversaciones con nuestros modelos de Inteligencia Artificial.

Cliente de Ollama

Observa que en la parte inferior, podemos seleccionar el modelo que queremos utilizar, e incluso descargarlo si no lo tenemos instalado (aparece un icono de descarga al buscarlo). En el siguiente apartado veremos más sobre estos modelos.

Interfaz CLI (terminal)

Otra de las formas de utilizar Ollama es a través de la línea de comandos o terminal. Es menos visual que el anterior, pero muchas veces es más práctico y rápido. Para ver que modelos tenemos instalados, simplemente escribimos ollama list:

$ ollama list
NAME                  ID              SIZE      MODIFIED
gemma3:270m           e7d36fb2c3b3    291 MB    2 days ago
qwen3:0.6b            7df6b6e09427    522 MB    13 days ago
gemma3:12b            f4031aab637d    8.1 GB    2 weeks ago
deepseek-r1:8b        6995872bfe4c    5.2 GB    2 weeks ago
llama3.2:3b           a80c4f17acd5    2.0 GB    10 months ago

Para descargar los modelos, escribimos ollama pull nombre:tamaño o ollama run nombre:tamaño, donde nombre podría ser gemma3 y tamaño 270m, por ejemplo. En el caso del comando pull sólo descarga el modelo, y en el caso del comando run lo descarga y ejecuta, pidiéndote un prompt.

Recuerda que al principio no tenemos ningún modelo en nuestro sistema, por lo que tenemos que descargarlo.

Una vez hemos llegado a este punto, necesitamos descargar un modelo LLM para utilizar junto a nuestro cliente Ollama.

Modelos LLM locales

Existen muchísimos modelos LLM locales. Ollama dispone de una web donde puedes buscar los últimos modelos publicados. Puedes organizarlos por popularidad, recientes o filtrar por tipos de modelos, donde actualmente se encuentran:

  • Embedding: Convierte texto en vectores. Útil para recomendaciones, clasificaciones, búsquedas...
  • Tools: Permiten interactuar con funciones externas (API, BDD, etc...)
  • Thinking: Permiten procesos de razonamiento, explicando paso a paso.
  • Vision: Permiten leer y describir imágenes.

Existen muchos modelos, subidos por diferentes empresas, donde cada uno de esos modelos tiene diferentes tamaños indicados por un número 1B, 2B, 4B... Ese número es la cantidad de parámetros del modelo (1B = mil millones de parámetros). Cuantos más parámetros, más complejo es el modelo, más calculos puede hacer y más recursos necesita.

Modelos de IA (LLM)

Observa que hay 4 categorías principales:

  • 🟩 Modelos mini: De 270M a 4B. Ideales para móviles o sistemas pequeños.
  • 🟨 Modelos pequeños: De 4B a 14B. Modelos domésticos, opción equilibrada actual.
  • 🟧 Modelos medianos: De 14B a 70B. Modelos que requieren muy buen hardware para poder usarlos.
  • 🟥 Modelos grandes: Mayores a 70B. Modelos muy potentes con requisitos gigantescos de hardware.

Aproximadamente, un modelo de 1.5B ocupará alrededor de 1GB de tamaño.

Requisitos para usar modelos LLM

Para utilizar modelos LLM locales, generalmente necesitamos un buen hardware en nuestra máquina, ya que deben cargarse en memoria y son bastante exigentes respecto a recursos, especialmente respecto a GPU (procesamiento de tarjeta gráfica).

En la siguiente tabla se puede observar un resumen aproximado, para saber de forma orientativa, la máquina que necesitaríamos para utilizar un modelo LLM de dicha categoría y que funcione relativamente rápido.

Requisitos para usar Ollama y modelos LLM locales

Esto no significa que no puedas usar un modelo de 🟨 8B en una máquina con 4GB de GPU y 8GB de RAM. Sin embargo, lo más probable es que resulte tan lento que su uso sea incómodo e inviable.

Probando el modelo LLM

Una vez has elegido un modelo, por ejemplo, vamos a elegir el modelo gemma3 en su tamaño 1B. Podemos utilizar tanto la interfaz gráfica como la de terminal. En esta última, con ollama run podemos abrir una sesión con nuestro modelo LLM:

$ ollama run gemma3:1b
>>> Send a message (/? for help)

Ahora sólo tenemos que escribir nuestro prompt y el modelo LLM responderá:

$ ollama run gemma3:1b
>>> Cuéntame un chiste
¡Claro! Aquí va uno:

¿Qué le dice un semáforo a otro?

"¡No me mires, me estoy cambiando!"

¿Te gustó? 😊

>>> Send a message (/? for help)

Recuerda que el tamaño del modelo es determinante en la calidad de los resultados. También, lo detallado que esté el prompt, junto a lo bien descrito, la cantidad de información proporcionada, el modelo LLM utilizado y un largo etcétera determinarán la calidad de las respuestas.

Recuerda también que el CLI de Ollama puede tener cacheado el input, por lo que te puede devolver exactamente la misma respuesta a los mismos (o similares) prompts enviados.

API de Ollama

Además de esto, Ollama dispone de una API mediante la cuál podemos enviar prompts y obtener el resultado que nos devuelve el modelo, permitiendo configurar todos sus parámetros.

Llamando a Ollama con una API

Observa que en nuestro caso, estamos escuchando al modelo en http://localhost, ya que es nuestra propia máquina donde tenemos instalada Ollama, a través del puerto 11434 (llama) y el endpoint /api/generate.

Veamos otro ejemplo más:

const URL = "http://localhost:11434/api/generate";

const options = {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({
    model: "gemma3:1b",
    prompt: "¿Qué es Interstellar?",
    stream: false
  })
};

const data = await fetch(URL, options).then(res => res.json());
console.log(data);
$ node index.js
{
  model: 'gemma3:1b',
  created_at: '2025-08-19T15:32:59.0367559Z',
  response: '"Interstellar" es una película de ciencia ficción de 2013 dirigida por Christopher Nolan, que fue un éxito de crítica y taquilla, y que se ha convertido en un evento cultural. Aquí te explico de qué trata:\n' +
    '\n' +
    '**En esencia, la historia se centra en:**\n' +
    '\n' +
    '* **La misión de una tripulación de la NASA a través de un agujero de gusano:** La película se desarrolla en un futuro lejano, donde la Tierra se ha convertido en un planeta inhabitable debido a la sequía y la amenaza de un impacto meteorítico. La tripulación, liderada por Cooper, es enviada a través de un agujero de gusano para encontrar una posible solución al problema.\n' +
    ...,
  done: true,
  done_reason: 'stop',
  context: [
       105,   2364,    107, 237665,  24338,   1115,   4471,  67877,
    236881,    106,    107,    105,   4368,    107, 236775,   3845,
     67877, 236775,   1115,   1985,  53096,    569,  72606, 221233,
       569, 236743, 236778, 236771, 236770, 236800, 119518,   1839,
     28572,  85635, 236764,    929,   9759,    723,  53453,    569,
    102001,    570,   5787, 127001, 236764,    570,    929,    636,
       678, 102108,    696,    723,  35466,   9226, 236761,  52147,
       926,   2049,   2486,    569,  15300,  33283, 236787,    108,
      1018,   2730, 167698, 236764,    759,  21989,    636,  95344,
       696,  53121,    108, 236829,   5213,   4967, 107994,    569,
      1985,   7946,  52932,    569,    759,  26289,    496,  20600,
       569,    723, 137017,   2304,    569, 116892,   3173,  53121,
      2774,  53096,    636, 126242,
    ... 638 more items
  ],
  total_duration: 5686811500,
  load_duration: 60881000,
  prompt_eval_count: 15,
  prompt_eval_duration: 145302400,
  eval_count: 726,
  eval_duration: 5478455700
}

Por aquí tienes la documentación de la API de Ollama, para conocer que otros parámetros puedes utilizar o como puedes sacarle más partido.

¿Quién soy yo?

Soy Manz, vivo en Tenerife (España) y soy streamer partner en Twitch y profesor. Me apasiona el universo de la programación web, el diseño y desarrollo web y la tecnología en general. Aunque soy full-stack, mi pasión es el front-end, la terminal y crear cosas divertidas y locas.

Puedes encontrar más sobre mi en Manz.dev