Implementación de Chatbots con Next.js y Vercel AI SDK
Resumen
¿Cómo se integra la inteligencia artificial en Next.js con Vercel?
El ecosistema de Vercel se integra a la perfección con Next.js para facilitar la implementación de soluciones inteligentes, como chatbots, gracias a su SDK impulsado por inteligencia artificial. Si quieres empezar a trabajar con chatbots en tus aplicaciones, te ofrecemos un paso a paso para lograrlo.
¿Cuál es el primer paso para implementar un chatbot?
Antes de nada, es esencial asegurar las herramientas básicas de desarrollo. Para empezar a implementar un chatbot en tu aplicación de Next.js usando Vercel, necesitas instalar el SDK de inteligencia artificial. La instalación es sencilla y puede llevarse a cabo a través de npm con el siguiente comando:
npminstall ai
Este SDK te permitirá integrar inteligencia artificial en tus soluciones de forma rápida y efectiva.
¿Qué otros componentes son necesarios?
Además del SDK, para crear un chatbot funcional, se requiere:
Un modelo de lenguaje (LLM): En este ejemplo, utilizaremos chatgpt, para lo cual necesitarás una llave de acceso.
Un endpoint: Este debe ser implementado en tu proyecto para consumir el modelo de datos.
La interfaz: Que será la cara visible de tu chatbot para los usuarios.
¿Cómo se obtiene la llave de acceso para chatgpt?
Para obtener tu llave de acceso OpenAI y comenzar a trabajar con chatgpt, primero debes crear una cuenta de OpenAI y luego seguir estos pasos:
Dirígete a la sección API keys.
Crea una nueva llave secreta.
Una vez creada, copia esta llave y pégala en tu archivo de entorno .env dentro de tu proyecto bajo openai-key.
¿Cómo se implementa el endpoint?
Con la llave configurada, es momento de implementar el endpoint. Dentro de tu proyecto, crea una nueva carpeta dentro de app/API llamada chat, y allí un manejador de ruta road.ts:
import{OpenAI}from'openai';const openAIKey = process.env.openaiKey;// Aquí se implementa el streaming de datos usando el SDK de Vercelexportconst runtime ='edge';exportdefaultasyncfunctionhandler(req, res){const messages = req.body.messages;const response =awaitOpenAI.createCompletion({ model:'text-davinci-003', messages,}); res.json(response.data);}
Este código facilita un streaming de datos, simulando la interacción en tiempo real.
¿Cómo se crea la interfaz gráfica?
Para crear la interfaz del chatbot:
Crea una carpeta llamada chat en tu proyecto y dentro de ella un archivo page.tsx.
Define una función para representar el componente del chatbot y retorna un título junto a un componente ChatBot.
En el componente Chat, usa el hook proporcionado por el SDK para manejar la comunicación con el API de OpenAI.
¿Cuál es el último componente necesario?
Cuando tengas todo listo, habilita tu ChatBot y prueba la interacción. Usa el siguiente flujo de trabajo para la entrada y salida de datos:
Captación de mensajes del usuario.
Petición a la API de OpenAI.
Desplegar la respuesta en tiempo real.
El SDK de inteligencia artificial de Vercel simplifica este proceso significativamente, eliminando la necesidad de implementar WebSockets de manera manual.
Ya estás preparado para construir y personalizar tu chatbot con Next.js y Vercel. El aprendizaje no acaba aquí; sigue explorando y expandiendo tus habilidades en inteligencia artificial para crear aplicaciones más potentes y centradas en el usuario.
El profe realmente confunde los terminos, y con esto hace que el estudiante aprenda algo incorrecto...Creo que aca el lenguaje debiera ser preciso... mezclar terminos de AI OpenAI, AI Api, ChatGPT, Streams, etc.... Antes le perdobana los errores, pero ahora...duele escuchar. Tal vez debieran rehacer esta clase y usar conceptos correcto, mejorar el flujo, no saltarse pasos criticos.
Para esta fecha ha cambiado el codigo
en components/chat/chat.tsx
import{ useChat }from'@ai-sdk/react';```2.No olividar instalar npm i @ai-sdk/openai
3\.y para el chat/route.ts
import{ openai }from'@ai-sdk/openai';import{ streamText }from'ai';// Allow streaming responses up to 30 secondsexportconst maxDuration =30;exportasyncfunctionPOST(req:Request){const{ messages }=await req.json();const result =streamText({model:openai('gpt-4o'), messages,});return result.toDataStreamResponse();}
Antes Openai te regalaba 5usd para pruebas
Chat.tsx:
import styles from "./Chat.module.sass";
...
<main className={styles.Chat}>
Chat.module.sass:
.Chatwidth:100% margin-left: auto
margin-right: auto
// height: 100vh max-width: 32rem
padding: 6rem
display: flex
flex-direction: column
&> section
margin-bottom: auto
&> div
margin-bottom: 1rem
&> form
display: flex
&> input
border-radius:0.375rem
padding:0.5rem
color:rgb(000)&> button
border-style: solid
border-width: 2px
border-color:rgb(255255255)padding:0.5rem
border-radius:0.375rem
&> form >*+* margin-left: 1rem
no tengo saldo, :( sale caro?
gracias guido, lo revisaré
Si logras que entienda el mensaje inicial por favor házmelo saber estoy intentando de todo y no lo consigo