Przejdź do głównej treści
SDK chatbota dla React

Zbuduj własny interfejs chatbota w React

Połącz komponenty React z ChattyBox przez @openstaticfish/chattybox. Twój zespół kontroluje renderowanie i stan, a zarządzana infrastruktura obsługuje odpowiedzi oparte na źródłach, cytowania i grupowanie rozmów.

Indeksuje opublikowane strony dokumentacjiOdpowiedzi z cytowaniami źródełOsadzenie jednym skryptemBez migracji dokumentacjiKarta kredytowa nie jest wymaganaTwoje treści pozostają Twoje
Zapytaj ChattyBox
x
Od czego zacząć, jeśli potrzebuję wiarygodnej odpowiedzi z tej strony?
Zacznij od dodania adresu publicznej witryny do ChattyBox. Wyszukuje zindeksowane treści, aby ukierunkować odpowiedzi, i może pokazywać odnośniki do stron źródłowych do sprawdzenia przez odwiedzających. Przetestuj odpowiedzi i zachowanie awaryjne przed uruchomieniem.
iŹródła3^
Integracja z React przewodnik
chattybox.ai
Analityka
chattybox.ai
Strona główna
chattybox.ai
Zadaj pytanie...
Obsługiwane przez ChattyBox
Zbudowany dla Zespoły produktowe korzystające z React

Uruchom chatbota z cytowaniami źródeł bez przebudowy stosu witryny

ChattyBox indeksuje istniejącą witrynę, dokumentację, centrum pomocy, CMS lub bazę wiedzy, a następnie osadza chatbota, który odpowiada na podstawie własnych opublikowanych treści zamiast ogólnej pamięci modelu.

Twórz własne komponenty wiadomości, cytowań, ładowania, odpowiedzi awaryjnych i błędów.
Przechowuj identyfikatory konwersacji w stanie React przypisanym do odwiedzającego, aby obsługiwać kolejne pytania.
Używaj publicznych kluczy API w przeglądarce, z opcjonalnymi ograniczeniami do dokładnych originów dla dodatkowej ochrony.
Nie utrzymuj własnego robota, bazy wektorowej, usługi wyszukiwania ani potoku generowania.
1Krok przepływu pracy

Zainstaluj SDK JavaScript w aplikacji React.

2Krok przepływu pracy

Utwórz jednego klienta Chattybox poza ścieżką renderowania komponentu.

3Krok przepływu pracy

Wysyłaj wiadomości z procedury obsługi zdarzenia i aktualizuj stan interfejsu odpowiedzią.

4Krok przepływu pracy

Wyświetlaj linki do źródeł i obsługuj ustrukturyzowane błędy ChattyboxError.

Uruchomienie w trzech krokach

Wklej swój adres URL Integracja z React, przetestuj cytowane odpowiedzi, a następnie zainstaluj widżet.

Zbuduj chatbota w React
Integracja z React

Dopasuj czat oparty na źródłach do istniejącego systemu komponentów

Korzystaj z wzorców stanu, dostępności, stylów i systemu projektowego używanych już w aplikacji, zamiast dopasowywać się do sztywnej obudowy widżetu.

Ścieżka decyzji

Skorzystaj z tych punktów kontrolnych, aby zdecydować, czy ChattyBox powinien siedzieć obok Twojej platformy dokumentów, zastąpić osobnego asystenta, czy też pozostać odizolowany na czas testów.

01

Kontrola nad komponentami

Twórz wiadomości, karty cytowań, podpowiedzi, puste stany i elementy sterujące z własnych komponentów React.

02

Stan na Twoich zasadach

Używaj stanu lokalnego lub istniejącej warstwy stanu, zachowując rozdzielenie konwersacji poszczególnych odwiedzających.

03

Dostępne odpowiedzi

Kontroluj fokus, aktywne regiony, obsługę klawiatury i komunikaty o błędach we własnej aplikacji.

04

Zarządzany backend

Utrzymuj małą integrację przeglądarkową, podczas gdy ChattyBox obsługuje indeksowanie treści, wyszukiwanie i odpowiedzi z cytowaniami.

Ścieżka instalacji

Połącz komponent React z ChattyBox

Utwórz klienta raz, wywołuj go z procedury obsługi zdarzenia i przechowuj identyfikator konwersacji każdego odwiedzającego w stanie komponentu lub aplikacji.

  1. 1Dodaj @openstaticfish/chattybox do aplikacji React.
  2. 2Zainicjuj klienta publicznymi zmiennymi środowiskowymi Vite lub używanego frameworka.
  3. 3Przechowuj zwróconą wiadomość, źródła i identyfikator konwersacji w stanie przypisanym do odwiedzającego.
