Importación

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

NuiChat

La conversación y el cuadro de texto, juntos.

Selector
nui-chat
NuiChat: Propiedades
NombreTipoPredeterminadoDescripción
sessionInputNuiChatSessionLa conversación que se muestra.
assistantInputstring'Assistant'El nombre del asistente, en los encabezados que anuncian los lectores de pantalla.
headingLevelInputnumber3El nivel del encabezado de cada mensaje, que solo perciben los lectores de pantalla. Los encabezados de las respuestas bajan un nivel más.
announceInput'reply' | 'notice' | 'off''reply'Lo que anuncian los lectores de pantalla cuando una respuesta está completa: todo, un aviso breve o nada.
imagesInputbooleanfalseMuestra las imágenes de las respuestas. Si no, su texto enlaza a ellas.
valueBidireccionalstring''El texto que se está escribiendo.
placeholderInputstringEl texto que se muestra en el campo vacío.
suggestionsInputstring[][]Prompts que se envían con un clic, hasta el primer mensaje.
sendOnInput'enter' | 'mod+enter''enter'Si se envía con Intro, o con Ctrl o ⌘ + Intro.
disabledInputbooleanfalseImpide enviar desde el cuadro de texto.
attachInputbooleanfalseAcepta archivos: elegidos, pegados o arrastrados.
acceptInputstring''Los tipos de archivo que se aceptan, como en <input type="file">.
maxFilesInputnumber10Cuántos archivos puede llevar un mensaje.
maxSizeInputnumber20_000_000El tamaño máximo de archivo, en bytes.
labelsInputNuiChatLabelsInputTodos los textos que el chat muestra o anuncia, para traducirlos.
ratedOutput{ message, rating }Emite una respuesta que el usuario valoró, con la valoración, o null si la retira.
focusMétodo() => voidPone el foco en el campo de texto.
scrollToEndMétodo(behavior?) => voidSe desplaza hasta el último mensaje y lo sigue.

NuiChatSession

La conversación, sin nada de DOM. Créala en un componente con las opciones respond, id y messages.

NuiChatSession: Propiedades
NombreTipoPredeterminadoDescripción
respondPropiedad(request) => NuiChatReplyTu función: escribe la respuesta a request.messages y se detiene cuando se aborta request.signal.
messagesPropiedadSignal<NuiChatMessage[]>La conversación en pantalla.
allPropiedadSignal<NuiChatMessage[]>Todos los mensajes de todas las versiones, para guardarlos y volver a pasarlos como messages.
busyPropiedadSignal<boolean>Indica si hay una respuesta en camino.
sendMétodo(text, files?) => Promise<void>Envía un mensaje y pide una respuesta.
stopMétodo() => voidDetiene la respuesta y conserva lo que ya escribió.
retryMétodo(message?) => Promise<void>Vuelve a preguntar. La nueva respuesta es una versión junto a la anterior.
editMétodo(message, text) => Promise<void>Envía una nueva versión de uno de los mensajes del usuario.
versionsMétodo(message) => NuiChatMessage[]Todas las versiones de un mensaje, de la más antigua a la más nueva.
showMétodo(message) => voidCambia la conversación a esta versión.
rateMétodo(message, 'up' | 'down' | null) => voidRegistra la valoración del usuario sobre una respuesta.
remove, load, clearMétodo(…) => voidQuita un mensaje y lo que le sigue, reemplaza la conversación o empieza de cero.

NuiChatMessage

Un mensaje. Los mensajes con el mismo parent son versiones entre sí.

NuiChatMessage: Propiedades
NombreTipoPredeterminadoDescripción
id, parentPropiedadstring, string | nullLa clave del mensaje y la del mensaje al que sigue.
rolePropiedad'user' | 'assistant'Quién lo escribió.
textPropiedadstringMarkdown del asistente, texto plano del usuario.
statusPropiedad'pending' | 'streaming' | 'done' | 'stopped' | 'error'En qué punto está una respuesta, de la espera al final.
reasoningPropiedadstringLo que pensó el modelo antes de responder.
toolsPropiedadNuiChatTool[]Las herramientas que llamó, con su estado, entrada y salida.
sourcesPropiedad{ url, title? }[]Las páginas que usó.
attachmentsPropiedadNuiChatAttachment[]Los archivos enviados con él.
ratingPropiedad'up' | 'down' | nullLa valoración del usuario.
dataPropiedadunknownCualquier otra cosa que guardar con él, como el nombre del modelo.

NuiChatToolTemplate

Dibuja una llamada a herramienta, como una tarjeta del clima. El contexto contiene la llamada y su mensaje.

Selector
ng-template[nuiChatTool]
NuiChatToolTemplate: Propiedades
NombreTipoPredeterminadoDescripción
nuiChatToolInputstringEl nombre de la herramienta. Sin él, dibuja todas las llamadas que ninguna otra plantilla nombra.

NuiChatThread

La conversación por separado, para tu propio diseño. Acepta los inputs de nui-chat relativos a la conversación.

Selector
nui-chat-thread

NuiChatComposer

El cuadro de texto por separado. Acepta los inputs de nui-chat relativos a la escritura.

Selector
nui-chat-composer

NuiServerEvent

Lo que nuiEventStream produce por cada evento. nuiTextStream lee texto plano y nuiJsonStream, líneas JSON; los tres reciben una respuesta de fetch.

NuiServerEvent: Propiedades
NombreTipoPredeterminadoDescripción
eventPropiedadstring'message'El nombre del evento.
dataPropiedadstringSus líneas de datos, unidas.
idPropiedadstringEl último id que envió el flujo.

NuiChatError

Lánzalo desde respond para mostrar su mensaje. Cualquier otro error muestra uno genérico, para que no se filtre nada interno.