Skip to content
This page has been auto-translated and may contain errors.View in English

Ejecutar proyectos de modelos de código abierto localmente ​

Usa esta página para ejecutar un proyecto Modelos de Código Abierto extraído en tu computadora. El módulo tiene dos tipos de proyecto. Uno ejecuta un modelo de detección de objetos dentro de tu navegador con Transformers.js y necesita un ajuste agregado antes de que se cargue. El otro es un pequeño servidor Express que envía tu pregunta a un modelo en ejecución en Ollama, y su package.json necesita una reparación. Ninguno requiere una clave API.

Lo que necesitas primero ​

Instala una versión LTS compatible de Node.js. Se recomienda Node 24 e incluye npm. Si Node y npm son nuevos para ti, Ejecutar el código localmente te guía en la instalación y verificación de ambos.

Verifica que ambos comandos funcionen. Tus números de versión pueden ser diferentes:

bash
$ node --version
v24.18.0
$ npm --version
11.18.0

El proyecto del navegador también necesita una conexión a internet la primera vez que se carga, porque la página descarga aproximadamente 20 MB de archivos de biblioteca y modelo.

El proyecto de Ollama también necesita Ollama y su modelo mistral, una descarga de aproximadamente 4.4 GB. Comienzas esa descarga en la sección de Ollama más abajo.

JunoLo que necesitas primero Instala Node.js LTS, que incluye npm, y verifica que node --version y npm --version ambos impriman una versión.

No necesitas una clave API para ninguno de los proyectos. Si index.js comienza con import ollama, instala la app Ollama también.

JunoLo que necesitas primero Ambos proyectos ejecutan el modelo en tu propia máquina, por eso no hay clave. El proyecto del navegador descarga su modelo en la pestaña; el proyecto de Ollama le pregunta a un programa separado, Ollama, que mantiene el modelo en tu disco.
JunoLo que necesitas primero Las dos descargas difieren por dos órdenes de magnitud: aproximadamente 10 MB de pesos cuantificados para el modelo del navegador contra aproximadamente 4.4 GB para mistral, que también necesita varios gigabytes de memoria libre mientras Ollama lo ejecuta.

Identifica el proyecto que extrajiste ​

Abre una terminal en la carpeta extraída. Es la que contiene package.json e index.js:

bash
$ cd path-to-your-extracted-project

Abre index.js y lee su primera línea. El proyecto del navegador, Modelos de IA en el Navegador con Transformers.js, comienza con:

js
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@xenova/[email protected]'

El proyecto de Ollama, Descargar y Ejecutar Modelos de IA en tu Computadora con Ollama, comienza con:

js
import ollama from "ollama";

El proyecto del navegador también tiene index.html y una foto road.jpeg; el proyecto de Ollama no tiene ninguna. Sigue solo la sección del proyecto que tienes.

JunoIdentifica el proyecto que extrajiste Abre index.js y mira la primera línea. @xenova/transformers significa el proyecto del navegador; ollama significa el proyecto de Ollama.

Luego ve solo a la sección de ese proyecto. Las dos configuraciones no se mezclan.

JunoIdentifica el proyecto que extrajiste Ambos archivos package.json son idénticos excepto por sus líneas de nombre y descripción: cada uno inicia Vite. Eso es correcto para la página del navegador e incorrecto para el servidor de Ollama, que es un programa Node sin página en absoluto.
JunoIdentifica el proyecto que extrajiste La reparación para el proyecto de Ollama reemplaza Vite con node index.js. Aplicado al proyecto del navegador, Node se detiene en la primera línea con ERR_UNSUPPORTED_ESM_URL_SCHEME, porque no puede importar un módulo desde una dirección https:.

Ejecuta el proyecto Transformers.js ​

Instala los paquetes:

bash
$ npm install

npm termina reportando cuántos paquetes agregó.

Antes de iniciarlo, cambia una línea en index.js. Cuando la página se carga, Transformers.js primero busca los archivos del modelo en el mismo servidor que la página, bajo /models/. Vite responde cualquier dirección que no conoce con la página misma, así que la biblioteca recibe HTML donde esperaba la configuración del modelo, y la página se queda en Cargando modelo... para siempre. Un ajuste le dice a Transformers.js que salte esa verificación local y descargue el modelo desde Hugging Face directamente.