Zbuduj chatbota w React
Chat.tsx
tsx
import { useState, type FormEvent } from 'react';
import { Chattybox, ChattyboxError, type ChatResponse } from '@openstaticfish/chattybox';

// Vite browser example. Other frameworks use different public environment APIs.
const chattybox = new Chattybox({
  apiKey: import.meta.env.VITE_CHATTYBOX_API_KEY,
  baseUrl: import.meta.env.VITE_CHATTYBOX_API_URL,
});

export function Chat() {
  const [question, setQuestion] = useState('');
  const [answer, setAnswer] = useState<ChatResponse | null>(null);
  const [pending, setPending] = useState(false);
  const [error, setError] = useState('');

  async function ask(event: FormEvent<HTMLFormElement>) {
    event.preventDefault();
    const message = question.trim();
    if (pending || !message || message.length > 2000) return;
    setPending(true);
    setError('');
    try {
      setAnswer(await chattybox.sendMessage({
        message,
        // Groups stored messages; previous turns are not sent to the model.
        conversationId: answer?.conversationId,
      }));
      setQuestion('');
    } catch (failure) {
      setError(failure instanceof ChattyboxError
        ? failure.status + ': ' + failure.message
        : 'Chat could not be completed.');
    } finally {
      setPending(false);
    }
  }

  const sources = answer?.sources.filter((source) => {
    try { return ['https:', 'http:'].includes(new URL(source).protocol); }
    catch { return false; }
  }) ?? [];

  return (
    <section aria-label="Chat">
      <form onSubmit={ask}>
        <label>Question
          <input value={question} maxLength={2000} disabled={pending}
            onChange={(event) => setQuestion(event.target.value)} />
        </label>
        <button type="submit" disabled={pending || !question.trim()}>
          {pending ? 'Sending...' : 'Send'}
        </button>
      </form>
      {error && <p role="alert">{error}</p>}
      <div aria-live="polite" aria-busy={pending}>
        <p style={{ whiteSpace: 'pre-wrap' }}>{answer?.message}</p>
        {sources.length > 0 && <ul aria-label="Sources">
          {sources.map((source, index) => <li key={index}>
            <a href={source} target="_blank" rel="noopener noreferrer">{source}</a>
          </li>)}
        </ul>}
      </div>
    </section>
  );
}

// Render <Chat /> in your app. This shows the latest answer, not a saved transcript.
// No automatic retries: see the SDK retry-safety guide before adding retries.
Najczęstsze pytania

Często zadawane pytania

1

Czy mogę zbudować własnego chatbota React za pomocą ChattyBox?

Tak. SDK JavaScript zwraca wiadomości, identyfikatory konwersacji i adresy URL źródeł, dzięki czemu aplikacja React może wyświetlać całkowicie własny interfejs.

2

Czy ChattyBox udostępnia komponent React?

Pakiet nie eksportuje komponentu React ani hooków. Użyj metod headless z własnymi komponentami lub wywołaj mountWidget() ze stałego układu przeglądarkowego, aby załadować utrzymywany pływający widżet.

3

Gdzie utworzyć klienta Chattybox w React?

Utwórz go raz poza ścieżką renderowania komponentu lub w stabilnym providerze aplikacji, zamiast konstruować nowego klienta przy każdym renderowaniu.

4

Czy zamiast tego mogę użyć hostowanego widżetu w React?

Tak. Skorzystaj z przewodnika instalacji hostowanego widżetu, jeśli wolisz utrzymywany interfejs zamiast własnego renderowania w React.

Zacznij bezpłatnie

Karta kredytowa nie jest wymagana. Twoje treści nie są używane do trenowania modeli.

Stwórz darmowego chatbota

Plan Free. Bez karty.

Używamy opcjonalnych narzędzi analitycznych oraz narzędzi do zarządzania tagami, aby rozumieć sposób korzystania z witryny. Wybierz, czy zezwalasz na Ahrefs Web Analytics, PostHog i Google Tag Manager. Wyłączenie analityki spowoduje ponowne załadowanie tej strony, aby zmiana została prawidłowo zastosowana. Podstawowe funkcje witryny i monitorowanie błędów nie zależą od tego wyboru. Przeczytaj naszą politykę prywatności.