.d8888b. 888888b. 888 d8P
d88P Y88b 888 "88b 888 d8P
888 888 888 .88P 888 d8P
888 8888888K. 888d88K
888 888 "Y88b 8888888b
888 888 888 888 888 Y88b
Y88b d88P 888 d88P 888 Y88b
"Y8888P" 8888888P" 888 Y88b .ai
Bienvenido al SDK del nodo ChatBotKit. Este SDK ofrece una plataforma basada en JavaScript para crear fácilmente agentes y bots de IA conversacionales. Con ChatBotKit, puede desarrollar e implementar rápidamente robots de IA capaces de interactuar en lenguaje natural.
Este es un metarrepositorio para el SDK de ChatBotKit Node. Contiene los paquetes SDK para varias plataformas y marcos populares como React , Next.js , NextAuth y más.
El SDK de ChatBotKit Node se compone de los siguientes paquetes:
Paquete | Versión | Descripción |
---|---|---|
@chatbotkit/cli | La CLI de ChatBotKit. | |
@chatbotkit/sdk | El SDK de la API ChatBotKit. | |
@chatbotkit/reaccionar | El SDK de reacción de ChatBotKit. | |
@chatbotkit/siguiente | El SDK de ChatBotKit Next.js. | |
@chatbotkit/nextauth | El SDK de ChatBotKit NextAuth.js. | |
@chatbotkit/buscar | La implementación de búsqueda isométrica de ChatBotKit. |
Este repositorio también contiene las siguientes herramientas:
Paquete | Versión | Descripción |
---|---|---|
crear-aplicación-cbk | Una herramienta rápida para crear una nueva aplicación CBK. |
Siga estos pasos para comenzar con ChatBotKit:
npm install @chatbotkit/sdk
Este ejemplo demuestra las capacidades de transmisión en entornos perimetrales y sin servidor:
import { ConversationClient } from '@chatbotkit/sdk/conversation/index.js'
const client = new ConversationClient ( /* configuration */ )
for await ( const { type , data } of client
. complete ( null , { model : 'gpt-4' , messages } )
. stream ( ) ) {
if ( type === 'token' ) {
process . stdout . write ( data . token )
}
}
Este ejemplo muestra cómo crear IA conversacional avanzada con transmisión, llamadas a funciones, renderizado del lado del servidor y mucho más en un proyecto Next.js:
// file: ./app/page.jsx import ChatArea from '../components/ChatArea.jsx' export default function Page ( ) { return < ChatArea / > } // file: ./components/ChatArea.jsx 'use client' import { useContext } from 'react' import { complete } from '../actions/conversation.jsx' import { ChatInput , ConversationContext } from '@chatbotkit/react' import ConversationManager from '@chatbotkit/react/components/ConversationManager' export function ChatMessages ( ) { const { thinking , text , setText , messages , submit , } = useContext ( ConversationContext ) return ( < div > < div > { messages . map ( ( { id , type , text , children } ) => { switch ( type ) { case 'user' : return ( < div key = { id } > < div > < strong > user: < / strong > { text } < / div > < / div > ) case 'bot' : return ( < div key = { id } > < div > < strong > bot: < / strong > { text } < / div > { children ? < div > { children } < / div > : null } < / div > ) } } ) } { thinking ? ( < div key = "thinking" > < strong > bot: < / strong > thinking... < / div > ) : null } < / div > < ChatInput value = { text } onChange = { ( e ) => setText ( e . target . value ) } onSubmit = { submit } placeholder = "Type something..." style = { { border : 0 , outline : 'none' , resize : 'none' , width : '100%' , marginTop : '10px' , } } / > < / div > ) } export default function ChatArea ( ) { return ( < ConversationManager endpoint = { complete } > < ChatMessages / > < / ConversationManager > ) } // file: ./actions/conversation.jsx 'use server' import CalendarEvents from '../components/CalendarEvents.jsx' import { streamComplete } from '@chatbotkit/react/actions/complete' import { ChatBotKit } from '@chatbotkit/sdk' const cbk = new ChatBotKit ( { secret : process . env . CHATBOTKIT_API_SECRET , } ) export async function complete ( { messages } ) { return streamComplete ( { client : cbk . conversation , messages , functions : [ { name : 'getUserName' , description : 'Get the authenticated user name' , parameters : { } , handler : async ( ) => { return 'John Doe' } , } , { name : 'getCalendarEvents' , description : 'Get a list of calendar events' , parameters : { } , handler : async ( ) => { const events = [ { id : 1 , title : 'Meeting with Jane Doe' } , { id : 2 , title : 'Meeting with Jill Doe' } , ] return { children : < CalendarEvents events = { events } / > , result : { events , } , } } , } , { name : 'declineCalendarEvent' , description : 'Decline a calendar event' , parameters : { type : 'object' , properties : { id : { type : 'number' , description : 'The ID of the event to decline' , } , } , required : [ 'id' ] , } , handler : async ( { id } ) => { return `You have declined the event with ID ${ id } ` } , } , ] , } ) }
Este rápido ejemplo demuestra cómo usar el SDK en un proyecto Next.js:
// file: ./pages/index.js import { AutoTextarea , useConversationManager } from '@chatbotkit/react' export default function Index ( ) { const { thinking , text , setText , messages , submit , } = useConversationManager ( { endpoint : '/api/conversation/complete' , } ) function handleOnKeyDown ( event ) { if ( event . keyCode === 13 ) { event . preventDefault ( ) submit ( ) } } return ( < div style = { { fontFamily : 'monospace' , padding : '10px' } } > { messages . map ( ( { id , type , text } ) => ( < div key = { id } > < strong > { type } : < / strong > { text } < / div > ) ) } { thinking && ( < div key = "thinking" > < strong > bot: < / strong > thinking... < / div > ) } < AutoTextarea value = { text } onChange = { ( e ) => setText ( e . target . value ) } onKeyDown = { handleOnKeyDown } placeholder = "Type something..." style = { { border : 0 , outline : 'none' , resize : 'none' , width : '100%' , marginTop : '10px' , } } / > < / div > ) } // file: ./pages/api/conversation/complete.js import { ChatBotKit } from '@chatbotkit/sdk' import { stream } from '@chatbotkit/next/edge' const cbk = new ChatBotKit ( { secret : process . env . CHATBOTKIT_API_SECRET , } ) export default async function handler ( req ) { const { messages } = await req . json ( ) return stream ( cbk . conversation . complete ( null , { messages } ) ) } export const config = { runtime : 'edge' , }
Explore una variedad de ejemplos aquí.
Algunos ejemplos notables incluyen:
Plataforma | Ejemplo | Descripción |
---|---|---|
Siguiente.js | Chat sin estado (enrutador de aplicación + RSC + funciones + solicitud de función) | Un ejemplo de chatbot sin estado, donde la conversación la gestionan el cliente y el servidor. Este ejemplo utiliza las acciones del enrutador de aplicaciones y del servidor, así como funciones de IA con solicitudes de funciones. Este es un ejemplo poderoso para demostrar todas las capacidades de la plataforma de IA conversacional ChatBotKit. |
Siguiente.js | Chat sin estado (App Router + RSC + Funciones) | Un ejemplo de chatbot sin estado, donde la conversación la gestionan el cliente y el servidor. Este ejemplo utiliza las acciones del servidor y del enrutador de aplicaciones, así como funciones de IA. |
Siguiente.js | Chat sin estado (enrutador de aplicaciones + RSC) | Un ejemplo de chatbot sin estado, donde la conversación la gestionan el cliente y el servidor. Este ejemplo utiliza las acciones de servidor y enrutador de aplicaciones. |
Siguiente.js | Chat sin estado (enrutador de aplicaciones) | Un ejemplo de chatbot sin estado, donde la conversación la gestiona el cliente. Este ejemplo utiliza App Router. |
Siguiente.js | Chat sin estado | Un ejemplo de chatbot sin estado, donde la conversación la gestiona el cliente. |
Siguiente.js | Chat Básico | Un ejemplo básico de chatbot, donde ChatBotKit gestiona la conversación. |
Siguiente.js | Ejemplo de autenticación siguiente | Muestra cómo combinar NextAuth y ChatBotKit. |
Nodo | Chatbot de IA de transmisión GPT4 | Un ejemplo sencillo de chatbot de IA en streaming. |
Trabajadores de Cloudflare | Chatbot de IA GPT4 | Un ejemplo de chatbot de IA en streaming para trabajadores de Cloudflare. |
Todas las funciones del SDK se consideran inestables a menos que se marquen explícitamente como estables. La estabilidad se indica mediante la presencia de una etiqueta @stable
en la documentación.
¿Encontraste un error o quieres contribuir? Abra una incidencia o envíe una solicitud de extracción en nuestro repositorio oficial de GitHub.