節點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 儲存庫上提出問題或提交拉取請求。