Importação

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

NuiChat

A conversa e a caixa de texto, juntas.

Seletor
nui-chat
NuiChat: Propriedades
NomeTipoPadrãoDescrição
sessionInputNuiChatSessionA conversa a ser mostrada.
assistantInputstring'Assistant'O nome do assistente, nos títulos que os leitores de tela anunciam.
headingLevelInputnumber3O nível do título de cada mensagem, que só os leitores de tela percebem. Os títulos nas respostas ficam um nível abaixo.
announceInput'reply' | 'notice' | 'off''reply'O que os leitores de tela anunciam quando uma resposta fica completa: tudo, um aviso curto ou nada.
imagesInputbooleanfalseMostra as imagens nas respostas. Senão, o texto delas vira um link para a imagem.
valueBidirecionalstring''O texto sendo escrito.
placeholderInputstringO texto mostrado no campo vazio.
suggestionsInputstring[][]Prompts para enviar com um clique, até a primeira mensagem.
sendOnInput'enter' | 'mod+enter''enter'Se o Enter envia, ou Ctrl ou ⌘ + Enter.
disabledInputbooleanfalseImpede o envio pela caixa de texto.
attachInputbooleanfalseAceita arquivos: escolhidos, colados ou arrastados.
acceptInputstring''Os tipos de arquivo aceitos, como em <input type="file">.
maxFilesInputnumber10Quantos arquivos uma mensagem pode levar.
maxSizeInputnumber20_000_000O tamanho máximo de arquivo, em bytes.
labelsInputNuiChatLabelsInputTodo texto que o chat mostra ou anuncia, para traduzir.
ratedOutput{ message, rating }Emite uma resposta que o usuário avaliou, com a avaliação, ou null quando ela é desfeita.
focusMétodo() => voidMove o foco para o campo de texto.
scrollToEndMétodo(behavior?) => voidRola até a última mensagem e a acompanha.

NuiChatSession

A conversa, sem nenhum DOM. Crie-a em um componente, com as opções respond, messages e id.

NuiChatSession: Propriedades
NomeTipoPadrãoDescrição
respondPropriedade(request) => NuiChatReplyA sua função: escreve a resposta para request.messages e se interrompe quando request.signal é abortado.
messagesPropriedadeSignal<NuiChatMessage[]>A conversa na tela.
allPropriedadeSignal<NuiChatMessage[]>Todas as mensagens de todas as versões, para salvar e passar de volta como messages.
busyPropriedadeSignal<boolean>Indica se há uma resposta a caminho.
sendMétodo(text, files?) => Promise<void>Envia uma mensagem e pede uma resposta.
stopMétodo() => voidInterrompe a resposta, mantendo o que ela já escreveu.
retryMétodo(message?) => Promise<void>Pergunta de novo. A nova resposta é uma versão ao lado da antiga.
editMétodo(message, text) => Promise<void>Envia uma nova versão de uma das mensagens do usuário.
versionsMétodo(message) => NuiChatMessage[]Todas as versões de uma mensagem, da mais antiga para a mais nova.
showMétodo(message) => voidMuda a conversa para esta versão.
rateMétodo(message, 'up' | 'down' | null) => voidRegistra a avaliação do usuário sobre uma resposta.
remove, load, clearMétodo(…) => voidRemove uma mensagem e o que vem depois, substitui a conversa ou recomeça do zero.

NuiChatMessage

Uma mensagem. Mensagens com o mesmo parent são versões umas das outras.

NuiChatMessage: Propriedades
NomeTipoPadrãoDescrição
id, parentPropriedadestring, string | nullA chave da mensagem, e a da mensagem que ela segue.
rolePropriedade'user' | 'assistant'Quem a escreveu.
textPropriedadestringMarkdown do assistente, texto simples do usuário.
statusPropriedade'pending' | 'streaming' | 'done' | 'stopped' | 'error'Em que ponto está uma resposta, da espera ao fim.
reasoningPropriedadestringO que o modelo pensou antes de responder.
toolsPropriedadeNuiChatTool[]As ferramentas que ele chamou, com estado, entrada e saída.
sourcesPropriedade{ url, title? }[]As páginas que ele usou.
attachmentsPropriedadeNuiChatAttachment[]Os arquivos enviados com ela.
ratingPropriedade'up' | 'down' | nullA avaliação do usuário.
dataPropriedadeunknownQualquer outra coisa para guardar com ela, como o nome do modelo.

NuiChatToolTemplate

Desenha uma chamada de ferramenta, como um card de clima. O contexto contém a chamada e a mensagem dela.

Seletor
ng-template[nuiChatTool]
NuiChatToolTemplate: Propriedades
NomeTipoPadrãoDescrição
nuiChatToolInputstringO nome da ferramenta. Sem nome, desenha toda chamada que nenhum outro template nomeia.

NuiChatThread

A conversa sozinha, para um layout seu. Ela recebe os inputs de nui-chat que tratam da conversa.

Seletor
nui-chat-thread

NuiChatComposer

A caixa de texto sozinha. Ela recebe os inputs de nui-chat que tratam da escrita.

Seletor
nui-chat-composer

NuiServerEvent

O que nuiEventStream produz para cada evento. nuiTextStream lê texto simples e nuiJsonStream, linhas JSON; os três recebem uma resposta de fetch.

NuiServerEvent: Propriedades
NomeTipoPadrãoDescrição
eventPropriedadestring'message'O nome do evento.
dataPropriedadestringAs linhas de dados dele, unidas.
idPropriedadestringO último id que o stream enviou.

NuiChatError

Lance-o em respond para mostrar a mensagem dele. Qualquer outro erro mostra uma mensagem genérica, para que nada interno vaze.