Import

import-chat.ts
import { NuiChat, NuiChatSession, nuiEventStream } from '@needless-ui/angular/chat';

NuiChat

La conversation et la zone de saisie, réunies.

Sélecteur
nui-chat
NuiChat: Propriétés
NomTypePar défautDescription
sessionInputNuiChatSessionLa conversation à afficher.
assistantInputstring'Assistant'Le nom de l’assistant, dans les titres qu’annoncent les lecteurs d’écran.
headingLevelInputnumber3Le niveau du titre de chaque message, que seuls les lecteurs d’écran perçoivent. Les titres des réponses descendent d’un niveau.
announceInput'reply' | 'notice' | 'off''reply'Ce qu’annoncent les lecteurs d’écran quand une réponse est complète : tout, un court avis, ou rien.
imagesInputbooleanfalseAffiche les images des réponses. Sinon, leur texte renvoie vers elles.
valueBidirectionnelstring''Le texte en cours de saisie.
placeholderInputstringL’indication dans le champ vide.
suggestionsInputstring[][]Des prompts à envoyer d’un clic, jusqu’au premier message.
sendOnInput'enter' | 'mod+enter''enter'Si l’envoi se fait avec Entrée, ou avec Ctrl ou ⌘ + Entrée.
disabledInputbooleanfalseEmpêche l’envoi depuis la zone de saisie.
attachInputbooleanfalseAccepte des fichiers : choisis, collés ou déposés.
acceptInputstring''Les types de fichiers acceptés, comme pour <input type="file">.
maxFilesInputnumber10Le nombre de fichiers qu’un message peut contenir.
maxSizeInputnumber20_000_000La taille maximale d’un fichier, en octets.
labelsInputNuiChatLabelsInputTous les textes que le chat affiche ou annonce, à traduire.
ratedOutput{ message, rating }Émet une réponse évaluée par l’utilisateur, avec son avis, ou null s’il le retire.
focusMéthode() => voidPlace le focus sur le champ de texte.
scrollToEndMéthode(behavior?) => voidFait défiler jusqu’au dernier message, et le suit.

NuiChatSession

La conversation, sans aucun DOM. Créez-la dans un composant, avec les options respond, messages et id.

NuiChatSession: Propriétés
NomTypePar défautDescription
respondPropriété(request) => NuiChatReplyVotre fonction : écrit la réponse à request.messages et s’arrête quand request.signal est interrompu.
messagesPropriétéSignal<NuiChatMessage[]>La conversation à l’écran.
allPropriétéSignal<NuiChatMessage[]>Tous les messages de toutes les versions, à enregistrer puis à repasser en messages.
busyPropriétéSignal<boolean>Indique si une réponse est en route.
sendMéthode(text, files?) => Promise<void>Envoie un message et demande une réponse.
stopMéthode() => voidArrête la réponse en gardant ce qu’elle a écrit.
retryMéthode(message?) => Promise<void>Redemande. La nouvelle réponse est une version à côté de l’ancienne.
editMéthode(message, text) => Promise<void>Envoie une nouvelle version d’un des messages de l’utilisateur.
versionsMéthode(message) => NuiChatMessage[]Toutes les versions d’un message, de la plus ancienne à la plus récente.
showMéthode(message) => voidBascule la conversation sur cette version.
rateMéthode(message, 'up' | 'down' | null) => voidEnregistre l’avis de l’utilisateur sur une réponse.
remove, load, clearMéthode(…) => voidSupprime un message et ce qui le suit, remplace la conversation, ou repart de zéro.

NuiChatMessage

Un message. Les messages de même parent sont des versions les uns des autres.

NuiChatMessage: Propriétés
NomTypePar défautDescription
id, parentPropriétéstring, string | nullLa clé du message, et celle du message qu’il suit.
rolePropriété'user' | 'assistant'Qui l’a écrit.
textPropriétéstringDu Markdown pour l’assistant, du texte brut pour l’utilisateur.
statusPropriété'pending' | 'streaming' | 'done' | 'stopped' | 'error'Où en est une réponse, de l’attente à la fin.
reasoningPropriétéstringCe que le modèle a pensé avant de répondre.
toolsPropriétéNuiChatTool[]Les outils appelés, avec leur état, leur entrée et leur sortie.
sourcesPropriété{ url, title? }[]Les pages utilisées.
attachmentsPropriétéNuiChatAttachment[]Les fichiers envoyés avec lui.
ratingPropriété'up' | 'down' | nullL’avis de l’utilisateur.
dataPropriétéunknownTout ce qu’il faut garder avec lui, comme le nom du modèle.

NuiChatToolTemplate

Dessine un appel d’outil, par exemple une carte météo. Le contexte contient l’appel et son message.

Sélecteur
ng-template[nuiChatTool]
NuiChatToolTemplate: Propriétés
NomTypePar défautDescription
nuiChatToolInputstringLe nom de l’outil. Sans nom, il dessine chaque appel qu’aucun autre template ne nomme.

NuiChatThread

La conversation seule, pour votre propre mise en page. Elle accepte les inputs de nui-chat qui concernent la conversation.

Sélecteur
nui-chat-thread

NuiChatComposer

La zone de saisie seule. Elle accepte les inputs de nui-chat qui concernent la saisie.

Sélecteur
nui-chat-composer

NuiServerEvent

Ce que nuiEventStream produit pour chaque événement. nuiTextStream lit du texte brut et nuiJsonStream des lignes JSON ; les trois prennent une réponse fetch.

NuiServerEvent: Propriétés
NomTypePar défautDescription
eventPropriétéstring'message'Le nom de l’événement.
dataPropriétéstringSes lignes de données, jointes.
idPropriétéstringLe dernier id envoyé par le flux.

NuiChatError

Levez-la depuis respond pour afficher son message. Toute autre erreur affiche un message générique, pour que rien d’interne ne fuite.