Ejecutar el curso de Vercel AI SDK localmente
Usa esta página para ejecutar el agente de soporte al cliente extraído en tu computadora. Conectas su servidor Express a OpenAI y los datos de Supabase creados durante el curso, luego haces un cambio en el script de inicio para que Node cargue esos valores desde .env. La guía de Embeddings y Bases de Datos Vectoriales ejecuta un proyecto relacionado contra el mismo tipo de configuración de vectores de Supabase.
Lo que necesitas primero
Instala una versión LTS compatible de Node.js. Se recomienda Node 24. También necesitas:
- una clave de API de OpenAI con acceso a facturación y modelos;
- el proyecto de Supabase y los datos creados durante el curso;
- una clave secreta de Supabase, o la clave heredada
service_role.
Las claves secretas y service_role evitan Row Level Security. Pertenecen solo a este .env del lado del servidor, nunca en código del navegador. Ver claves de API de Supabase.
Abre e instala el proyecto
Abre una terminal en la carpeta extraída que contiene package.json, luego instala los paquetes fijados:
$ cd path-to-your-downloaded-project
$ npm cinpm ci en la carpeta extraída, la que contiene package.json. Instala exactamente las versiones de paquetes con las que se construyó el curso, así que no hay nada que configurar o adivinar aquí. Haz que Node cargue .env
Abre package.json y cambia el script de inicio de:
"start": "node server.js"a:
"start": "node --env-file=.env server.js"El código usa el nombre de variable heredado SUPABASE_SERVICE_ROLE_KEY. Puedes poner una clave secreta actual de Supabase en esa variable sin renombrar el código.
Crea .env junto a package.json:
OPENAI_API_KEY=your-openai-api-key
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_ROLE_KEY=your-server-side-secret-key
PORT=3000Crea .gitignore:
.env
node_modules/El manual de Git cubre este hábito en ignorar archivos y buenas prácticas.
Mantén la clave de Supabase en el servidor
Nunca renombres la clave de servicio con un prefijo VITE_ ni la muevas a client.js. Tiene acceso elevado a la base de datos. No hagas commit de .env ni lo compartas en un ZIP.
--env-file=.env al script de inicio, crea el archivo con los cuatro valores y mantenlo fuera de Git. La clave de Supabase se queda en el servidor, siempre. Un .gitignore con .env en él es el primer archivo que creo en cualquier proyecto, habiendo aprendido ese por la manera difícil. Mantén los modelos suministrados
El constants.js descargado usa gpt-4o para generación de respuestas y clasificación, y text-embedding-3-small para embeddings. La configuración local no requiere cambiar ninguno de los dos modelos. Mantenlos sin cambios a menos que OpenAI rechace uno para tu proyecto. Si luego reemplazas un modelo, prueba el flujo completo del agente y confirma que los nuevos embeddings de consulta siguen siendo compatibles con los vectores almacenados de Supabase. Un cambio de embedding puede fallar silenciosamente: un modelo con la misma cantidad de dimensiones pero un espacio vectorial diferente retorna coincidencias pobres sin error, así que regenera los vectores almacenados después de cambiar el modelo de embedding.
Ejecuta el agente
$ npm startAbre http://localhost:3000, o usa el puerto que configuraste en .env. Detén el servidor con Ctrl+C.
La carga de la página muestra que el servidor local se ejecuta. Haz una pregunta cubierta por los datos del curso: una respuesta útil muestra que la búsqueda de Supabase y la generación de OpenAI también funcionan. Si una respuesta falla, la terminal del servidor imprime la primera llamada que falla en la cadena: embedding, búsqueda o generación. El capítulo de RAG explica por qué el agente fundamenta sus respuestas en datos del curso recuperados en primer lugar.
npm start y abre la dirección local en tu navegador. La carga de la página prueba que el servidor se ejecuta; una respuesta completa también necesita OpenAI y los datos de Supabase del curso, así que trata esos como dos ganancias separadas. Solución de problemas
Missing OPENAI_API_KEY: Confirma que el script de inicio incluye --env-file=.env, que .env está junto a package.json, y que el nombre de variable coincide exactamente.
Error de autenticación de Supabase o relación: Confirma que la URL y la clave del servidor pertenecen al mismo proyecto, luego completa los pasos de esquema y datos del curso. No sustituyas una clave publicable para esta operación del servidor.
El puerto 3000 ya está en uso: Cambia PORT en .env, reinicia el servidor y abre el nuevo puerto.
La página carga pero las respuestas fallan: Verifica la terminal del servidor para el primer error del proveedor o base de datos. El inicio local por sí solo no valida ningún servicio externo.
.env, un error de Supabase apunta al proyecto o sus datos, y una página cargada con respuestas que fallan apunta a un servicio externo. Haz coincidir el síntoma con la capa primero, y la solución generalmente se nombra a sí misma. 
