Saltearse al contenido

🤖 Chatbot con IASDK usando Next.js

Esta guía te ayudará a crear un chatbot simple con inteligencia artificial y una interfaz de usuario con streaming en tiempo real. ✨

  • Node.js 18+ y pnpm instalados 🟢
  • Una API key de OpenAI 🔑

Crea una nueva aplicación Next.js:

Ventana de terminal
pnpm create next-app@latest my-ai-app
cd my-ai-app

⚠️ Importante: Selecciona “sí” cuando te pregunte por App Router y Tailwind CSS.

Ventana de terminal
pnpm add ai @ai-sdk/react @ai-sdk/openai zod

Crea un archivo .env.local en la raíz del proyecto:

Ventana de terminal
touch .env.local

Agrega tu API key de OpenAI:

OPENAI_API_KEY=tu_api_key_aqui

Crea el archivo app/api/chat/route.ts:

import { openai } from '@ai-sdk/openai';
import { streamText } from 'ai';
// Permitir respuestas streaming hasta 30 segundos
export const maxDuration = 30;
export async function POST(req: Request) {
const { messages } = await req.json();
const result = streamText({
model: openai('gpt-4o'),
messages,
});
return result.toDataStreamResponse();
}

Actualiza app/page.tsx:

'use client';
import { useChat } from '@ai-sdk/react';
export default function Chat() {
const { messages, input, handleInputChange, handleSubmit } = useChat();
return (
<div className="flex flex-col w-full max-w-md py-24 mx-auto stretch">
{messages.map(message => (
<div key={message.id} className="whitespace-pre-wrap">
{message.role === 'user' ? 'Usuario: ' : 'IA: '}
{message.parts.map((part, i) => {
switch (part.type) {
case 'text':
return <div key={`${message.id}-${i}`}>{part.text}</div>;
}
})}
</div>
))}
<form onSubmit={handleSubmit}>
<input
className="fixed dark:bg-zinc-900 bottom-0 w-full max-w-md p-2 mb-8 border border-zinc-300 dark:border-zinc-800 rounded shadow-xl"
value={input}
placeholder="Escribe algo..."
onChange={handleInputChange}
/>
</form>
</div>
);
}

🏃‍♂️ Paso 6: Ejecutar la Aplicación

Sección titulada «🏃‍♂️ Paso 6: Ejecutar la Aplicación»
Ventana de terminal
pnpm run dev

Abre tu navegador en http://localhost:3000 y ¡prueba tu chatbot! 🎉

  • 🛣️ Route Handler: El archivo route.ts maneja las peticiones POST y se comunica con OpenAI
  • 🪝 useChat Hook: Simplifica el manejo del estado del chat y las interacciones del usuario
  • ⚡ Streaming: Las respuestas de la IA aparecen en tiempo real
  • 💬 Messages: Cada mensaje tiene un rol (usuario o IA) y partes que contienen el texto
  • 🔧 AI SDK: Interfaz unificada para trabajar con diferentes modelos de IA
  • 🌊 Streaming: Las respuestas aparecen gradualmente, no todas de una vez
  • 🚦 App Router: Nueva arquitectura de Next.js para mejor rendimiento