Aller au contenu
KeuralDocs
Développeurs

Keural Kit

Script d'intégration qui place les écrans de chat, Drive et prompts de Keural dans votre page web.

Keural Kit place des écrans Keural dans votre page à l'aide d'un script unique. Les écrans sont dessinés dans un Shadow DOM, ils ne se mélangent donc pas au CSS de votre page. Kit est mis à jour lors du déploiement de la version web de Keural. Si un ancien écran s'affiche encore après un déploiement, videz le cache du navigateur et du CDN, puis vérifiez la date de build avec window.KeuralKit.__build.

Kit fonctionne avec la session de connexion Keural (cookie du domaine de l'API Keural). userInfo sert uniquement à l'affichage, et l'utilisateur est identifié par la session cookie. Pour l'utiliser sur le domaine de votre service, convenez avec votre contact Keural de l'enregistrement du domaine et de l'intégration de la connexion (SSO, par exemple) avant la mise en place.

Chargement

Kit se charge depuis l'adresse web de l'environnement Keural que vous utilisez. Pour keural.ai, il s'agit de https://keural.ai ; pour un environnement sur site ou dédié, utilisez l'adresse web Keural de cet environnement. Avant d'ajouter le script, renseignez dans window.__KEURAL_ENV__ les adresses des serveurs que Kit appellera. Les trois adresses doivent appartenir au même environnement ; obtenez-les auprès de votre contact Keural lors de la mise en place.

<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>
ValeurDescription
<KEURAL_WEB_URL>Adresse web de Keural. Exemple : https://keural.ai
<KEURAL_API_URL>Adresse du serveur d'API Keural. Exemple : https://api.keural.ai
<KEURAL_AGENT_URL>Adresse du serveur d'agents Keural
NEXT_PUBLIC_MODEprd pour la production, dev pour le développement

Si vous utilisez le même Kit sur un second domaine, renseignez les trois valeurs NEXT_PUBLIC_ADDITIONAL_FRONTEND_URL, NEXT_PUBLIC_ADDITIONAL_API_BASE_URL et NEXT_PUBLIC_ADDITIONAL_FAST_API_BASE_URL. Si l'une de ces trois valeurs manque, une erreur se produit. Les valeurs sont des adresses https:// sans chemin.

Une fois le script chargé, window.KeuralKit est créé. Dans les SPA comme React, utilisez un chargeur afin que le script ne soit ajouté qu'une seule fois.

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);
  });
}

Intégrer le chat

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

window.KeuralKit.mountChat(el, {
  userInfo: { userId: user.id, name: user.name },
  colorMode: 'light',
  initialData: { message: 'Résume le chiffre d’affaires de ce trimestre', room_name: 'Rapport trimestriel' },
  onSessionCreated: (roomId) => router.push(`/c/${roomId}`),
  onError: () => router.push('/'),
});

// En quittant l'écran
window.KeuralKit.unmount(el);
  • Pour ouvrir une conversation existante, indiquez son ID dans sessionId.
  • N'incluez initialData que lors de l'ouverture d'une nouvelle conversation. Si vous l'incluez lors de l'ouverture d'une conversation existante, le même message sera envoyé à nouveau.
  • Si userInfo.userId est absent, l'utilisateur est traité comme non connecté. Montez le composant une fois les informations de connexion prêtes.

Méthodes

MéthodeDescription
mountChat(el, options)Écran de chat
mountDrivePage(el, options)Écran Drive. Reçoit les fichiers sur lesquels poser une question via onAsk(files)
mountPromptPage(el, options)Écran des prompts. Reçoit les prompts choisis via onAsk(prompts)
mountDriveDialog(el, options) / updateDriveDialogFenêtre de sélection de fichiers Drive (open obligatoire, onClose, onSelect(files), initialSelected)
mountPromptDialog(el, options) / updatePromptDialogFenêtre de sélection de prompts (open obligatoire, onClose, onSelect, onDefaultSelect, selectDefaultPrompt, defaultPromptDismissed)
unmount(el)Supprime l'écran monté

Les méthodes mount* et update* reçoivent colorMode et userInfo ensemble, et unmount(el) ne reçoit que l'élément. update* redessine les options sur le même élément. Pour ouvrir ou fermer la fenêtre, modifiez la valeur de open puis appelez update*. Si vous appelez de nouveau mount* sur le même élément, l'écran existant est réutilisé.

Options de mountChat

OptionTypeDescription
sessionIdstringID de la conversation à ouvrir. Si absent, une nouvelle conversation est créée
userInfo{ userId, name?, orgId?, orgName? }Informations sur l'utilisateur. userId est obligatoire
initialDataobjectPremier message d'une nouvelle conversation. Voir initialData ci-dessous
colorMode'light' | 'dark'Thème. Par défaut light
initialEffort'fast' | 'balanced' | 'high' | 'xhigh' | 'max'Niveau initial. Par défaut fast
initialWebSearchbooleanDémarrer avec la recherche web activée. Par défaut true
initialDeepResearchbooleanDémarrer avec Deep Research activé
hideHomeButton / hideNewChatButtonbooleanMasquer les boutons de l'en-tête
hideModePopupbooleanMasquer la fenêtre de sélection du mode
messageActions{ id, label, onClick(messageId) }[]Ajouter vos propres actions au menu des réponses
headerLeftActions / headerRightActionsHeaderLeftAction[]Ajouter vos propres boutons dans l'en-tête
onHeaderLeftMount(el: HTMLElement) => voidReçoit l'élément lorsque la zone gauche de l'en-tête est dessinée
mobileMenuItems / mobileBottomActionsarrayAjouter des éléments de menu ou des boutons inférieurs sur mobile
onMobileHomeButton() => voidLorsque le bouton d'accueil est pressé sur mobile
chatInputFooterstringTexte d'information sous la zone de saisie
shareTooltipstringTexte de l'info-bulle du bouton de partage
onSessionCreated(roomId) => voidLorsqu'une nouvelle conversation est créée
onStreamDone(roomId) => voidLorsqu'une réponse se termine
onSummaryDone(roomId) => voidLorsque le titre ou le résumé de la conversation est créé
onRoomInfo(info) => voidLorsque les informations de la conversation changent
onShare / onExport(roomId) => voidLorsque le bouton de partage ou d'export est pressé
onError(error: Error) => voidLorsqu'une erreur se produit

initialData

ChampTypeDescription
messagestringObligatoire. Premier message
filesFileType[]Fichiers Drive envoyés avec le message (valeur reçue dans onSelect de mountDriveDialog)
promptsobject[]Prompts utilisés avec le message
webSearchbooleanRecherche web
deepResearchbooleanDeep Research
effort'fast' | 'balanced' | 'high' | 'xhigh' | 'max'Niveau
model{ label, value }Modèle qui répond
room_namestringNom de la conversation. Accepte aussi roomName, title et name.
folder_idstring | nullDossier d'enregistrement
hideModePopupbooleanMasquer la fenêtre de sélection du mode

Langue de l'écran

L'écran de Kit s'affiche en coréen.

Paramètres et connexion

  • Les réglages utilisateur se modifient dans l'application web ou l'application Keural. L'écran de Kit suit ces réglages.
  • La connexion est gérée par votre service ; seules les informations de l'utilisateur connecté sont transmises à Kit.

Sur cette page