Ir al contenido

Conceptos clave: Backend vs Frontend

El Vercel AI SDK no es una librería monolítica; es un conjunto de herramientas modulares diseñadas para trabajar en armonía. Para dominarlo, debes entender la separación de responsabilidades entre el Servidor (Backend) y el Cliente (Frontend).

En el lado del servidor (tu API Route en Next.js o Endpoint en Astro), usas la librería ai para hablar con los proveedores (Google, OpenAI).

Aquí existen tres funciones reina que usarás el 90% del tiempo:

Ideal para tareas que no requieren interacción en tiempo real.

  • Uso: “Genera un resumen de este artículo”.
  • Comportamiento: El servidor espera a que la IA termine toda la respuesta antes de enviarla al cliente.
  • Retorno: Un objeto JSON simple { text: "..." }.

La joya de la corona para chatbots.

  • Uso: “Chat con un asistente”.
  • Comportamiento: Abre un canal de datos y envía la respuesta token a token (letra por letra).
  • Retorno: Un StreamData que el frontend puede leer progresivamente.

Fuerza al modelo a devolver datos estructurados, no texto libre.

  • Uso: “Extrae fecha, monto y concepto de esta factura”.
  • Comportamiento: Valida la salida contra un esquema Zod. Si el modelo falla, lo reintenta automáticamente.

En el navegador, no quieres lidiar con fetch, Streams o Decoders manualmente. Para eso existen los Hooks.

Es el hook todo-en-uno para construir interfaces tipo ChatGPT. Maneja automáticamente:

  1. El array de mensajes (messages).
  2. El input del usuario (input, handleInputChange).
  3. El envío del formulario (handleSubmit).
  4. El estado de carga (isLoading).
// Ejemplo visual de lo que hace useChat por ti
const { messages, input, handleInputChange, handleSubmit } = useChat({
api: '/api/chat', // A dónde enviar los mensajes
});

Similar a useChat, pero para autocompletado de texto simple (no conversación).

  • Uso: Un generador de descripciones de productos o correos electrónicos.

Es vital entender cómo viajan los datos cuando el usuario presiona “Enviar”:

  1. Frontend (useChat): Captura el input y lo añade optimísticamente a la lista de mensajes (para que se vea instantáneo).
  2. Red: Envía un POST request a tu endpoint /api/chat con todo el historial de la conversación.
  3. Backend (streamText): Recibe el historial, llama a Gemini, y devuelve un StreamResponse.
  4. Frontend: Lee el stream y va actualizando el último mensaje de la UI en tiempo real.

En el siguiente capítulo, pondremos esto en práctica creando nuestra primera API de Chat.