Ejecutar Multimodality localmente
Usa esta página para ejecutar el proyecto de generación de imágenes extraído o el proyecto de visión extraído del curso de Multimodality en tu computadora, con tu propia clave de OpenAI. Hay tres diferencias respecto al editor de Scrimba: el paquete de OpenAI necesita actualizarse, el modelo que cada proyecto solicita ha sido descontinuado, y la clave en index.js necesita la sintaxis de Vite.
Lo que necesitas primero
Instala una versión LTS compatible de Node.js. Se recomienda Node 24 e incluye npm. Cualquier versión anterior a Node 22.12 es demasiado antigua para los paquetes que estos proyectos instalan.
Verifica que ambos comandos funcionen. Los números de versión pueden ser diferentes:
$ node --version
v24.18.0
$ npm --version
11.18.0También necesitas una clave de API de OpenAI en una cuenta con facturación configurada. Crea una clave que eliminarás cuando termines, y establece un presupuesto mensual bajo para el proyecto en el panel de OpenAI; el recuadro de peligro abajo explica por qué. Para el proyecto de generación de imágenes, OpenAI puede pedirte que verifiques tu organización en el panel antes de que sus modelos de imágenes respondan.
node --version y npm --version muestren una versión. Luego crea una clave de API de OpenAI en una cuenta con facturación, y establece un presupuesto bajo. Si tienes el proyecto de generación de imágenes, comprueba si el panel te pide verificar tu organización.
Instala los paquetes
Abre una terminal en la carpeta del proyecto extraído. Es la que contiene package.json e index.js:
$ cd path-to-your-extracted-projectInstala los paquetes del proyecto y luego reemplaza su paquete de OpenAI con el actual. La versión del curso viene de 2023, antes de que cambies a los modelos:
$ npm install
$ npm install openai@latestEl primer comando reporta added 61 packages. El segundo reporta added 1 package, removed 45 packages, changed 1 package, porque el paquete actual de OpenAI necesita muchos menos auxiliares. En una Mac, el segundo puede terminar con una advertencia allow-scripts sobre fsevents; no detiene el proyecto.
package.json, ejecuta npm install, luego ejecuta npm install openai@latest. Si npm dice que no puede encontrar package.json, estás en la carpeta equivocada.
Cambia el modelo
Abre index.js. Te dice cuál proyecto tienes: si llama a openai.images.generate, es el proyecto de generación de imágenes; si llama a openai.chat.completions.create, es el proyecto de visión. Haz solo el cambio de tu proyecto abajo.
Generación de imágenes. El proyecto solicita dall-e-3, que OpenAI ha descontinuado. Su reemplazo, gpt-image-2, devuelve la imagen como texto base64 en lugar de un enlace, así dos partes de generatePoster cambian. Cambia la solicitud de:
const image = await openai.images.generate({
model: "dall-e-3",
prompt
});a:
const image = await openai.images.generate({
model: "gpt-image-2",
prompt,
size: "1024x1024",
})Luego cambia la línea que lee la imagen de:
const imgURL = image.data[0].url;a:
const imgURL = `data:image/png;base64,${image.data[0].b64_json}`;La línea siguiente, que pone imgURL en la página, se queda como está.
Visión. El proyecto solicita gpt-4-vision-preview, que OpenAI ha descontinuado. Cambia:
model: "gpt-4-vision-preview",al modelo con capacidad de imágenes gpt-4o-mini:
model: "gpt-4o-mini",El resto de la solicitud, el texto y el enlace de la imagen, se queda como el curso lo escribió.
index.js. Para generación de imágenes, cambia el modelo, añade la línea size y cambia la línea imgURL; con la línea .url antigua, el póster se muestra como imagen rota. Para visión, cambia la línea model única. Dale al proyecto tu clave
El editor de Scrimba rellena process.env.OPENAI_API_KEY por ti. El navegador no tiene process, y Vite no crea uno, así la línea de clave cerca de la parte superior de index.js debe cambiar de:
apiKey: process.env.OPENAI_API_KEY,a:
apiKey: import.meta.env.VITE_OPENAI_API_KEY,Vite entrega al código del navegador solo las variables cuyos nombres comienzan con VITE_, por eso el nombre gana ese prefijo. Deja la línea dangerouslyAllowBrowser: true debajo como está.
Luego crea .env al lado de package.json y pon tu clave en ella:
VITE_OPENAI_API_KEY=your-openai-api-keyCrea .gitignore al lado de package.json y añade:
.env
node_modules/Una clave que llega a un repositorio de Git se queda en su historial incluso después de que elimines el archivo. El manual de Git cubre el hábito en ignoring files and good habits.
Esta clave es visible en el navegador
Vite escribe cada valor VITE_ en el código que envía al navegador, así cualquiera que abra esta página puede leer tu clave, y cada póster o descripción se carga a tu cuenta. Mantén esta versión en tu propia computadora: nunca la despliegues ni la compartas, y nunca hagas commit de .env. Una versión que publiques necesita un backend o una función serverless que mantenga la clave en el servidor.
apiKey a la forma import.meta.env y deja sola la línea debajo. Luego haz un archivo llamado .env al lado de package.json con tu clave en una línea, y lista .env en .gitignore para que Git nunca la guarde. Inicia el proyecto
Inicia el servidor de desarrollo:
$ npm startVite puede primero imprimir una advertencia que comienza con (!) Your Vite config uses features. No detiene el proyecto. Debajo, Vite imprime la dirección a abrir:
VITE v8.3.4 ready in 1825 ms
➜ Local: http://localhost:5173/Abre la dirección exacta Local. Si creas o guardas .env mientras el proyecto se ejecuta, la terminal muestra [vite] .env changed, restarting server... y la página recoge la nueva clave.
Generación de imágenes. La página se titula Film-Fusion. Escribe un título de película, elige un estilo artístico, y haz clic en Generate Poster. El formulario se borra y la caja debajo muestra Generating poster for "…" in the style of …. El póster reemplaza esa línea cuando OpenAI responde, que puede tomar un tiempo. Si la caja muestra Sorry, an error occurred while generating the poster. en su lugar, la razón está en la consola del navegador.
Visión. El proyecto envía su solicitud tan pronto como la página abre, así la página se queda en blanco mientras OpenAI mira la imagen. Cuando la respuesta llega, aparece una imagen de un edificio y la respuesta se imprime en la consola del navegador, no en la página. La consola la muestra plegada: haz clic en la flecha al lado, luego en la al lado de message, para leer content, la descripción. Cada recarga envía una nueva solicitud, y Vite recarga la página cada vez que guardas index.js.
Para leer la consola, abre las herramientas de desarrollador de tu navegador (F12, o Cmd+Option+J en Chrome en una Mac) y elige la pestaña Console. Un 404 rojo para favicon.ico es inofensivo; la solución de problemas abajo coincide con los otros mensajes.
Detén el proyecto con Ctrl+C.
npm start, ignora la advertencia de configuración si aparece, y abre la dirección Local. Para generación de imágenes, envía un título y un estilo y espera el póster. Para visión, abre la Consola y espera la respuesta. Si ninguno aparece, lee el error rojo en la Consola.
Solución de problemas
Generate Poster solo borra el formulario: La dirección gana ?art-styles=… y no aparece línea Generating poster. El código se detuvo mientras la página se cargaba, antes de que el botón se conectara; la consola dice cuál de los dos problemas siguientes es.
La consola dice process is not defined: La línea apiKey en index.js aún lee process.env. Cámbiala a la forma import.meta.env y guarda.
La consola dice Missing credentials: El navegador no tiene clave. Comprueba que .env esté al lado de package.json y que el nombre sea exactamente VITE_OPENAI_API_KEY, luego guárdalo. El mensaje sugiere OPENAI_API_KEY; mantén el nombre VITE_.
La consola dice 401 Incorrect API key provided: La clave llegó, pero OpenAI no la aceptó. Cópiala de nuevo de tu panel de OpenAI y comprueba que no haya sido eliminada.
La consola dice 429 You exceeded your current quota: La clave funciona, pero la cuenta no tiene crédito para gastar. Añade crédito bajo Billing en el panel de OpenAI, luego intenta de nuevo.
La consola menciona verificación de organización o acceso a modelo: Tu cuenta aún no puede usar el modelo de imagen. Verifica tu organización en el panel de OpenAI, espera a que surta efecto, luego intenta de nuevo.
El póster es una imagen rota: La línea imgURL aún lee .url. Cámbiala a la línea b64_json mostrada arriba.
La consola dice que el modelo no existe: Comprueba que index.js solicite gpt-image-2 o gpt-4o-mini, no el modelo antiguo. OpenAI planea dejar de servir gpt-4o-mini el 14 de enero de 2027; después, usa el reemplazo que su página de deprecations nombra.
favicon.ico, y coincídelo con un encabezado en negrita arriba. La mayoría de estos es una línea en index.js o .env que aún necesita cambiar. 
