หน้าแรก>การเขียนโปรแกรมที่เกี่ยวข้อง>ซอร์สโค้ดอื่น ๆ
setText(e.target.value)} onSubmit={submit} placeholder="Type something..." style={{ border: 0, outline: 'none', resize: 'none', width: '100%', marginTop: '10px', }} />
) } export default function ChatArea() { return ( ) } // 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: , 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}` }, }, ], }) }">
 // 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 ในโครงการ Next.js:

bot: thinking...
)} setText(e.target.value)} onKeyDown={handleOnKeyDown} placeholder="Type something..." style={{ border: 0, outline: 'none', resize: 'none', width: '100%', marginTop: '10px', }} /> ) } // 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', }">
 // 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' ,
} 

ตัวอย่าง

สำรวจตัวอย่างต่างๆ ที่นี่

ตัวอย่างที่น่าสังเกตได้แก่:

แพลตฟอร์ม ตัวอย่าง คำอธิบาย
เน็กซ์.เจส แชทไร้สัญชาติ (เราเตอร์แอป + RSC + ฟังก์ชั่น + คำขอฟังก์ชั่น) ตัวอย่างแชทบอทไร้สัญชาติ ซึ่งการสนทนาได้รับการจัดการโดยไคลเอนต์และเซิร์ฟเวอร์ ตัวอย่างนี้ใช้ App Router และ Server Actions รวมถึงฟังก์ชัน AI พร้อมคำขอฟังก์ชัน นี่เป็นตัวอย่างที่ทรงพลังในการสาธิตความสามารถเต็มรูปแบบของแพลตฟอร์ม AI การสนทนา ChatBotKit
เน็กซ์.เจส แชทไร้สัญชาติ (เราเตอร์แอป + RSC + ฟังก์ชัน) ตัวอย่างแชทบอทไร้สัญชาติ ซึ่งการสนทนาได้รับการจัดการโดยไคลเอนต์และเซิร์ฟเวอร์ ตัวอย่างนี้ใช้ App Router และ Server Actions รวมถึงฟังก์ชัน AI
เน็กซ์.เจส แชทไร้สัญชาติ (เราเตอร์แอป + RSC) ตัวอย่างแชทบอทไร้สัญชาติ ซึ่งการสนทนาได้รับการจัดการโดยไคลเอนต์และเซิร์ฟเวอร์ ตัวอย่างนี้ใช้ App Router และ Server Actions
เน็กซ์.เจส แชทไร้สัญชาติ (เราเตอร์แอป) ตัวอย่างแชทบอทไร้สัญชาติที่ลูกค้าจัดการการสนทนา ตัวอย่างนี้ใช้ App Router
เน็กซ์.เจส แชทไร้สัญชาติ ตัวอย่างแชทบอทไร้สัญชาติที่ลูกค้าจัดการการสนทนา
เน็กซ์.เจส แชทพื้นฐาน ตัวอย่างแชทบอทพื้นฐานที่ ChatBotKit จัดการการสนทนา
เน็กซ์.เจส ตัวอย่างการรับรองความถูกต้องถัดไป แสดงวิธีรวม NextAuth และ ChatBotKit
โหนด GPT4 แชทบอท AI สตรีมมิ่ง ตัวอย่างแชทบอท AI แบบสตรีมมิ่งอย่างง่าย
คนงาน Cloudflare แชทบอท GPT4 AI ตัวอย่างแชทบอท AI แบบสตรีมสำหรับ Cloudflare Workers

ความมั่นคง

คุณลักษณะ SDK ทั้งหมดถือว่าไม่เสถียร เว้นแต่จะมีการทำเครื่องหมายไว้อย่างชัดเจนว่ามีเสถียรภาพ ความเสถียรถูกระบุโดยการมีแท็ก @stable ในเอกสารประกอบ

เอกสารประกอบ

  • พิมพ์เอกสาร : ข้อมูลโดยละเอียดเกี่ยวกับประเภทที่มีอยู่ ที่นี่
  • เอกสารแพลตฟอร์ม : คู่มือที่ครอบคลุมเกี่ยวกับ ChatBotKit ที่นี่
  • บทช่วยสอนแพลตฟอร์ม : บทช่วยสอนทีละขั้นตอนสำหรับ ChatBotKit ที่นี่

มีส่วนร่วม

พบข้อผิดพลาดหรือต้องการมีส่วนร่วม? เปิดปัญหาหรือส่งคำขอดึงบนพื้นที่เก็บข้อมูล GitHub อย่างเป็นทางการของเรา

ขยาย
ข้อมูลเพิ่มเติม