匯入

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

NuiChat

對話和輸入框,合而為一。

選擇器
nui-chat
NuiChat: 屬性
名稱型別預設值說明
session輸入NuiChatSession要顯示的對話。
assistant輸入string'Assistant'助理的名稱,用於螢幕閱讀器朗讀的標題中。
headingLevel輸入number3每則訊息標題的層級,這些標題只有螢幕閱讀器看得到。回覆中的標題再低一層。
announce輸入'reply' | 'notice' | 'off''reply'回覆完成時螢幕閱讀器朗讀的內容:全部、簡短通知或不朗讀。
images輸入booleanfalse顯示回覆中的圖片;否則以圖片的文字作為指向圖片的連結。
value雙向繫結string''正在輸入的文字。
placeholder輸入string輸入框為空時顯示的提示。
suggestions輸入string[][]點一下就能送出的提示詞,會顯示到第一則訊息送出為止。
sendOn輸入'enter' | 'mod+enter''enter'按 Enter 送出,還是按 Ctrl 或 ⌘ + Enter 送出。
disabled輸入booleanfalse禁止輸入框送出訊息。
attach輸入booleanfalse接收檔案:選取、貼上或拖放皆可。
accept輸入string''可接收的檔案類型,寫法同 <input type="file">。
maxFiles輸入number10一則訊息最多可附加的檔案數。
maxSize輸入number20_000_000可接收的最大檔案大小,單位為位元組。
labels輸入NuiChatLabelsInput聊天元件顯示或朗讀的所有文字,供翻譯使用。
rated輸出{ message, rating }發出使用者評分的回覆及其評分;收回評分時為 null。
focus方法() => void讓文字欄位取得焦點。
scrollToEnd方法(behavior?) => void捲動到最新訊息,並持續跟隨。

NuiChatSession

不含任何 DOM 的對話本身。在元件中以 respond、messages 和 id 選項建立它。

NuiChatSession: 屬性
名稱型別預設值說明
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 相同的訊息互為版本。

NuiChatMessage: 屬性
名稱型別預設值說明
id, parent屬性string, string | null訊息的 key,以及它所接續的那則訊息。
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

繪製工具呼叫,例如一張天氣卡片。其 context 包含該次呼叫和它所屬的訊息。

選擇器
ng-template[nuiChatTool]
NuiChatToolTemplate: 屬性
名稱型別預設值說明
nuiChatTool輸入string工具名稱。未指定時,會繪製其他範本都未指定的所有呼叫。

NuiChatThread

單獨的對話部分,用於你自己的版面。它接收 nui-chat 中與對話有關的輸入屬性。

選擇器
nui-chat-thread

NuiChatComposer

單獨的輸入框。它接收 nui-chat 中與撰寫訊息有關的輸入屬性。

選擇器
nui-chat-composer

NuiServerEvent

nuiEventStream 為每個事件產出的物件。nuiTextStream 讀取純文字,nuiJsonStream 讀取 JSON Lines;三者都接收 fetch 的回應。

NuiServerEvent: 屬性
名稱型別預設值說明
event屬性string'message'事件名稱。
data屬性string串接後的 data 行。
id屬性string串流最後傳送的 id。

NuiChatError

從 respond 擲出它,就會顯示它的訊息。其他錯誤只會顯示一般訊息,因此不會洩漏內部資訊。