インポート
import { NuiChat, NuiChatSession, nuiEventStream } from '@needless-ui/angular/chat';NuiChat
会話と入力欄をひとまとめにしたもの。
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
session入力 | NuiChatSession | 表示する会話。 | |
assistant入力 | string | 'Assistant' | アシスタントの名前。スクリーンリーダーが読み上げる見出しに使われます。 |
headingLevel入力 | number | 3 | スクリーンリーダーにだけ表示される、各メッセージの見出しのレベル。応答内の見出しはその1つ下になります。 |
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 | 1つのメッセージに添付できるファイルの数。 |
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
1つのメッセージ。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
天気のカードなど、ツール呼び出しを描画します。コンテキストには呼び出しとそのメッセージが入っています。
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
nuiChatTool入力 | string | ツールの名前。省略すると、ほかのどのテンプレートも指定していない呼び出しをすべて描画します。 |
NuiChatThread
独自のレイアウト向けの、会話部分だけのコンポーネント。nui-chat の入力のうち、会話に関わるものを受け取ります。
NuiChatComposer
入力欄だけのコンポーネント。nui-chat の入力のうち、メッセージの作成に関わるものを受け取ります。
NuiServerEvent
nuiEventStream がイベントごとに返す値。nuiTextStream はプレーンテキストを、nuiJsonStream は JSON Lines を読み取ります。3つとも fetch のレスポンスを受け取ります。
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
eventプロパティ | string | 'message' | イベントの名前。 |
dataプロパティ | string | data 行を連結したもの。 | |
idプロパティ | string | ストリームが最後に送った id。 |
NuiChatError
respond からスローすると、そのメッセージが表示されます。ほかのエラーでは汎用のメッセージが表示されるため、内部の情報は漏れません。