Cambia la primera línea de:

js
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@xenova/[email protected]'

a estas dos líneas:

js
import { pipeline, env } from 'https://cdn.jsdelivr.net/npm/@xenova/[email protected]'
env.allowLocalModels = false

Inicia el servidor de desarrollo:

bash
$ npm start

Vite puede imprimir primero una advertencia que comience con (!) Your Vite config uses features. No detiene la app. Debajo, Vite imprime la dirección a abrir:

text
  VITE v8.3.4  ready in 99 ms

  ➜  Local:   http://localhost:5173/

Abre la dirección exacta Local. La página muestra Cargando modelo... encima de un botón Detectar Objetos deshabilitado mientras la biblioteca y el modelo descargan. Cuando el estado cambia a Listo, selecciona Detectar Objetos. Después de unos segundos (hasta aproximadamente veinte en una máquina más lenta) el estado dice ¡Hecho! y aparecen cuadros etiquetados en la foto, como bus: 99%, auto: 97% y varios semáforos. Las cargas posteriores son más rápidas porque el navegador mantiene los archivos descargados.

Si el estado se queda en Cargando modelo... o nunca aparece, abre las herramientas de desarrollador de tu navegador (F12, o Cmd+Option+J en Chrome en una Mac) y lee la pestaña Console; la solución de problemas debajo coincide con cada mensaje. Un 404 rojo para favicon.ico es inofensivo.

Detén el proyecto con Ctrl+C.

JunoEjecuta el proyecto Transformers.js Ejecuta npm install, agrega env y la línea env.allowLocalModels = false al principio de index.js, luego ejecuta npm start y abre la dirección Local.

Espera a que diga Listo, luego selecciona Detectar Objetos. Cuadros con etiquetas en la foto significan que el modelo funciona.

JunoEjecuta el proyecto Transformers.js Vite sirve solo tus archivos: index.html, index.js y la foto. La biblioteca viene de jsDelivr y el modelo de Hugging Face, ambos directamente en el navegador, que luego ejecuta la detección en la foto que Vite sirvió.
JunoEjecuta el proyecto Transformers.jsenv.allowLocalModels está activado por defecto en Transformers.js 2.8.0. La reserva de Vite responde /models/Xenova/yolos-tiny/config.json con 200 e index.html, así que la biblioteca nunca ve un 404 que la enviaría a Hugging Face; en cambio falla al analizar el HTML como JSON.

Repara y ejecuta el proyecto Ollama ​

Instala Ollama y ábrelo. En macOS y Windows la app inicia el servicio local de Ollama; en Linux el instalador lo configura. Si los comandos ollama dicen que no pueden conectar, ejecuta ollama serve en otra terminal y déjala corriendo.

Descarga el modelo que el código de la lección solicita. Son aproximadamente 4.4 GB, así que puedes hacer las ediciones debajo en otra terminal mientras se descarga:

bash
$ ollama pull mistral
$ ollama ls

El segundo comando debería listar mistral:latest.

Ahora el proyecto mismo. Su package.json fue generado para una página web Vite: npm start ejecuta Vite y el único paquete listado es Vite. Pero index.js es un servidor Node que importa express y ollama. Como se descargó, npm start inicia Vite, y la dirección que imprime muestra HTTP ERROR 404, porque no hay página que servir.

Haz dos ediciones en package.json: agrega "type": "module" y cambia el script start a node index.js. La parte superior del archivo entonces dice:

