الصفحة الرئيسية>المتعلقة بالبرمجة>شفرة المصدر الأخرى
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}` }, }, ], }) }" style=";text-align:right;direction:rtl">
 // 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', }" style=";text-align:right;direction:rtl">
 // 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 + الوظائف + طلب الوظيفة) مثال على برنامج chatbot عديم الحالة، حيث تتم إدارة المحادثة بواسطة العميل والخادم. يستخدم هذا المثال جهاز توجيه التطبيق وإجراءات الخادم بالإضافة إلى وظائف الذكاء الاصطناعي مع طلبات الوظائف. يعد هذا مثالًا قويًا لتوضيح القدرات الكاملة لمنصة ChatBotKit للذكاء الاصطناعي للمحادثة.
Next.js الدردشة بدون حالة (جهاز توجيه التطبيقات + RSC + الوظائف) مثال على برنامج chatbot عديم الحالة، حيث تتم إدارة المحادثة بواسطة العميل والخادم. يستخدم هذا المثال جهاز توجيه التطبيق وإجراءات الخادم بالإضافة إلى وظائف الذكاء الاصطناعي.
Next.js الدردشة عديمة الحالة (جهاز توجيه التطبيق + RSC) مثال على برنامج chatbot عديم الحالة، حيث تتم إدارة المحادثة بواسطة العميل والخادم. يستخدم هذا المثال جهاز توجيه التطبيق وإجراءات الخادم.
Next.js الدردشة عديمة الحالة (جهاز توجيه التطبيق) مثال لروبوتات الدردشة عديمة الحالة، حيث تتم إدارة المحادثة من قبل العميل. يستخدم هذا المثال جهاز توجيه التطبيقات.
Next.js دردشة عديمي الجنسية مثال لروبوتات الدردشة عديمة الحالة، حيث تتم إدارة المحادثة من قبل العميل.
Next.js الدردشة الأساسية مثال أساسي لبرنامج chatbot، حيث تتم إدارة المحادثة بواسطة ChatBotKit.
Next.js مثال المصادقة التالية يوضح كيفية الجمع بين NextAuth وChatBotKit.
العقدة GPT4 دفق الدردشة AI مثال بسيط لروبوتات الدردشة الذكية المتدفقة.
عمال كلاودفلير روبوت الدردشة GPT4 AI مثال لروبوتات المحادثة المتدفقة بتقنية الذكاء الاصطناعي لعمال Cloudflare.

استقرار

تعتبر جميع ميزات SDK غير مستقرة ما لم يتم وضع علامة واضحة عليها على أنها مستقرة. تتم الإشارة إلى الاستقرار من خلال وجود علامة @stable في الوثائق.

التوثيق

  • توثيق النوع : معلومات تفصيلية عن الأنواع المتوفرة هنا.
  • توثيق النظام الأساسي : دليل شامل لـ ChatBotKit هنا.
  • البرامج التعليمية للنظام الأساسي : برامج تعليمية خطوة بخطوة لـ ChatBotKit هنا.

المساهمة

تواجه خطأ أو ترغب في المساهمة؟ افتح مشكلة أو أرسل طلب سحب على مستودع GitHub الرسمي الخاص بنا.

يوسع
معلومات إضافية