AI

Añade un chat con IA a tu aplicación con el AI SDK, a través de Vercel AI Gateway, OpenAI o Anthropic.

Sintaxis

$ vela enable ai [--provider <gateway|openai|anthropic>]

Sin --provider se te pedirá que elijas uno. Fuera de una terminal (CI, scripts) el flag es obligatorio. Después se te pedirá la clave de API del proveedor, sin mostrarla en pantalla. Si la clave ya está en tu .env se conserva sin preguntar, y puedes dejarla vacía para añadirla más tarde.

La IA no tiene dependencias ni necesita backend: funciona en cualquier proyecto de SvelteKit con servidor. Un proyecto que se compila con @sveltejs/adapter-static se rechaza, porque un sitio estático no tiene servidor para mantener la clave en privado ni para transmitir la respuesta. vela enable backend pasa un proyecto estático a @sveltejs/adapter-node.

Qué obtienes

  • src/lib/server/ai.ts, que exporta languageModel(): el modelo configurado, o undefined mientras la clave de API esté vacía. Impórtalo desde cualquier código de servidor.
  • Un endpoint de chat con streaming en src/routes/api/chat/+server.ts. Valida la conversación, la envía al modelo con streamText y transmite la respuesta de vuelta.
  • Una página de chat de demostración en /ai, construida con la clase Chat de @ai-sdk/svelte, con respuestas en streaming, un botón para detenerlas y los errores mostrados en la propia página.
  • Un test de servidor para el endpoint en src/routes/api/chat/server.test.ts, cuando el proyecto tiene el entorno de vela test:server. Sus peticiones nunca llegan al modelo, así que pasa sin clave de API.
  • Los paquetes ai y @ai-sdk/svelte más el del proveedor, y los componentes button y textarea.
  • La clave de API del proveedor en .env.

El endpoint lee la clave de $env/dynamic/private en cada petición. Mientras esté vacía, el endpoint responde 503 con el nombre de la variable que hay que definir, y la página de demostración muestra ese mensaje. Define la misma clave en cada destino de despliegue con vela env set.

En un proyecto sin shadcn-svelte, la página de demostración usa elementos HTML simples. En un proyecto sin grupos de rutas, se crea directamente en src/routes/ai.

Proveedores

Vercel AI Gateway

$ vela enable ai --provider gateway
VariableDescripción
AI_GATEWAY_API_KEYUna clave de API de Vercel AI Gateway.

Una sola clave da acceso a los modelos de todos los proveedores principales. Los IDs de modelo tienen la forma creador/modelo, y el predeterminado es anthropic/claude-sonnet-5. El proveedor del gateway viene incluido en el paquete ai, así que no se instala nada más.

OpenAI

$ vela enable ai --provider openai
VariableDescripción
OPENAI_API_KEYUna clave de API de OpenAI, p. ej. sk-....

Instala @ai-sdk/openai. El modelo predeterminado es gpt-5.5.

Anthropic

$ vela enable ai --provider anthropic
VariableDescripción
ANTHROPIC_API_KEYUna clave de API de Anthropic, p. ej. sk-ant-....

Instala @ai-sdk/anthropic. El modelo predeterminado es claude-sonnet-5.

Quién puede usar el chat

Cada respuesta se factura a tu clave de API. Con la autenticación habilitada, el endpoint solo responde a usuarios que han iniciado sesión (401 en caso contrario) y la página de demostración queda tras el inicio de sesión, en el grupo (app). Sin autenticación, ambos son públicos, así que protege el endpoint con inicio de sesión o un límite de peticiones antes de desplegar.

Habilitar la autenticación después no cambia el endpoint. Ejecuta vela enable ai de nuevo para regenerarlo con la comprobación de sesión, y después elimina la página de demostración antigua en src/routes/(public)/ai.

Personalización

  • Modelo: cambia el ID del modelo en src/lib/server/ai.ts.
  • Instrucciones: INSTRUCTIONS, al principio del endpoint, se envía antes de cada conversación mediante la opción instructions del AI SDK. Los mensajes de sistema enviados por el navegador se rechazan.
  • Herramientas y más: las herramientas, la salida estructurada y el resto del AI SDK funcionan en el endpoint como siempre. Consulta la documentación del AI SDK.
  • Errores: en desarrollo, los errores del proveedor, como una clave incorrecta o un modelo desconocido, se muestran en el chat. En producción se quedan en el log del servidor y el chat muestra un mensaje genérico.

La página de demostración es tuya para cambiarla o eliminarla. El endpoint y languageModel() no dependen de ella.

Cambiar de proveedor

Ejecuta el comando de nuevo con otro --provider. src/lib/server/ai.ts se reemplaza, se instala el paquete del proveedor y su clave se añade a .env. El endpoint y la página de demostración también se vuelven a escribir, así que vuelve a aplicar los cambios que les hayas hecho. Elimina tú mismo el paquete y la clave del proveedor anterior.

Para quitar la IA por completo, ejecuta vela disable ai.