json
{
  "name": "Scrim-s06c53f",
  "description": "https://scrimba.com/ai-engineer-path-c02v/~07uj",
  "type": "module",
  "scripts": {
    "start": "node index.js",
    "dev": "vite",

Deja el resto del archivo como está. "type": "module" le dice a Node que index.js usa import; sin esto, Node sigue ejecutando el archivo pero imprime una advertencia MODULE_TYPELESS_PACKAGE_JSON primero.

Instala los dos paquetes que index.js importa, luego inicia el servidor:

bash
$ npm install express ollama
$ npm start

El servidor imprime:

text
Server is running on port 3000

Abre http://localhost:3000/. La página debería decir:

text
Ask something via the `?question=` parameter

Pregunta solo después de que ollama pull haya terminado. Luego hazle al modelo una pregunta:

text
http://localhost:3000/?question=Why%20is%20the%20sky%20blue%3F

La respuesta aparece como texto plano una vez que Mistral ha terminado de escribirla. La primera respuesta es la más lenta, porque Ollama carga el modelo en memoria primero; la página no muestra nada hasta entonces.

Detén el servidor con Ctrl+C. Ollama sigue corriendo en el fondo hasta que cierres la app o detengas ollama serve.

JunoRepara y ejecuta el proyecto Ollama Ejecuta ollama pull mistral y mantén Ollama abierto. En package.json, agrega "type": "module" y cambia el script start a node index.js.

Luego ejecuta npm install express ollama y npm start, y abre la dirección de pregunta. Una primera respuesta lenta es normal.

JunoRepara y ejecuta el proyecto Ollama Dos programas cooperan: tu servidor Express en el puerto 3000 recibe la pregunta, y el paquete ollama la envía al servicio Ollama en el puerto 11434, que ejecuta mistral. Express nunca inicia Ollama, así que ambos deben estar corriendo.
JunoRepara y ejecuta el proyecto Ollamanpm install express ahora instala Express 5, que captura la llamada rechazada de ollama.chat en la ruta async y responde con una página 500 en lugar de fallar. Su callback app.listen también se ejecuta cuando el puerto está en uso, así que el mensaje de inicio solo no prueba que el servidor está escuchando.

Solución de problemas ​

La página de Transformers.js se queda en Cargando modelo... y la consola dice Unexpected token '<', "<!DOCTYPE "... is not valid JSON: Falta la línea env.allowLocalModels = false, o env no está en la importación. Agrega ambos como se muestra arriba y recarga la página.

La página muestra solo un botón Detectar Objetos deshabilitado sin estado encima, y la consola menciona cdn.jsdelivr.net: La biblioteca no pudo descargar. Un bloqueador de contenido o una red restringida suele ser la causa; permite cdn.jsdelivr.net o intenta otra red.

La página se queda en Cargando modelo... y la consola dice Failed to fetch para huggingface.co: El modelo no pudo descargar. Permite huggingface.co en tu bloqueador de contenido o red, luego recarga.

En el proyecto de Ollama, npm start imprime VITE y su dirección muestra HTTP ERROR 404: El script start sigue ejecutando Vite. Cámbialo a node index.js.

Node dice Cannot find package 'ollama' o Cannot find package 'express': Ejecuta npm install express ollama en la carpeta que contiene package.json.

La dirección de pregunta muestra TypeError: fetch failed, y la terminal muestra ECONNREFUSED 127.0.0.1:11434: Express está corriendo pero Ollama no. Abre la app Ollama o ejecuta ollama serve, luego pregunta de nuevo.

La dirección de pregunta muestra un error diciendo que el modelo mistral no se encuentra: Ollama está corriendo sin el modelo. Ejecuta ollama pull mistral y espera a que termine.

npm start imprime Server is running on port 3000 y luego vuelve al prompt: Otro programa ya usa el puerto 3000. Detenlo, o cambia la constante port en index.js y abre la dirección coincidente.

JunoSolución de problemas Para el proyecto del navegador, lee la primera línea roja en la Console aparte de favicon.ico. Para el proyecto de Ollama, lee qué muestra la dirección de pregunta y qué imprimió la terminal. Luego coincídelo con un encabezado en negrita arriba.
JunoSolución de problemas El proyecto del navegador falla en el orden en que carga: la biblioteca desde jsDelivr, luego los archivos del modelo, luego el modelo. El proyecto de Ollama falla en el orden en que viaja una pregunta: npm start, Express, el servicio de Ollama, el modelo.
JunoSolución de problemasfetch failed con ECONNREFUSED significa que nada escucha en 11434, así que la solicitud nunca llegó a Ollama. Un error del mismo Ollama, como un modelo faltante, significa que la conexión funcionó y el servicio respondió.