节点SDK
1.0.0
.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
欢迎使用 ChatBotKit 节点 SDK。该 SDK 提供了一个基于 JavaScript 的平台,可轻松构建对话式 AI 机器人和代理。借助 ChatBotKit,您可以快速开发和部署能够进行自然语言交互的 AI 机器人。
这是 ChatBotKit Node SDK 的元存储库。它包含许多流行平台和框架的 SDK 包,例如React 、 Next.js 、 NextAuth等。
ChatBotKit Node SDK 由以下包组成:
包裹 | 版本 | 描述 |
---|---|---|
@chatbotkit/cli | ChatBotKit CLI。 | |
@chatbotkit/sdk | ChatBotKit API SDK。 | |
@chatbotkit/反应 | ChatBotKit React SDK。 | |
@chatbotkit/下一个 | ChatBotKit Next.js SDK。 | |
@chatbotkit/nextauth | ChatBotKit NextAuth.js SDK。 | |
@chatbotkit/获取 | ChatBotKit 等距获取实现。 |
该存储库还包含以下工具:
包裹 | 版本 | 描述 |
---|---|---|
创建 cbk 应用程序 | 创建新 CBK 应用程序的快速工具。 |
请按照以下步骤开始使用 ChatBotKit:
npm install @chatbotkit/sdk
此示例演示了边缘和无服务器环境中的流处理功能:
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 )
}
}
此示例展示了如何在 Next.js 项目中构建具有流式传输、函数调用、服务器端渲染等功能的高级对话式 AI:
// 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 } ` } , } , ] , } ) }
此快速示例演示了如何在 Next.js 项目中使用 SDK:
// 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' , }
在这里探索一系列示例。
一些值得注意的例子包括:
平台 | 例子 | 描述 |
---|---|---|
Next.js | 无状态聊天(应用程序路由器 + RSC + 函数 + 函数请求) | 无状态聊天机器人示例,其中对话由客户端和服务器管理。此示例使用应用程序路由器和服务器操作以及具有函数请求的 AI 函数。这是一个强有力的示例,展示了 ChatBotKit 对话式 AI 平台的全部功能。 |
Next.js | 无状态聊天(应用程序路由器 + RSC + 功能) | 无状态聊天机器人示例,其中对话由客户端和服务器管理。此示例使用应用程序路由器和服务器操作以及 AI 功能。 |
Next.js | 无状态聊天(应用程序路由器 + RSC) | 无状态聊天机器人示例,其中对话由客户端和服务器管理。此示例使用应用程序路由器和服务器操作。 |
Next.js | 无状态聊天(应用程序路由器) | 无状态聊天机器人示例,其中对话由客户端管理。此示例使用应用程序路由器。 |
Next.js | 无状态聊天 | 无状态聊天机器人示例,其中对话由客户端管理。 |
Next.js | 基本聊天 | 一个基本的聊天机器人示例,其中对话由 ChatBotKit 管理。 |
Next.js | 下一个验证示例 | 展示如何结合 NextAuth 和 ChatBotKit。 |
节点 | GPT4 流媒体 AI 聊天机器人 | 一个简单的流式人工智能聊天机器人示例。 |
Cloudflare 工人 | GPT4 人工智能聊天机器人 | Cloudflare Workers 的流式 AI 聊天机器人示例。 |
除非明确标记为稳定,否则所有 SDK 功能都被视为不稳定。文档中存在@stable
标记表明稳定性。
遇到错误或想做出贡献?在我们的官方 GitHub 存储库上提出问题或提交拉取请求。