聊天元件涵蓋使用者與模型之間的一切。用一個 respond 函式建立 NuiChatSession,其餘交給 <nui-chat>:它以 Markdown 串流顯示回覆,自動往下跟隨,直到使用者往上捲動為止;回覆送達期間,傳送按鈕會變成停止按鈕。

respond 可以傳回文字、Promise、async function* 或 Observable,因此任何 API 都能接上。除了文字,回覆還能帶有模型的推理過程、工具呼叫(由你的範本繪製),以及它引用的來源。nuiEventStream 會讀取大多數模型 API 以串流傳送的伺服器傳送事件。

什麼都不會遺失:重試的回覆或編輯過的問題會成為舊版本旁的新版本,對話會保留每一個分支。螢幕閱讀器會等每則回覆完成後才朗讀,而不是逐字朗讀。

助理

點擊建議即可開始對話。回覆以 Markdown 串流顯示;你可以停止、重試、評分回覆,或編輯自己的問題。attach 會接收選取、貼上或拖放的檔案。

推理、工具與來源

增量資料會把模型的推理過程、工具呼叫和來源加入回覆。nuiChatTool 把天氣工具繪製成卡片;其他工具則連同輸入和輸出收合起來。

從伺服器串流

nuiEventStream 會讀取 OpenAI 風格的事件串流,NuiChatError 會顯示它的訊息。all() 會儲存整段對話,連同所有版本。