匯入
import { NuiChat, NuiChatSession, nuiEventStream } from '@needless-ui/angular/chat';NuiChat
對話和輸入框,合而為一。
| 名稱 | 型別 | 預設值 | 說明 |
|---|---|---|---|
session輸入 | NuiChatSession | 要顯示的對話。 | |
assistant輸入 | string | 'Assistant' | 助理的名稱,用於螢幕閱讀器朗讀的標題中。 |
headingLevel輸入 | number | 3 | 每則訊息標題的層級,這些標題只有螢幕閱讀器看得到。回覆中的標題再低一層。 |
announce輸入 | 'reply' | 'notice' | 'off' | 'reply' | 回覆完成時螢幕閱讀器朗讀的內容:全部、簡短通知或不朗讀。 |
images輸入 | boolean | false | 顯示回覆中的圖片;否則以圖片的文字作為指向圖片的連結。 |
value雙向繫結 | string | '' | 正在輸入的文字。 |
placeholder輸入 | string | 輸入框為空時顯示的提示。 | |
suggestions輸入 | string[] | [] | 點一下就能送出的提示詞,會顯示到第一則訊息送出為止。 |
sendOn輸入 | 'enter' | 'mod+enter' | 'enter' | 按 Enter 送出,還是按 Ctrl 或 ⌘ + Enter 送出。 |
disabled輸入 | boolean | false | 禁止輸入框送出訊息。 |
attach輸入 | boolean | false | 接收檔案:選取、貼上或拖放皆可。 |
accept輸入 | string | '' | 可接收的檔案類型,寫法同 <input type="file">。 |
maxFiles輸入 | number | 10 | 一則訊息最多可附加的檔案數。 |
maxSize輸入 | number | 20_000_000 | 可接收的最大檔案大小,單位為位元組。 |
labels輸入 | NuiChatLabelsInput | 聊天元件顯示或朗讀的所有文字,供翻譯使用。 | |
rated輸出 | { 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 | 訊息的 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 包含該次呼叫和它所屬的訊息。
| 名稱 | 型別 | 預設值 | 說明 |
|---|---|---|---|
nuiChatTool輸入 | string | 工具名稱。未指定時,會繪製其他範本都未指定的所有呼叫。 |
NuiChatThread
單獨的對話部分,用於你自己的版面。它接收 nui-chat 中與對話有關的輸入屬性。
NuiChatComposer
單獨的輸入框。它接收 nui-chat 中與撰寫訊息有關的輸入屬性。
NuiServerEvent
nuiEventStream 為每個事件產出的物件。nuiTextStream 讀取純文字,nuiJsonStream 讀取 JSON Lines;三者都接收 fetch 的回應。
| 名稱 | 型別 | 預設值 | 說明 |
|---|---|---|---|
event屬性 | string | 'message' | 事件名稱。 |
data屬性 | string | 串接後的 data 行。 | |
id屬性 | string | 串流最後傳送的 id。 |
NuiChatError
從 respond 擲出它,就會顯示它的訊息。其他錯誤只會顯示一般訊息,因此不會洩漏內部資訊。