Zum Inhalt springen
KeuralDocs
Entwickler

Keural Kit

Ein Einbettungsskript, mit dem Keural-Chat-, Drive- und Prompt-Ansichten in Ihren Webdienst eingebunden werden.

Keural Kit bindet Keural-Ansichten mit einem einzigen Skript in Ihre Seite ein. Die Ansichten werden innerhalb eines Shadow DOM gezeichnet, sodass sie sich nicht mit dem CSS Ihrer Seite vermischen. Kit wird bei jeder Bereitstellung der Keural-Webanwendung mit aktualisiert. Wird nach einer Bereitstellung noch eine alte Ansicht angezeigt, leeren Sie den Cache von Browser und CDN und prüfen Sie den Build-Zeitpunkt mit window.KeuralKit.__build.

Kit arbeitet mit der Keural-Anmeldesitzung (Cookie der Keural-API-Domain). userInfo dient nur der Anzeige; der Server identifiziert den Benutzer anhand der Cookie-Sitzung. Um Kit auf der Domain Ihres Dienstes zu nutzen, stimmen Sie vor der Einführung mit Ihrem Keural-Ansprechpartner die Domain-Registrierung und die Anmeldeintegration (z. B. SSO) ab.

Einbinden

Kit wird über die Webadresse der von Ihnen genutzten Keural-Umgebung geladen. Bei keural.ai ist das https://keural.ai; bei einer On-Premises- oder dedizierten Umgebung verwenden Sie die Keural-Webadresse dieser Umgebung. Bevor Sie das Skript einbinden, legen Sie in window.__KEURAL_ENV__ die Serveradressen fest, die Kit aufruft. Alle drei Adressen müssen zur selben Umgebung gehören; Sie erhalten sie bei der Einführung von Ihrem Keural-Ansprechpartner.

<script>
  window.__KEURAL_ENV__ = {
    NEXT_PUBLIC_API_BASE_URL: '<KEURAL_API_URL>',
    NEXT_PUBLIC_FAST_API_BASE_URL: '<KEURAL_AGENT_URL>',
    NEXT_PUBLIC_MODE: 'prd',
  };
</script>
<script src="<KEURAL_WEB_URL>/plugin/kit/keural.js" async></script>
WertBeschreibung
<KEURAL_WEB_URL>Keural-Webadresse. Beispiel: https://keural.ai
<KEURAL_API_URL>Adresse des Keural-API-Servers. Beispiel: https://api.keural.ai
<KEURAL_AGENT_URL>Adresse des Keural-Agenten-Servers
NEXT_PUBLIC_MODEprd für Produktion, dev für Entwicklung

Wenn Sie dasselbe Kit auch auf einer zweiten Domain verwenden, tragen Sie zusätzlich NEXT_PUBLIC_ADDITIONAL_FRONTEND_URL, NEXT_PUBLIC_ADDITIONAL_API_BASE_URL und NEXT_PUBLIC_ADDITIONAL_FAST_API_BASE_URL ein. Fehlt einer dieser drei Werte, tritt ein Fehler auf. Die Werte sind https://-Adressen ohne Pfad.

Nach dem Laden des Skripts existiert window.KeuralKit. In SPAs wie React erstellen Sie einen Loader, damit das Skript nur einmal eingebunden wird.

export function loadKeuralKit(src = '<KEURAL_WEB_URL>/plugin/kit/keural.js') {
  if (window.KeuralKit) return Promise.resolve(window.KeuralKit);
  return new Promise((resolve, reject) => {
    const s = document.createElement('script');
    s.src = src;
    s.async = true;
    s.onload = () => resolve(window.KeuralKit);
    s.onerror = () => {
      s.remove();
      reject(new Error('Keural Kit failed to load'));
    };
    document.head.appendChild(s);
  });
}

Chat einbinden

const el = document.getElementById('keural-chat')!;

window.KeuralKit.mountChat(el, {
  userInfo: { userId: user.id, name: user.name },
  colorMode: 'light',
  initialData: { message: 'Fasse den Quartalsumsatz zusammen', room_name: 'Quartalsbericht' },
  onSessionCreated: (roomId) => router.push(`/c/${roomId}`),
  onError: () => router.push('/'),
});

// Beim Verlassen der Ansicht
window.KeuralKit.unmount(el);
  • Um eine bestehende Unterhaltung zu öffnen, tragen Sie deren ID in sessionId ein.
  • initialData fügen Sie nur beim Öffnen einer neuen Unterhaltung hinzu. Wird es beim erneuten Öffnen einer bestehenden Unterhaltung angegeben, wird dieselbe Nachricht erneut gesendet.
  • Fehlt userInfo.userId, gilt der Benutzer als nicht angemeldet. Binden Sie die Komponente ein, wenn die Anmeldeinformationen bereitstehen.

