Импорт
import { NuiChat, NuiChatSession, nuiEventStream } from '@needless-ui/angular/chat';NuiChat
Диалог и поле ввода вместе.
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
sessionInput | NuiChatSession | Отображаемый диалог. | |
assistantInput | string | 'Assistant' | Имя ассистента в заголовках для скринридеров. |
headingLevelInput | number | 3 | Уровень заголовка сообщения (его видят только скринридеры). Заголовки в ответах — на уровень глубже. |
announceInput | 'reply' | 'notice' | 'off' | 'reply' | Что озвучат скринридеры, когда ответ готов: весь ответ, короткое уведомление или ничего. |
imagesInput | boolean | false | Показывает изображения в ответах. Иначе — ссылки с их текстом. |
valueДвусторонний | string | '' | Набираемый текст. |
placeholderInput | string | Текст в пустом поле. | |
suggestionsInput | string[] | [] | Промпты для отправки одним кликом — до первого сообщения. |
sendOnInput | 'enter' | 'mod+enter' | 'enter' | Отправка по Enter или по Ctrl либо ⌘ + Enter. |
disabledInput | boolean | false | Запрещает отправку. |
attachInput | boolean | false | Принимает файлы: выбранные, вставленные или перетащенные. |
acceptInput | string | '' | Допустимые типы файлов, как у <input type="file">. |
maxFilesInput | number | 10 | Сколько файлов можно приложить к сообщению. |
maxSizeInput | number | 20_000_000 | Максимальный размер файла в байтах. |
labelsInput | NuiChatLabelsInput | Все показываемые и озвучиваемые тексты — для перевода. | |
ratedOutput | { message, rating } | Передаёт оценённый ответ с оценкой или null, если оценку отменили. | |
focusМетод | () => void | Переводит фокус на текстовое поле. | |
scrollToEndМетод | (behavior?) => void | Прокручивает к последнему сообщению и следует за ним. |
NuiChatSession
Диалог без DOM. Создайте его в компоненте с параметрами respond, messages и id.
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
respondСвойство | (request) => NuiChatReply | Ваша функция: пишет ответ на request.messages и останавливается при отмене request.signal. | |
messagesСвойство | Signal<NuiChatMessage[]> | Диалог на экране. | |
allСвойство | Signal<NuiChatMessage[]> | Все сообщения всех версий — чтобы сохранить и передать обратно в messages. | |
busyСвойство | Signal<boolean> | Идёт ли ответ. | |
sendМетод | (text, files?) => Promise<void> | Отправляет сообщение и запрашивает ответ. | |
stopМетод | () => void | Останавливает ответ, сохраняя уже написанное. | |
retryМетод | (message?) => Promise<void> | Запрашивает ответ заново. Новый ответ — версия рядом со старым. | |
editМетод | (message, text) => Promise<void> | Отправляет новую версию одного из сообщений пользователя. | |
versionsМетод | (message) => NuiChatMessage[] | Все версии сообщения, начиная с самой старой. | |
showМетод | (message) => void | Переключает диалог на эту версию. | |
rateМетод | (message, 'up' | 'down' | null) => void | Сохраняет оценку ответа. | |
remove, load, clearМетод | (…) => void | Удаляет сообщение и всё после него, заменяет диалог или начинает заново. |
NuiChatMessage
Одно сообщение. Сообщения с одинаковым parent — версии друг друга.
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
id, parentСвойство | string, string | null | Ключ сообщения и того, за которым оно идёт. | |
roleСвойство | 'user' | 'assistant' | Кто его написал. | |
textСвойство | string | Markdown от ассистента, обычный текст от пользователя. | |
statusСвойство | 'pending' | 'streaming' | 'done' | 'stopped' | 'error' | Стадия ответа: от ожидания до готовности. | |
reasoningСвойство | string | Рассуждения модели перед ответом. | |
toolsСвойство | NuiChatTool[] | Вызванные инструменты с состоянием, входными и выходными данными. | |
sourcesСвойство | { url, title? }[] | Использованные страницы. | |
attachmentsСвойство | NuiChatAttachment[] | Отправленные с ним файлы. | |
ratingСвойство | 'up' | 'down' | null | Оценка пользователя. | |
dataСвойство | unknown | Любые другие данные, например название модели. |
NuiChatToolTemplate
Рисует вызов инструмента, например карточку погоды. В контексте — вызов и его сообщение.
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
nuiChatToolInput | string | Имя инструмента. Без него шаблон рисует все вызовы, не указанные в других шаблонах. |
NuiChatThread
Только диалог — для своей раскладки. Принимает входные свойства nui-chat, относящиеся к диалогу.
NuiChatComposer
Только поле ввода. Принимает входные свойства nui-chat, относящиеся к вводу.
NuiServerEvent
Что nuiEventStream выдаёт на каждое событие. nuiTextStream читает обычный текст, а nuiJsonStream — строки JSON; все три принимают ответ fetch.
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
eventСвойство | string | 'message' | Имя события. |
dataСвойство | string | Склеенные строки данных. | |
idСвойство | string | Последний id, присланный потоком. |
NuiChatError
Выбросьте её в respond, чтобы показать её сообщение. При других ошибках сообщение общее: внутренние детали не утекают.