Komponentide omandiõigus
Koostage sõnumid, viitekaardid, viibad, tühjad olekud ja juhtnupud oma Reacti komponentidest.
Ühenda Reacti komponendid ChattyBoxiga paketi @openstaticfish/chattybox abil. Tiim juhib renderdust ja olekut, hallatud taristu tegeleb allikapõhiste vastuste, viidete ja vestluste rühmitamisega.
ChattyBox roomab teie olemasolevat veebisaiti, dokumentatsiooni, abikeskust, CMS-i või teadmistebaasi ning manustab seejärel vestlusroboti, mis vastab teie enda avaldatud sisu, mitte mudeli üldise mälu põhjal.
Paigaldage JavaScripti SDK oma Reacti rakendusse.
Looge üks Chattyboxi klient väljaspool komponendi renderdusteed.
Saatke sõnumid sündmusetöötlejast ja värskendage vastusega kasutajaliidese olekut.
Kuvage allikalingid ja käsitlege struktureeritud ChattyboxErrori tõrkeid.
Kolmeastmeline käivitamine
Kasutage oma rakenduse olemasolevaid oleku-, ligipääsetavuse, kujunduse ja disainisüsteemi mustreid, selle asemel et kohanduda jäiga vidinakestaga.
Kasutage neid kontrollpunkte, et otsustada, kas ChattyBox peaks asuma teie dokumentide platvormi kõrval, asendama eraldi assistendi või jääma testimiseks isoleerituks.
Koostage sõnumid, viitekaardid, viibad, tühjad olekud ja juhtnupud oma Reacti komponentidest.
Kasutage kohalikku olekut või olemasolevat olekukihti, hoides vestlused külastajate vahel eraldi.
Juhtige oma rakenduses fookust, reaalajas piirkondi, klaviatuurikäitumist ja veateateid.
Hoidke brauseriintegratsioon väike, samal ajal kui ChattyBox haldab sisu indekseerimist, teabeotsingut ja viidetega vastuseid.
Looge klient üks kord, kutsuge seda sündmusetöötlejast ja hoidke iga külastaja vestluse ID-d komponendi või rakenduse olekus.
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.Jah. JavaScripti SDK tagastab sõnumid, vestluse ID-d ja allika-URL-id, et teie Reacti rakendus saaks kuvada täiesti kohandatud liidese.
Reacti komponente ega hooke ei ekspordita. Kasuta kasutajaliideseta meetodeid oma komponentidega või kutsu mountWidget() püsivast brauseripaigutusest hallatud hõljuva vidina laadimiseks.
Looge see üks kord väljaspool komponendi renderdusteed või stabiilses rakendusepakkujas, mitte iga renderdusega uuesti.
Jah. Kasutage majutatud vidina paigaldusjuhendit, kui soovite kohandatud Reacti kuvamise asemel hooldatud liidest.
Krediitkaarti pole vaja. Teie sisu ei kasutata mudelite treenimiseks.
Tasuta pakett. Kaarti pole vaja.
Kasutame valikulisi analüütika- ja sildihaldustööriistu, et mõista veebisaidi kasutamist. Valige, kas lubate järgmised tööriistad: Ahrefs Web Analytics, PostHog ja Google Tag Manager. Analüütika väljalülitamisel laaditakse see leht uuesti, et muudatus jõustuks korrektselt. Veebisaidi põhifunktsioonid ja veaseire ei sõltu sellest valikust. Lugege meie privaatsuspoliitikat.