Methoden

MethodeBeschreibung
mountChat(el, options)Chat-Ansicht
mountDrivePage(el, options)Drive-Ansicht. Erhält die Dateien für eine Frage über onAsk(files)
mountPromptPage(el, options)Prompt-Ansicht. Erhält die ausgewählten Prompts über onAsk(prompts)
mountDriveDialog(el, options) / updateDriveDialogDateiauswahl-Fenster für Drive (open erforderlich, onClose, onSelect(files), initialSelected)
mountPromptDialog(el, options) / updatePromptDialogPrompt-Auswahlfenster (open erforderlich, onClose, onSelect, onDefaultSelect, selectDefaultPrompt, defaultPromptDismissed)
unmount(el)Entfernt die eingebundene Ansicht

Die Methoden mount* und update* erhalten colorMode und userInfo gemeinsam. unmount(el) erhält nur das Element. update* zeichnet die Optionen auf demselben Element neu. Zum Öffnen und Schließen des Fensters ändern Sie den Wert von open und rufen update* auf. Ruft man mount* erneut auf demselben Element auf, wird die vorhandene Ansicht wiederverwendet.

Optionen von mountChat

OptionTypBeschreibung
sessionIdstringID der zu öffnenden Unterhaltung. Ohne Angabe wird eine neue begonnen
userInfo{ userId, name?, orgId?, orgName? }Benutzerinformationen. userId ist erforderlich
initialDataobjectErste Nachricht einer neuen Unterhaltung. Siehe initialData unten
colorMode'light' | 'dark'Design. Standard light
initialEffort'fast' | 'balanced' | 'high' | 'xhigh' | 'max'Anfangsstufe. Standard fast
initialWebSearchbooleanMit aktivierter Websuche starten. Standard true
initialDeepResearchbooleanMit aktiviertem Deep Research starten
hideHomeButton / hideNewChatButtonbooleanSchaltflächen in der Kopfzeile ausblenden
hideModePopupbooleanModusauswahl-Fenster ausblenden
messageActions{ id, label, onClick(messageId) }[]Eigene Aktionen zum Antwortmenü hinzufügen
headerLeftActions / headerRightActionsHeaderLeftAction[]Eigene Schaltflächen zur Kopfzeile hinzufügen
onHeaderLeftMount(el: HTMLElement) => voidErhält das Element, sobald der linke Bereich der Kopfzeile gezeichnet ist
mobileMenuItems / mobileBottomActionsarrayMenüeinträge oder untere Schaltflächen bei mobiler Breite hinzufügen
onMobileHomeButton() => voidWenn die Start-Schaltfläche bei mobiler Breite gedrückt wird
chatInputFooterstringHinweistext unter dem Eingabefeld
shareTooltipstringTooltip-Text der Teilen-Schaltfläche
onSessionCreated(roomId) => voidWenn eine neue Unterhaltung angelegt wird
onStreamDone(roomId) => voidWenn eine Antwort abgeschlossen ist
onSummaryDone(roomId) => voidWenn Titel oder Zusammenfassung der Unterhaltung erstellt sind
onRoomInfo(info) => voidWenn sich die Informationen zur Unterhaltung ändern
onShare / onExport(roomId) => voidWenn die Teilen- oder Export-Schaltfläche gedrückt wird
onError(error: Error) => voidWenn ein Fehler auftritt

initialData

FeldTypBeschreibung
messagestringErforderlich. Erste Nachricht
filesFileType[]Gemeinsam zu sendende Drive-Dateien (der über onSelect von mountDriveDialog erhaltene Wert)
promptsobject[]Gemeinsam zu verwendende Prompts
webSearchbooleanWebsuche
deepResearchbooleanDeep Research
effort'fast' | 'balanced' | 'high' | 'xhigh' | 'max'Stufe
model{ label, value }Antwortendes Modell
room_namestringName der Unterhaltung. Akzeptiert auch roomName, title und name.
folder_idstring | nullOrdner zum Speichern
hideModePopupbooleanModusauswahl-Fenster ausblenden

Sprache der Ansicht

Die Kit-Ansicht wird auf Koreanisch angezeigt.

Einstellungen und Anmeldung

  • Benutzereinstellungen ändern Sie in der Keural-Webanwendung oder in der App. Die Kit-Ansicht übernimmt diese Einstellungen.
  • Die Anmeldung übernimmt Ihr Dienst, an Kit werden nur die Informationen des angemeldeten Benutzers übergeben.

Auf dieser Seite