Import
import { NuiChat, NuiChatSession, nuiEventStream } from '@needless-ui/angular/chat';NuiChat
La conversation et la zone de saisie, réunies.
| Nom | Type | Par défaut | Description |
|---|---|---|---|
sessionInput | NuiChatSession | La conversation à afficher. | |
assistantInput | string | 'Assistant' | Le nom de l’assistant, dans les titres qu’annoncent les lecteurs d’écran. |
headingLevelInput | number | 3 | Le 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. |
imagesInput | boolean | false | Affiche les images des réponses. Sinon, leur texte renvoie vers elles. |
valueBidirectionnel | string | '' | Le texte en cours de saisie. |
placeholderInput | string | L’indication dans le champ vide. | |
suggestionsInput | string[] | [] | 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. |
disabledInput | boolean | false | Empêche l’envoi depuis la zone de saisie. |
attachInput | boolean | false | Accepte des fichiers : choisis, collés ou déposés. |
acceptInput | string | '' | Les types de fichiers acceptés, comme pour <input type="file">. |
maxFilesInput | number | 10 | Le nombre de fichiers qu’un message peut contenir. |
maxSizeInput | number | 20_000_000 | La taille maximale d’un fichier, en octets. |
labelsInput | NuiChatLabelsInput | Tous 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 | () => void | Place le focus sur le champ de texte. | |
scrollToEndMéthode | (behavior?) => void | Fait 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.
| Nom | Type | Par défaut | Description |
|---|---|---|---|
respondPropriété | (request) => NuiChatReply | Votre 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 | () => void | Arrê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) => void | Bascule la conversation sur cette version. | |
rateMéthode | (message, 'up' | 'down' | null) => void | Enregistre l’avis de l’utilisateur sur une réponse. | |
remove, load, clearMéthode | (…) => void | Supprime 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.
| Nom | Type | Par défaut | Description |
|---|---|---|---|
id, parentPropriété | string, string | null | La clé du message, et celle du message qu’il suit. | |
rolePropriété | 'user' | 'assistant' | Qui l’a écrit. | |
textPropriété | string | Du 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é | string | Ce 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' | null | L’avis de l’utilisateur. | |
dataPropriété | unknown | Tout 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.
| Nom | Type | Par défaut | Description |
|---|---|---|---|
nuiChatToolInput | string | Le 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.
NuiChatComposer
La zone de saisie seule. Elle accepte les inputs de nui-chat qui concernent la saisie.
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.
| Nom | Type | Par défaut | Description |
|---|---|---|---|
eventPropriété | string | 'message' | Le nom de l’événement. |
dataPropriété | string | Ses lignes de données, jointes. | |
idPropriété | string | Le 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.