- ¿Qué es el SDK de IA de Vercel?
- AI SDK Core: generateText, streamText y generateObject
- AI SDK Tools: Llamadas a funciones y uso de herramientas
- Construyendo bucles de agente de IA con el SDK de IA de Vercel
- AI SDK React: Hook useChat e integración con Next.js
- Cómo usar Novita AI con el SDK de IA de Vercel
- Elegir un proveedor de LLM para el SDK de IA de Vercel
- Conclusión
- Preguntas Frecuentes
- Artículos recomendados
El SDK de IA de Vercel es un conjunto de herramientas en TypeScript para construir aplicaciones de IA. Maneja generación de texto, streaming, salidas estructuradas, llamadas a herramientas y bucles de agente de múltiples pasos a través de una API unificada, y funciona con cualquier proveedor importante de LLM. Si has intentado conectar OpenAI o Anthropic directamente en una aplicación Next.js y terminaste manteniendo tres implementaciones de streaming diferentes, este SDK resuelve ese problema.
Esta guía cubre las capacidades principales del SDK, cómo conectarlo a la API de LLM compatible con OpenAI de Novita AI, y dónde encajan los flujos de trabajo de agente para desarrolladores que construyen algo más que un chatbot simple.
¿Qué es el SDK de IA de Vercel?
El SDK de IA de Vercel (paquete: ai en npm) es una biblioteca de código abierto que abstrae las diferencias entre los proveedores de LLM. En lugar de aprender protocolos de streaming separados para OpenAI, Anthropic y Google, llamas a las mismas funciones generateText, streamText o generateObject y cambias de proveedor modificando una sola importación.
El SDK se presenta en dos capas:
- AI SDK Core maneja las interacciones con el modelo: generación de texto, streaming, objetos estructurados, llamadas a herramientas, embeddings y bucles de agente.
- AI SDK UI proporciona hooks de React (
useChat,useCompletion,useObject,useAssistant) además de adaptadores para Next.js, SvelteKit y Nuxt que gestionan el estado de streaming en el navegador.
También existe el paquete @ai-sdk/openai-compatible para conectar cualquier proveedor que implemente el formato Chat Completions de OpenAI, que es como se integra Novita AI.
El SDK funciona en Node.js, Deno, entornos de ejecución edge (Cloudflare Workers, Vercel Edge) y entornos de navegador.
AI SDK Core: generateText, streamText y generateObject
Instala el SDK y un paquete de proveedor:
npm install ai @ai-sdk/openai
generateText
Para completaciones no streaming — procesamiento por lotes, clasificación, generación de una sola vez:
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
const { text } = await generateText({
model: openai('gpt-4o-mini'),
prompt: 'Explica cómo funcionan los embeddings de LLM en dos oraciones.',
});
console.log(text);
streamText
Para interfaces de chat donde la latencia importa:
import { streamText } from 'ai';
import { openai } from '@ai-sdk/openai';
const result = streamText({
model: openai('gpt-4o-mini'),
messages: [
{ role: 'user', content: 'Guíame para configurar una aplicación Next.js.' },
],
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}
generateObject
Cuando necesitas salida JSON estructurada en lugar de texto sin formato — la validación del esquema se maneja automáticamente usando Zod:
import { generateObject } from 'ai';
import { openai } from '@ai-sdk/openai';
import { z } from 'zod';
const { object } = await generateObject({
model: openai('gpt-4o-mini'),
schema: z.object({
name: z.string(),
skills: z.array(z.string()),
experienceLevel: z.enum(['junior', 'mid', 'senior']),
}),
prompt: 'Genera un perfil ficticio de ingeniero de software.',
});
console.log(object.name, object.skills);
El SDK maneja la inyección del prompt del sistema necesaria para obligar al modelo a generar JSON válido y reintenta en caso de salida malformada.
AI SDK Tools: Llamadas a funciones y uso de herramientas
Las herramientas permiten que los modelos llamen a funciones externas — APIs de búsqueda, consultas a bases de datos, calculadoras — durante una generación. El parámetro tools del SDK acepta un objeto donde cada clave se convierte en una función invocable:
import { generateText, tool } from 'ai';
import { openai } from '@ai-sdk/openai';
import { z } from 'zod';
const { text, toolCalls } = await generateText({
model: openai('gpt-4o-mini'),
tools: {
getWeather: tool({
description: 'Obtener el clima actual de una ubicación',
parameters: z.object({
city: z.string().describe('Nombre de la ciudad'),
unit: z.enum(['celsius', 'fahrenheit']).default('celsius'),
}),
execute: async ({ city, unit }) => {
// Reemplazar con una llamada real a una API meteorológica
return { city, temperature: 22, unit, condition: 'soleado' };
},
}),
},
prompt: '¿Qué clima hace en Tokio ahora mismo?',
});
console.log(text);
El helper tool() proporciona inferencia de tipos desde el esquema Zod hacia los parámetros de la función execute. Sin necesidad de analizar JSON manualmente.
Llamadas a herramientas de múltiples pasos
Por defecto, generateText se detiene después de una ronda de llamadas a herramientas. Configura maxSteps para permitir que el modelo use los resultados de las herramientas en razonamientos posteriores:
const { text } = await generateText({
model: openai('gpt-4o'),
maxSteps: 5,
tools: { getWeather, searchWeb, lookupCalendar },
prompt: 'Planifica mis actividades al aire libre para este fin de semana en Berlín.',
});
El SDK maneja automáticamente el bucle de llamada a herramienta → resultado → continuación. Cada paso se expone a través de onStepFinish si necesitas visibilidad del razonamiento intermedio.
Construyendo bucles de agente de IA con el SDK de IA de Vercel
Un agente en el SDK de IA es un modelo ejecutándose en un bucle con herramientas hasta que decide que tiene suficiente información para responder. El patrón es el mismo que el de llamadas a herramientas de múltiples pasos, pero con más herramientas y un maxSteps más largo:
import { generateText, tool } from 'ai';
import { openai } from '@ai-sdk/openai';
import { z } from 'zod';
const result = await generateText({
model: openai('gpt-4o'),
maxSteps: 10,
system: 'Eres un asistente de investigación. Usa las herramientas disponibles para responder de manera exhaustiva.',
prompt: '¿Cuáles son las principales diferencias entre Llama 3.1 y Qwen3?',
tools: {
search: tool({
description: 'Buscar en la web información actual',
parameters: z.object({ query: z.string() }),
execute: async ({ query }) => searchWeb(query),
}),
summarize: tool({
description: 'Resumir una URL',
parameters: z.object({ url: z.string() }),
execute: async ({ url }) => fetchAndSummarize(url),
}),
},
onStepFinish({ stepType, toolCalls, toolResults }) {
console.log('Paso:', stepType, toolCalls?.map(t => t.toolName));
},
});
Para pipelines de agente en producción, conecta Novita AI como backend de modelo para controlar costos y rendimiento a escala — cubierto en la siguiente sección.
AI SDK React: Hook useChat e integración con Next.js
El hook useChat gestiona el estado del chat en streaming sin código repetitivo:
// app/chat/page.tsx
'use client';
import { useChat } from 'ai/react';
export default function Chat() {
const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat({
api: '/api/chat',
});
return (
<div>
{messages.map(m => (
<div key={m.id} className={m.role === 'user' ? 'user' : 'assistant'}>
{m.content}
</div>
))}
<form onSubmit={handleSubmit}>
<input
value={input}
onChange={handleInputChange}
placeholder="Pregunta algo..."
disabled={isLoading}
/>
<button type="submit" disabled={isLoading}>Enviar</button>
</form>
</div>
);
}
El manejador de ruta correspondiente:
// app/api/chat/route.ts
import { streamText } from 'ai';
import { openai } from '@ai-sdk/openai';
export async function POST(req: Request) {
const { messages } = await req.json();
const result = streamText({
model: openai('gpt-4o-mini'),
messages,
});
return result.toDataStreamResponse();
}
toDataStreamResponse() maneja el protocolo de streaming de Vercel AI, que useChat en el cliente entiende de forma nativa. Para transmitir objetos estructurados desde una API, cambia useChat por useObject y streamText por streamObject.
Cómo usar Novita AI con el SDK de IA de Vercel
Novita AI proporciona una API compatible con OpenAI en https://api.novita.ai/v3/openai, lo que la convierte en un reemplazo directo para cualquier SDK que use el formato Chat Completions de OpenAI, incluido el SDK de IA de Vercel.
Por qué usar Novita AI con el SDK de IA
Novita AI aloja más de 70 modelos de código abierto — Llama 3.3 70B, Qwen3, DeepSeek V3, Mistral y Gemma 3 — a través de un único endpoint de API. Sin infraestructura GPU que gestionar. Para flujos de trabajo de agente, la API serverless escala desde modelos pequeños de instrucción de 7B hasta grandes modelos de razonamiento sin cambios de configuración.
Configuración
Instala el paquete de proveedor compatible con OpenAI:
npm install ai @ai-sdk/openai-compatible
Configura el proveedor:
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
const novita = createOpenAICompatible({
name: 'novita',
baseURL: 'https://api.novita.ai/v3/openai',
apiKey: process.env.NOVITA_API_KEY,
});
Esa es la configuración completa. Ahora úsalo exactamente como cualquier otro proveedor del SDK de IA:
import { generateText } from 'ai';
const { text } = await generateText({
model: novita('meta-llama/llama-3.3-70b-instruct'),
prompt: '¿Cuáles son las ventajas y desventajas entre RAG y fine-tuning para un bot de atención al cliente?',
});
El streaming funciona de la misma manera:
import { streamText } from 'ai';
const result = streamText({
model: novita('qwen/qwen3-235b-a22b-instruct-2507'),
messages: [
{ role: 'system', content: 'Eres un asistente de codificación útil.' },
{ role: 'user', content: 'Muéstrame cómo construir una API REST con FastAPI.' },
],
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}
Llamadas a herramientas con Novita AI
Los modelos que admiten function calling funcionan con la interfaz de herramientas del SDK de IA sin configuración adicional. Llama 3.3 70B Instruct y Qwen3 admiten llamadas a herramientas a través de la API de Novita:
import { generateText, tool } from 'ai';
import { z } from 'zod';
const { text } = await generateText({
model: novita('meta-llama/llama-3.3-70b-instruct'),
maxSteps: 5,
tools: {
calculator: tool({
description: 'Evaluar una expresión matemática',
parameters: z.object({ expression: z.string() }),
execute: async ({ expression }) => {
return { result: eval(expression) }; // usa un parser matemático seguro en producción
},
}),
},
prompt: '¿Cuánto es el 12% de 847, luego dividido por 3.14?',
});
Configuración del entorno
Agrega tu clave de API de Novita a .env.local:
NOVITA_API_KEY=tu_clave_api_novita_aqui
Obtén una clave en novita.ai — las cuentas nuevas incluyen créditos gratuitos para probar la API.
Sandbox de agente para cargas de trabajo de larga duración
Para tareas de agente que ejecutan código, acceden a sistemas de archivos o ejecutan flujos de trabajo de varios minutos, el Agent Sandbox de Novita AI proporciona entornos de ejecución aislados sobre la API de LLM. El SDK de IA maneja la capa de razonamiento del modelo. El sandbox maneja la ejecución con estado que no puede ejecutarse dentro de un timeout de función edge.
Elegir un proveedor de LLM para el SDK de IA de Vercel
El SDK de IA facilita el cambio de proveedores, lo cual es útil, pero vale la pena entender las ventajas y desventajas antes de elegir uno para producción.
Latencia: El tiempo hasta el primer token importa más que la velocidad total de generación para el chat en streaming. Los modelos más pequeños (8B–14B) producen primeros tokens más rápido. Los endpoints serverless de Novita AI están optimizados para baja latencia de inicio en frío en modelos abiertos.
Costo a escala: GPT-4o es excelente, pero con volúmenes de consulta altos, la brecha de precio entre un modelo frontera y un modelo abierto bien ajustado (por ejemplo, Llama 3.3 70B) se vuelve significativa. El SDK de IA te permite experimentar con ambos sin reescribir la lógica de la aplicación.
Soporte de llamadas a herramientas: No todos los modelos admiten function calling de manera confiable. Prueba tu modelo específico con tus esquemas de herramientas; el comportamiento varía entre proveedores incluso para la misma familia de modelos.
Ventana de contexto: Para RAG con muchos documentos o historiales de conversación largos, verifica los límites de contexto. Muchos modelos abiertos admiten 128K tokens, lo que cubre la mayoría de los casos de uso prácticos.
Dependencia del proveedor: La abstracción de proveedor del SDK de IA con el endpoint compatible con OpenAI de Novita AI significa que puedes cambiar de modelos o agregar un proveedor de respaldo sin tocar el código de la aplicación.
Conclusión
El SDK de IA de Vercel elimina el código repetitivo de la construcción de aplicaciones de IA — una API para generación de texto, streaming, llamadas a herramientas y bucles de agente en cualquier proveedor de LLM. Ya sea que estés construyendo una interfaz de chat en streaming con useChat, extrayendo datos estructurados con generateObject o ejecutando un agente de múltiples pasos que llama a herramientas externas, el SDK maneja la infraestructura para que puedas concentrarte en la lógica de la aplicación.
Para inferencia con modelos abiertos, la API compatible con OpenAI de Novita AI se integra directamente en el SDK a través de @ai-sdk/openai-compatible. Obtienes acceso a más de 70 modelos — Llama, Qwen3, DeepSeek, Mistral — sin gestionar infraestructura GPU, y puedes cambiar de modelos o agregar proveedores de respaldo sin tocar el código de tu aplicación.
Comienza en novita.ai — las cuentas nuevas incluyen créditos gratuitos.
Preguntas Frecuentes
¿Qué es ai sdk react?
La integración de React del SDK de IA reside en el paquete ai/react. Proporciona hooks — useChat, useCompletion, useObject, useAssistant — que conectan un frontend de React con una ruta de streaming del lado del servidor. Los hooks manejan el estado de streaming, el historial de mensajes, los indicadores de carga y el manejo de errores para que no tengas que gestionar ReadableStream en el estado del componente.
¿Qué añade ai sdk 5?
AI SDK 5 (publicado como beta a mediados de 2025) rediseñó la especificación del proveedor para mejorar la seguridad de tipos, separó la gestión del estado de la UI de la lógica de interacción con el modelo e introdujo un formato de mensaje revisado que facilita la serialización del estado de UI agéntica. Si estás comenzando un nuevo proyecto en 2026, consulta ai-sdk.dev para la última versión estable — el SDK ha seguido evolucionando a través de las versiones 6 y 7.
¿Hay documentación de ai sdk que pueda consultar?
La documentación canónica está en ai-sdk.dev. Incluye guías de configuración de proveedores, referencias de API para todas las funciones principales, tutoriales de integración con frameworks (Next.js, Nuxt, SvelteKit) y ejemplos de recetas para patrones comunes como RAG, bucles de agente y extracción estructurada.
¿Puedo usar las herramientas de ai sdk con modelos que no sean de OpenAI?
Sí. Cualquier proveedor que admita function calling funciona con la interfaz tool() del SDK de IA. Novita AI aloja varios modelos abiertos con soporte para function calling. La calidad del comportamiento varía — Llama 3.3 70B y Qwen3 son los más confiables para el uso de herramientas de múltiples pasos entre los modelos abiertos disponibles a través de la API de Novita.
¿Cuál es la diferencia entre la documentación de vercel ai sdk y la documentación de ai-sdk.dev?
Son el mismo producto. La documentación anteriormente estaba en sdk.vercel.ai y redirige a ai-sdk.dev. El SDK es mantenido por el equipo de Vercel pero es de código abierto y no está vinculado a la implementación en la infraestructura de Vercel.
¿Cómo se comparan los SDK de inteligencia artificial con llamar directamente a la API de LLM?
Las llamadas directas a la API están bien para solicitudes únicas simples. Un SDK vale la pena cuando necesitas múltiples cosas a la vez: streaming integrado en un framework de UI, bucles de llamadas a herramientas de múltiples pasos, validación de salida estructurada, cambio unificado de proveedores y manejo consistente de reintentos/errores entre proveedores. El SDK de IA maneja todo eso a nivel de biblioteca para que no tengas que reconstruirlo por proyecto.
